各位大神,我写的策略就是不能实现图标程序化是怎么回事呢?
信号是有的,我回测过,都执行了,就是在使用图标程序化的时候不执行,编程的代码之中有显示持仓holding,持仓都显示开仓了,就是不执行。
参数设置:
N1=20,n2=40 ,n3=20,m1=2,m2=2
variable:最近1次盈亏数额=0,c1=0;
MA5:MA(CLOSE,n2);
MA10:MA(CLOSE,n3);
CONDBUY:=CROSS(MA5,MA10);
CONDSELL:=CROSS(MA10,MA5);
平多开空:=CONDSELL and HOLDING>=0;
平空开多:=CONDBUY and HOLDING<=0;
持仓:HOLDING;
上次开仓量:=ENTERVOL;
d:=date+19000000;
日期条件:=if(d>20200101,1,0);
loss_num:=0;
win_num:=0;
if HOLDING=0 and 日期条件 then begin
if condbuy then BUY(CONDBUY ,n1,NEXTOPEN);
if condsell then BUYSHORT(CONDSELL,n1,NEXTOPEN);
END
开仓价格:=ENTERPRICE;
if CONDBUY =1 then 平仓价格:=c;
if CONDSELL=1 then 平仓价格:=c;
pc:=平仓价格;
if 持仓<0 and condbuy=1 and (PC-开仓价格)>0 then 最近1次盈亏数额:=1;
if 持仓<0 and condbuy=1 and (PC-开仓价格)>0 then 最近1次盈亏数额:=-1;
if 持仓>0 and condsell=1 and (PC-开仓价格)<0 then 最近1次盈亏数额:=-1;
if 持仓>0 and condsell=1 and (PC-开仓价格)>0 then 最近1次盈亏数额:=1;
dd:=最近1次盈亏数额;
最近2次盈亏数额:=NUMPROFIT(1);
最近3次盈亏数额:=NUMPROFIT(2);
最近4次盈亏数额:=NUMPROFIT(3);
3连亏:= 最近1次盈亏数额<0 and 最近2次盈亏数额<0 and 最近3次盈亏数额<0
and 最近4次盈亏数额>0;
3连盈:=最近1次盈亏数额>0 and 最近2次盈亏数额>0 and 最近3次盈亏数额>0
and 最近4次盈亏数额<0;
if HOLDING>0 and condsell and 日期条件 then SELL(CONDsell,holding,THISCLOSE);
if HOLDING=0 and condsell and 3连亏 and 日期条件 then BEGIN
BUYSHORT( 1, 上次开仓量*m1,NEXTOPEN );
END
if HOLDING=0 and condsell and 3连盈 and 日期条件 then BEGIN
BUYSHORT( 1, 上次开仓量/m2,NEXTOPEN );
END
if HOLDING=0 and condsell and not(3连亏) and not(3连盈) and 日期条件
then BEGIN
BUYSHORT( 1, 上次开仓量,NEXTOPEN );
END
if HOLDING<0 and condbuy and 日期条件 then SELLshort(condbuy,holding,THISCLOSE);
if HOLDING=0 and condbuy and 3连盈 and 日期条件 then BEGIN
BUY( 1, (-1)*上次开仓量/m2,NEXTOPEN );
END
if HOLDING=0 and condbuy and 3连亏 and 日期条件 then BEGIN
BUY( 1, (-1)*上次开仓量*m1,NEXTOPEN );
END
if HOLDING=0 and condbuy and not(3连亏) and not(3连盈) and 日期条件
then BEGIN
BUY( 1, (-1)*上次开仓量,NEXTOPEN );
END