请老师帮助编写,在每天14.59分平所有持仓。谢谢
if time>=185900 then
begin
sell(holding>0,holding,market);
sellshort(holding<0,holding,market);
end
在日线上time函数失效。这个范例代码也就失效了。
[此贴子已经被作者于2018/7/9 10:46:10编辑过]
参考这个处理方式
收盘前x分钟平仓(分钟级别)
M1: T0TOTIME(TIMETOT0(CLOSETIME(0))-60); //收盘前1分钟
M15:T0TOTIME(TIMETOT0(CLOSETIME(0))-60*15); //收盘前15分钟
if T0TOTIME(TIMETOT0(CLOSETIME(0))-60)<=DYNAINFO(207) or (time=190000 and not(ISLASTBAR)) then begin
sell(1,holding,MARKET);
sellshort(1,holding,MARKET);
end
说明:提前的时间必须在最后一根k的范围内。否则采用(time < xxxx and time > xxxx)的方式进行控制
收盘前x分钟平仓(日线级别)
if T0TOTIME(TIMETOT0(CLOSETIME(0))-60)<=DYNAINFO(207) or (not(ISLASTBAR)) then begin
sell(1,holding,MARKET);
sellshort(1,holding,MARKET);
end
谢谢两位老师的解答,我是在5分钟周期上使用,要在收盘前一分钟平仓用这个可以吗?谢谢
if time>=185900 thenbegin
sell(holding>0,holding,market);
sellshort(holding<0,holding,market);
end
那不行的,time的返回值和K线周期直接挂钩。这种情况下建议采用3楼的方法比较好。或者是软件自带的提前下单(走完K模式才允许启用这个功能)
我直接把老师给的语句复制到模型的交易指令后面。却出现了只要开仓就在开仓的当根K线上平仓的情况,不知什么原因?(游览器原因发不了截图)请老师帮忙。谢谢!
M1: T0TOTIME(TIMETOT0(CLOSETIME(0))-60); //收盘前1分钟//M15:T0TOTIME(TIMETOT0(CLOSETIME(0))-60*15); //收盘前15分钟
IF T0TOTIME(TIMETOT0(CLOSETIME(0))-60)<=DYNAINFO(207) OR (TIME=145900 AND NOT(ISLASTBAR)) THEN BEGIN
SELL(1,HOLDING,MARKET);
SELLSHORT(1,HOLDING,MARKET);
END
这个你要先判断是不是上面代码触发了。这段代码本身是没有问题的。上面代码在历史K上也是只在下午2点59分才触发。你给出的信息不足以做出判断。
平仓语句不能按时平仓,而且模型不能显示信号,M1: T0TOTIME(TIMETOT0(CLOSETIME(0))-60); //收盘前1分钟
IF T0TOTIME(TIMETOT0(CLOSETIME(0))-60)<=DYNAINFO(207) OR (TIME=145900 AND NOT(ISLASTBAR)) THEN BEGIN
SELL(1,HOLDING,MARKET);
SELLSHORT(1,HOLDING,MARKET);
END
加载后如图;
此主题相关图片如下:qq截图20180710152027.png

9点加载模型后显示还是正常的,下午3点后再看时就像上图这样了,和昨天不同的是今天虽然每根K线上都有平仓信号显示但却没有平仓指令发出,不过14.59分钟也没有执行平仓。