请老师改一个模型 (文华财经WH8赢智V8.2)

投资者咨询:请老师改一个模型 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-7-24 13:05
 

MA5:MA(C,5);//5均线
MA90:MA(C,90);//90均线
DIFF :=EMA(CLOSE,12) - EMA(CLOSE,26);//计算MACD指标的DIFF
DEA  := EMA(DIFF,9);//计算MACD指标的DEA
MACD:=2*(DIFF-DEA),COLORSTICK;
JC:=CROSS(DIFF,DEA);//MACD金叉
SC:=CROSSDOWN(DIFF,DEA);//MACD死叉
N1:=BARSLAST(JC)+1;//金叉到当前距离
N2:=BARSLAST(SC)+1;//死叉到当前距离
MJ:=VALUEWHEN(DIFF>DEA,SUM(MACD,N1));//红柱期间MACD面积
MS:=VALUEWHEN(DIFF<DEA,-1*SUM(MACD,N2));//绿柱期间MACD面积
N:=SUMBARS(JC,2)-1;//前前一个金叉到当前距离
M:=SUMBARS(SC,2)-1;//前前一个死叉到当前距离
前死面积:=MS;//计算前一个死叉面积
前前死面积:=REF(MS,N);//计算前前一个死金叉面积
前金面积:=MJ;//计算前一个金叉面积
前前金面积:=REF(MJ,M);//计算前前一个金叉面积

UPCOND:=CROSS(DIFF,DEA);
DOWNCOND:=CROSSDOWN(DIFF,DEA);
END_N1:=SUMBARS(DOWNCOND,1);
RANGE_N1:=REF(SUMBARS(UPCOND,1),END_N1);
HH1:=REF(HV(H,RANGE_N1),END_N1-1);
END_M1:=SUMBARS(UPCOND,1);
RANGE_M1:=REF(SUMBARS(DOWNCOND,1),END_M1);
LL1:=REF(LV(L,RANGE_M1),END_M1-1);

SKVOL=0&&CROSS(MA90,MA5),SK(手数1);//开空仓1条件 
SKVOL=手数1&&CROSS(MA5,MA90),BP(SKVOL);//开空仓1平仓条件

SKVOL>0&&COUNT(SC,BARSSK)=1&&SC,SK(手数2);//开空仓2条件
SKVOL=(手数1+手数2)&&C>HH1,BP(手数2);//开空仓2条件的平仓条件
SKVOL=(手数1+手数2)&&CROSS(MA5,MA90),BP(SKVOL);//开空仓2条件的平仓条件

SKVOL>=手数1&&C<LL1&&MA5<MA90,SK(手数3);//开空仓3条件
SKVOL>=手数1+手数3&&C>HH1,BP(手数3);//开多仓3条件的平仓条件
SKVOL>=手数1+手数3&&CROSS(DIFF,DEA)&&L>LL1&&C>HH1,BP(SKVOL);//开多仓3条件的平仓条件
SKVOL>=手数1+手数3&&CROSS(MA5,MA90),BP(SKVOL);

BARSBKK:=BARSLAST( CROSS(BKVOL>0,0.5))+1;
BARSSKK:=BARSLAST( CROSS(SKVOL>0,0.5))+1;

BKVOL>手数1&&HHV(PROFIT,BARSBKK)>X&&PROFIT<0.6*HHV(PROFIT,BARSBKK),SP(BKVOL);//多单条件23开仓后最大盈利超过X后利润回抽到40%时平仓
SKVOL>手数1&&HHV(PROFIT,BARSSKK)>X&&PROFIT<0.6*HHV(PROFIT,BARSSKK),BP(SKVOL);//空单条件23开仓后最大盈利超过X后利润回抽到40%时平仓

修改要求:  源码最后2句是   账户盈利回撤到40%以下就全平。  我现在想改为:   只针对  “开空仓2条件”  和  “开空仓3条件”  这两个语句开的仓位执行  ”盈利回撤到40%平仓”,平仓手数则按照当初这两个条件开仓时的手数平。

                比如:开空仓1条件先初始建仓1手,然后开空仓2条件执行了加仓开了3手 ,则记录该加仓3手持仓的盈亏,如果回撤到最大盈利的40%时 ,就把这3手平掉。如果出现  开空仓3条件执行了加仓开了5手 ,则同样对这5手进行回撤平仓处理。初始建仓的1手始终是不平的,除非触发均线交叉才全平掉所有仓位。

注意上述举例中的  加仓3手 或者加仓5手的 盈亏是独立计算的。而不是取整个账户从建仓到现在的盈亏。
      
技术人员回复
日期:2018-7-24 13:32

 “记录该加仓3手持仓的盈亏,如果回撤到最大盈利的40%时 ,就把这3手平掉”

 

根据交易所交易规则,默认是先开先平的原则

 

所以出现开仓1手后加仓3手总共4手的情况下,出现SP(3)信号默认先平掉先开的一手与后开三手中两手

 

所以这样的思路是无法实现的,您了解一下

投资者咨询:请老师改一个模型 (文华财经WH8赢智V8.2)
来源:文华财经  日期:2018-7-24 13:05
 老师我可能没表达清楚。 你说意思我明白。我其实只是要  两个关键点,第一,平仓手数是按照 当初 2条件或者3条件 执行时的手数来。  第二,盈利回撤 这个计算也是 只按照 2条件或者3条件 的开仓价格来计算的。             至于具体平哪一手这个不考虑的 ,是我没表达清楚 。抱歉
技术人员回复
日期:2018-7-24 13:56

参考:

 

MA5:MA(C,5);//5均线
MA90:MA(C,90);//90均线
DIFF :=EMA(CLOSE,12) - EMA(CLOSE,26);//计算MACD指标的DIFF
DEA  := EMA(DIFF,9);//计算MACD指标的DEA
MACD:=2*(DIFF-DEA),COLORSTICK;
JC:=CROSS(DIFF,DEA);//MACD金叉
SC:=CROSSDOWN(DIFF,DEA);//MACD死叉
N1:=BARSLAST(JC)+1;//金叉到当前距离
N2:=BARSLAST(SC)+1;//死叉到当前距离
MJ:=VALUEWHEN(DIFF>DEA,SUM(MACD,N1));//红柱期间MACD面积
MS:=VALUEWHEN(DIFF<DEA,-1*SUM(MACD,N2));//绿柱期间MACD面积
N:=SUMBARS(JC,2)-1;//前前一个金叉到当前距离
M:=SUMBARS(SC,2)-1;//前前一个死叉到当前距离
前死面积:=MS;//计算前一个死叉面积
前前死面积:=REF(MS,N);//计算前前一个死金叉面积
前金面积:=MJ;//计算前一个金叉面积
前前金面积:=REF(MJ,M);//计算前前一个金叉面积

UPCOND:=CROSS(DIFF,DEA);
DOWNCOND:=CROSSDOWN(DIFF,DEA);
END_N1:=SUMBARS(DOWNCOND,1);
RANGE_N1:=REF(SUMBARS(UPCOND,1),END_N1);
HH1:=REF(HV(H,RANGE_N1),END_N1-1);
END_M1:=SUMBARS(UPCOND,1);
RANGE_M1:=REF(SUMBARS(DOWNCOND,1),END_M1);
LL1:=REF(LV(L,RANGE_M1),END_M1-1);

SKVOL=0&&CROSS(MA90,MA5),SK(手数1);//开空仓1条件
SKVOL=手数1&&CROSS(MA5,MA90),BP(SKVOL);//开空仓1平仓条件

SKVOL>0&&COUNT(SC,BARSSK)=1&&SC,SK(手数2);//开空仓2条件
SKVOL=(手数1+手数2)&&C>HH1,BP(手数2);//开空仓2条件的平仓条件
SKVOL=(手数1+手数2)&&CROSS(MA5,MA90),BP(SKVOL);//开空仓2条件的平仓条件


SKVOL>=手数1&&C<LL1&&MA5<MA90,SK(手数3);//开空仓3条件
SKVOL>=手数1+手数3&&C>HH1,BP(手数3);//开多仓3条件的平仓条件
SKVOL>=手数1+手数3&&CROSS(DIFF,DEA)&&L>LL1&&C>HH1,BP(SKVOL);//开多仓3条件的平仓条件
SKVOL>=手数1+手数3&&CROSS(MA5,MA90),BP(SKVOL);

BARSBKK:=BARSLAST( CROSS(BKVOL>0,0.5))+1;
BARSSKK:=BARSLAST( CROSS(SKVOL>0,0.5))+1;

AA1:IF(ISLASTBK&&REFSIG_VOL(SP,1)=手数2,手数2,IF(SLASTBK&&REFSIG_VOL(SP,1)=手数3,手数3,NULL));
AA2:IF(ISLASTSK&&REFSIG_VOL(BP,1)=手数2,手数2,IF(SLASTSK&&REFSIG_VOL(BP,1)=手数3,手数3,NULL));
BKVOL>手数1&&HHV(BKPRICE*AA1*UNIT,BARSBKK)>X&&BKPRICE*AA1*UNIT<0.6*HHV(BKPRICE*AA1*UNIT,BARSBKK),SP(AA1);//多单条件23开仓后最大盈利超过X后利润回抽到40%时平仓
SKVOL>手数1&&HHV(SKPRICE*AA2*UNIT,BARSSKK)>X&&SKPRICE*AA2*UNIT<0.6*HHV(SKPRICE*AA2*UNIT,BARSSKK),BP(AA2);//空单条件23开仓后最大盈利超过X后利润回抽到40%时平仓