运行在什么周期下的?用的什么运行模式。
结合你上个帖子中的需求表述:
//我是想 9点30开始开仓 下午14:30之后就不再开仓 前面开的仓如果没用平统一都在14点57分平仓 提前收盘三分钟 应该怎么编写
问题总结:
1.限制时间无效:因为你代码中的第5--8行,的开平语句未做时间限制造成的。(这个应该是你修改后,未注释掉。根据你的需求,他们是不应该存在的)
2.你需求中,应该是希望在金死叉时进行开平反手的操作。而代码中你限定的时间是time=145700 。那么最终结果是,在整个交易时间内,只有在14:57分才会进行平仓。
3.之前给你的代码中,提供了两种提前下单的方法。根据你上面的用法看,你并没有理解。建议你认真分析下代码和处理逻辑。
修改如下:
m1:ma(c,3);
m2:ma(c,5);
n1:cross(m1,m2);
n2:cross(m2,m1);
//SELLSHORT(n1,1,MARKET);
//BUY(n1,1,MARKET);
//sell(n2,1,MARKET);
//BUYSHORT(n2,1,MARKET);
if n1=1 and time>093000 AND TIME<143000 THEN BEGIN
SELLSHORT(HOLDING<0,1,MARKET);
BUY(HOLDING=0,1,MARKET);
END
if n2=1 and time>093000 AND TIME<143000 THEN BEGIN
sell(HOLDING>0,1,MARKET);
BUYSHORT(HOLDING=0,1,MARKET);
end
//14:57全平仓位
IF time=145700 then begin
sell(HOLDING>0,HOLDING,MARKET);
SELLSHORT(HOLDING<0,HOLDING,MARKET);
end
//这段代码用必须在固定的时间间隔模式下,并且提前下单的时间必须是最后一根k线。否者需要修改代码中的time
//if T0TOTIME(TIMETOT0(CLOSETIME(0))-180)<=DYNAINFO(207) or (time=190000 and not(ISLASTBAR)) then begin
// sell(HOLDING>0,HOLDING,MARKET);
// SELLSHORT(HOLDING<0,HOLDING,MARKET);
//end