[求助]加减仓及止损问题 (文华财经WH8赢智V8.2)

投资者咨询:[求助]加减仓及止损问题 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-5-17 15:15
  你好,请教2个问题:
1.(以多为例)开仓后上涨1.5ATR,加仓。每满足一次,不断加仓;
2.止损,加仓后下跌1.5ATR,仅仅止损加仓的仓位,原有仓位不动。
周K线上运行

我写的程序有问题,加仓只加了一次,止损的时候全部仓位都卖了,请老师帮我改一下。

EMA5:EMA(CLOSE,5);  //定义5周期EMA
EMA10:EMA(CLOSE,10);//定义10周期EMA
#IMPORT[DAY,1,ATR] AS VAR
ATRK:VAR.ATR;       //周K线上调用日K线ATR,记为ATRK

K:=MONEY*0.02/(1.5*ATRK*UNIT);//开仓手数,可用资金2%风险暴露
KZ:=MONEYTOT/(1.5*ATRK*UNIT);//100%时总仓位
ZC:=BKVOL<KZ*0.7 || SKVOL<KZ*0.7;//仓位<70%

IF EMA5<=EMA10 THEN          
BEGIN
   IF EMA10-EMA5<=0.5*ATRK&&CLOSE-EMA10>=0.2*ATRK THEN  //预判金叉,多开条件
   A:=1;
   ELSE
   A:=0;
END
ELSE
BEGIN
   IF EMA5-EMA10<=0.5*ATRK&&EMA10-CLOSE>=0.2*ATRK THEN  //预判死叉,空开条件
   A:=2;
   ELSE
   A:=0;
END

A=1,BPK(K);         //如果返回1,多开
A=2,SPK(K);         //如果返回2,空开
CLOSE>=BKPRICE+REF(ATRK,BARSBK)*1.5&&ZC,BK(K);//上涨1.5ATRK,多加仓
CLOSE<=SKPRICE-REF(ATRK,BARSSK)*1.5&&ZC,SK(K);//下跌1.5ATRK,空加仓

CLOSE<=BKPRICE-REF(ATRK,BARSBK)*1.5&&BKVOL>0,SP(BKVOL);//多开后下跌1.5ATRK,止损
CLOSE>=SKPRICE+REF(ATRK,BARSSK)*1.5&&SKVOL>0,BP(SKVOL);//空开后上涨1.5ATRK,止损

(INITMONEY-MONEYTOT)/INITMONEY>0.2,CLOSEOUT;//总回测>20%,全部平仓
MULTSIG(0,0,60,10);

技术人员回复
日期:2018-5-17 15:42

 多次加仓可以开仓语句需要多写几行

 

源码中止损语句SP平的是BKVOL修改参考:

 

 

EMA5:EMA(CLOSE,5);  //定义5周期EMA
EMA10:EMA(CLOSE,10);//定义10周期EMA
#IMPORT[DAY,1,ATR] AS VAR
ATRK:VAR.ATR;       //周K线上调用日K线ATR,记为ATRK


K:=MONEY*0.02/(1.5*ATRK*UNIT);//开仓手数,可用资金2%风险暴露
KZ:=MONEYTOT/(1.5*ATRK*UNIT);//100%时总仓位
ZC:=BKVOL<KZ*0.7 || SKVOL<KZ*0.7;//仓位<70%


IF EMA5<=EMA10 THEN         
BEGIN
   IF EMA10-EMA5<=0.5*ATRK&&CLOSE-EMA10>=0.2*ATRK THEN  //预判金叉,多开条件
   A:=1;
   ELSE
   A:=0;
END
ELSE
BEGIN
   IF EMA5-EMA10<=0.5*ATRK&&EMA10-CLOSE>=0.2*ATRK THEN  //预判死叉,空开条件
   A:=2;
   ELSE
   A:=0;
END


A=1,BPK(K);         //如果返回1,多开
A=2,SPK(K);         //如果返回2,空开
CLOSE>=BKPRICE+REF(ATRK,BARSBK)*1.5&&ZC,BK(K);//上涨1.5ATRK,多加仓
CLOSE<=SKPRICE-REF(ATRK,BARSSK)*1.5&&ZC,SK(K);//下跌1.5ATRK,空加仓
CLOSE>=BKPRICE+REF(ATRK,BARSBK)*1.5&&ZC,BK(K);//上涨1.5ATRK,多加仓
CLOSE<=SKPRICE-REF(ATRK,BARSSK)*1.5&&ZC,SK(K);//下跌1.5ATRK,空加仓
CLOSE>=BKPRICE+REF(ATRK,BARSBK)*1.5&&ZC,BK(K);//上涨1.5ATRK,多加仓
CLOSE<=SKPRICE-REF(ATRK,BARSSK)*1.5&&ZC,SK(K);//下跌1.5ATRK,空加仓
KB1:=REF(BKVOL,ENTRYSIG_PLACE(1)-1);
KS1:=REF(SKVOL,ENTRYSIG_PLACE(1)-1);
CLOSE<=BKPRICE-REF(ATRK,BARSBK)*1.5&&BKVOL>0,SP(BKVOL-KB1);//多开后下跌1.5ATRK,止损
CLOSE>=SKPRICE+REF(ATRK,BARSSK)*1.5&&SKVOL>0,BP(SKVOL-KS1);//空开后上涨1.5ATRK,止损


(INITMONEY-MONEYTOT)/INITMONEY>0.2,CLOSEOUT;//总回测>20%,全部平仓
MULTSIG(0,0,60,10);