“记录该加仓3手持仓的盈亏,如果回撤到最大盈利的40%时 ,就把这3手平掉”
根据交易所交易规则,默认是先开先平的原则
所以出现开仓1手后加仓3手总共4手的情况下,出现SP(3)信号默认先平掉先开的一手与后开三手中两手
所以这样的思路是无法实现的,您了解一下
参考:
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%时平仓