-- 作者:tanyongde
-- 发布时间:2016/9/12 18:39:30
-- 图表交易系统改为后台交易系统
救助,把下面图表交易系统改为后台交易系统
//参数: //N: 1 100 14 DMI的N值 //M: 1 30 6 ADX均线周期 ,DMI的M值 //AVGLEN: 10 50 30 最高最低价的EMA周期数 //ENTRYBAR: 1 5 2 保持BUYSETUP触发BAR数 input:n(14),m(6),avglen(30),entrybar(2); TR1:=SUM(MAX(MAX(HIGH-LOW,ABS(HIGH-REF(CLOSE,1))),ABS(LOW-REF(CLOSE,1))),N);//最高价与最低价做差,最高价与前一周期收盘价做差,最低价与前一周期收盘价作差,在上述三个数据中取绝对值最大者,对该最大值做N周期累加求和。。 HD:=HIGH-REF(HIGH,1);//最高价与前一周期最高价做差 LD:=REF(LOW,1)-LOW;//前一周期最低价与最低价做差 DMP:=SUM(IFELSE(HD>0 and HD>LD,HD,0),N);//如果HD>0并且HD>LD,取HD否则取0,对取值做N周期累加求和。 DMM:=SUM(IFELSE(LD>0 and LD>HD,LD,0),N);//如果LD>0并且LD>HD,取LD否则取0,对取值做N周期累加求和。 PDI:=DMP*100/TR1; MDI:=DMM*100/TR1; ADX:=MA(ABS(MDI-PDI)/(MDI+PDI)*100,M);//MDI与PDI差的绝对值与(MDI+PDI)*100做比值,取该比值的M个周期均值。 ADXR:=(ADX+REF(ADX,M))/2; UPPERMA:EMA(HIGH,AVGLEN);//计算30根K线最高价的EMA LOWERMA:EMA(LOW,AVGLEN);//计算30根K线最低价的EMA CHANSPREAD:=(UPPERMA-LOWERMA)/2;//通过EMA计算出噪音通道宽度 BUYSETUP:=C>UPPERMA and ADX>REF(ADX,1);//当ADX向上且当前价大于30根K线最高价的EMA满足买入准备条件 BUYTARGET:C+CHANSPREAD;//满足买入准备条件时,用前BAR价格计算出多头触发价 MROBS:=BARSLAST(BUYSETUP);//上次满足买入准备条件距离当前BAR的数目 m1:=MAX(OPEN,REF(BUYTARGET,1)); if MROBS<ENTRYBAr and holding=0 and BARPOS>100 and H>=BUYTARGET and VOL>0 then buy(holding=0,1,limitr,m1),IGNORECHECKPRICE;//系统入场 //SETSIGPRICETYPE(BK,MAX(OPEN,REF(BUYTARGET,1))); m2:=MIN(OPEN,REF(UPPERMA,1)-mindiff); if holding>0 and enterbars>0 and VOL>0 and LOW<=UPPERMA-mindiff then sell(1,0,limitr,m2),IGNORECHECKPRICE;//系统出场 //SETSIGPRICETYPE(SP,MIN(OPEN,REF(UPPERMA,1)-mindiff)); SELLSETUP:=C<LOWERMA and ADX>REF(ADX,1);//当ADX向上且当前价下于30根K线最低价的EMA满足卖出准备条件 SELLTARGET:=C-CHANSPREAD;//满足卖出准备条件时,用前BAR价格计算出空头触发价 MROSS:=BARSLAST(SELLSETUP);//上次满足卖出准备条件距离当前BAR的数目 m3:=MIN(OPEN,REF(SELLTARGET,1)); if MROSS<=ENTRYBAR and holding=0 and BARPOS>100 and LOW<=SELLTARGET and VOL>0 then buyshort(holding=0,1,limitr,m3),IGNORECHECKPRICE; //SETSIGPRICETYPE(SK,MIN(OPEN,REF(SELLTARGET,1))); m4:=MAX(OPEN,REF(LOWERMA,1)+mindiff); if holding<0 and enterbars>0 and VOL>0 and HIGH>=LOWERMA+mindiff then sellshort(1,0,limitr,m4),IGNORECHECKPRICE; //SETSIGPRICETYPE(BP,MAX(OPEN,REF(LOWERMA,1)+mindiff));
|
|
-- 作者:jinzhe
-- 发布时间:2016/9/13 9:05:28
--
input:n(14),m(6),avglen(30),entrybar(2); TR1:=SUM(MAX(MAX(HIGH-LOW,ABS(HIGH-REF(CLOSE,1))),ABS(LOW-REF(CLOSE,1))),N);//最高价与最低价做差,最高价与前一周期收盘价做差,最低价与前一周期收盘价作差,在上述三个数据中取绝对值最大者,对该最大值做N周期累加求和。。 HD:=HIGH-REF(HIGH,1);//最高价与前一周期最高价做差 LD:=REF(LOW,1)-LOW;//前一周期最低价与最低价做差 DMP:=SUM(IFELSE(HD>0 and HD>LD,HD,0),N);//如果HD>0并且HD>LD,取HD否则取0,对取值做N周期累加求和。 DMM:=SUM(IFELSE(LD>0 and LD>HD,LD,0),N);//如果LD>0并且LD>HD,取LD否则取0,对取值做N周期累加求和。 PDI:=DMP*100/TR1; MDI:=DMM*100/TR1; ADX:=MA(ABS(MDI-PDI)/(MDI+PDI)*100,M);//MDI与PDI差的绝对值与(MDI+PDI)*100做比值,取该比值的M个周期均值。 ADXR:=(ADX+REF(ADX,M))/2; UPPERMA:EMA(HIGH,AVGLEN);//计算30根K线最高价的EMA LOWERMA:EMA(LOW,AVGLEN);//计算30根K线最低价的EMA CHANSPREAD:=(UPPERMA-LOWERMA)/2;//通过EMA计算出噪音通道宽度 BUYSETUP:=C>UPPERMA and ADX>REF(ADX,1);//当ADX向上且当前价大于30根K线最高价的EMA满足买入准备条件 BUYTARGET:C+CHANSPREAD;//满足买入准备条件时,用前BAR价格计算出多头触发价 MROBS:=BARSLAST(BUYSETUP);//上次满足买入准备条件距离当前BAR的数目
m1:=MAX(OPEN,REF(BUYTARGET,1)); if MROBS<ENTRYBAr and tholding=0 and BARPOS>100 and H>=BUYTARGET and VOL>0 then tbuy(1,1,lmt,m1);//系统入场 //SETSIGPRICETYPE(BK,MAX(OPEN,REF(BUYTARGET,1))); m2:=MIN(OPEN,REF(UPPERMA,1)-mindiff); if tholding >0 and tenterbars>0 and VOL>0 and LOW<=UPPERMA-mindiff then tsell(1,0,lmt,m2);//系统出场 //SETSIGPRICETYPE(SP,MIN(OPEN,REF(UPPERMA,1)-mindiff));
SELLSETUP:=C<LOWERMA and ADX>REF(ADX,1);//当ADX向上且当前价下于30根K线最低价的EMA满足卖出准备条件 SELLTARGET:=C-CHANSPREAD;//满足卖出准备条件时,用前BAR价格计算出空头触发价 MROSS:=BARSLAST(SELLSETUP);//上次满足卖出准备条件距离当前BAR的数目 m3:=MIN(OPEN,REF(SELLTARGET,1)); if MROSS<=ENTRYBAR and tholding =0 and BARPOS>100 and LOW<=SELLTARGET and VOL>0 then tbuyshort(1,1,lmt,m3); //SETSIGPRICETYPE(SK,MIN(OPEN,REF(SELLTARGET,1))); m4:=MAX(OPEN,REF(LOWERMA,1)+mindiff); if tholding <0 and tenterbars>0 and VOL>0 and HIGH>=LOWERMA+mindiff then tsellshort(1,0,lmt,m4); //SETSIGPRICETYPE(BP,MAX(OPEN,REF(LOWERMA,1)+mindiff));
|