我自己在一个简单的策略上做了一些非常简单的修改,测试的时候发现单独测多头或者空头都没问题,如果双向测试的话,就只有多头的开仓,没有空头的开仓,代码应该没有什么问题,只是增加了一些标志位,请问我是不是哪里设置的有问题?
用户讲的有些抽象,请贴出代码,我们根据实际的代码做分析
//该模型为简单示范模型,用户需根据自己交易经验,修改完善后再实际应用!!!
variable:highest = 0;
variable:lowest = 0;
variable:CrossPrice = 0;
variable:Position = 0;
//适用模式:“走完一根K线以后”
//若用户模式选为“固定时间间隔”,请将"交易条件"中的CLOSE改为OPEN,避免信号闪烁。
//
//中间变量
MA1:=MA(CLOSE,A);
MA2:=MA(CLOSE,B);
PP:=Position;
手数:=ss;
//交易条件
开多平空条件:=CROSS(MA1,MA2);//开多平空条件
开空平多条件:=CROSS(MA2,MA1);//开空平多条件
if 开多平空条件 or 开空平多条件 then begin
CrossPrice := CLOSE;
end
//交易系统
BUY(开多平空条件,手数,MARKET);
BUYSHORT(开空平多条件,手数,MARKET);
if Position<>0 and (开多平空条件 or 开空平多条件) THEN begin
SELLSHORT(开多平空条件,手数,MARKET);
SELL(开空平多条件,手数,MARKET);
Position := 0 ;
end
if 开多平空条件 then begin
highest := CLOSE;
Position := 1;
end
if Position=1 and highest<HIGH then begin
highest:=MAX(highest,HIGH);
end
if 开空平多条件 then begin
lowest := CLOSE ;
Position := 2 ;
end
if Position=2 and lowest>LOW then begin
lowest:=MIN(lowest,LOW);
end
当前持仓:HOLDING,COLORGRAY,LINETHICK0;
当前资产:ASSET,NOAXIS,COLORGRAY;
//注意交易系统先开后平的原则
variable:highest = 0;
variable:lowest = 0;
variable:CrossPrice = 0;
variable:Position = 0;
//适用模式:“走完一根K线以后”
//若用户模式选为“固定时间间隔”,请将"交易条件"中的CLOSE改为OPEN,避免信号闪烁。
//
//中间变量
MA1:=MA(CLOSE,A);
MA2:=MA(CLOSE,B);
PP:=Position;
手数:=ss;
//交易条件
开多平空条件:=CROSS(MA1,MA2);//开多平空条件
开空平多条件:=CROSS(MA2,MA1);//开空平多条件
if 开多平空条件 or 开空平多条件 then begin
CrossPrice := CLOSE;
end
//交易系统
SELLSHORT(开多平空条件,手数,MARKET);
BUY(开多平空条件,手数,MARKET);
SELL(开空平多条件,手数,MARKET);
BUYSHORT(开空平多条件,手数,MARKET);
if Position<>0 and (开多平空条件 or 开空平多条件) THEN begin
Position := 0 ;
end
if 开多平空条件 then begin
highest := CLOSE;
Position := 1;
end
if Position=1 and highest<HIGH then begin
highest:=MAX(highest,HIGH);
end
if 开空平多条件 then begin
lowest := CLOSE ;
Position := 2 ;
end
if Position=2 and lowest>LOW then begin
lowest:=MIN(lowest,LOW);
end
当前持仓:HOLDING,COLORGRAY,LINETHICK0;
当前资产:ASSET,NOAXIS,COLORGRAY;
类似于这样反手的,要按照 平空--开多---平多---开空的顺序写