用轮询模式 ,目前貌似没有保本效应,策略哪里写的有问题吗?是不是holding写错啦,代码如下:
HH:=HHV(H,ENTERPRICE);//买开仓位置到现在最高价
LL:=LLV(L,ENTERPRICE);//卖开仓位置到现在最低价
//出现25个点以上的利润,最高点到现在回落50%
DD:= HH-ENTERPRICE>=25*MINDIFF AND C<0.5*HH;
KK:= ENTERPRICE-LL>=25*MINDIFF AND C>0.5*LL;
IF HOLDING>0&& DD THEN
SELL(1,HOLDING,LIMITR,CLOSE); //平多
IF HOLDING>0&& KK THEN
SELLSHORT(1,HOLDING,LIMITR,CLOSE); //平空
//120点止盈,15止损
HH:=HHV(H,ENTERPRICE);//买开仓位置到现在最高价
LL:=LLV(L,ENTERPRICE);//卖开仓位置到现在最低价
HH1:=0.5*(HH+ENTERPRICE);
LL1:=0.5*(LL+ENTERPRICE);
//出现25个点以上的利润,但是不到100
DD:= HH-ENTERPRICE>=25*MINDIFF AND C<HH1;
KK:= ENTERPRICE-LL>=25*MINDIFF AND C>LL1;
PD:= (C>=ENTERPRICE+120*MINDIFF) OR (ENTERPRICE-25*MINDIFF>=C ) OR DD; //平多条件
PK:=(C>=ENTERPRICE+25*MINDIFF) OR (ENTERPRICE-120*MINDIFF>=C) OR KK; //平空条件
IF HOLDING>0&& DD THEN
SELL(1,HOLDING,LIMITR,CLOSE); //平多
IF HOLDING>0&& KK THEN
SELLSHORT(1,HOLDING,LIMITR,CLOSE); //平空
改成了这个 大致可以 但是不明白为啥最后一行 要求 holding>0? 平空不是要求有空仓吗?
用holding<0多了很多无用的交易啊
HH:=HHV(H,ENTERPRICE);//买开仓位置到现在最高价
LL:=LLV(L,ENTERPRICE);//卖开仓位置到现在最低价
HH1:=0.5*(HH+ENTERPRICE);
LL1:=0.5*(LL+ENTERPRICE);
//出现25个点以上的利润,但是不到100
DD:= HH-ENTERPRICE>=20*MINDIFF AND C<HH1;
KK:= ENTERPRICE-LL>=20*MINDIFF AND C>LL1;
PD:= (C>=ENTERPRICE+120*MINDIFF) OR (ENTERPRICE-15*MINDIFF>=C ) ; //止损
PK:=(C>=ENTERPRICE+15*MINDIFF) OR (ENTERPRICE-120*MINDIFF>=C) ; //止损
IF HOLDING>0&& PD THEN
SELL(1,HOLDING,LIMITR,CLOSE); //平多
IF HOLDING<0&& PK THEN
SELLSHORT(1,HOLDING,LIMITR,CLOSE); //平空
IF HOLDING>0&&DD THEN
SELL(1,HOLDING,LIMITR,CLOSE); //平多
IF HOLDING<0&& KK THEN
SELLSHORT(1,HOLDING,LIMITR,CLOSE); //平空
求回复,加入一个保本策略怎么加,我刚才的那个代码为何不可以呢?能不能帮忙改写个,多谢。要求:盈利20个点以上的时候回落下来50%就平掉,平时采用1分钟轮询模式
HH:=HHV(H,ENTERPRICE);//买开仓位置到现在最高价
LL:=LLV(L,ENTERPRICE);//卖开仓位置到现在最低价
这两个改成
HH:=HHV(H,ENTErbars+1);//买开仓位置到现在最高价
LL:=LLV(L,ENTERbars+1);//卖开仓位置到现在最低价