不同周期尾盘清仓代码运行结果不同
If(Time>=0.1455 && Time<0.15) { If(MarketPosition<>0) { Sell(0,0); // 市价平多 BuyToCover(0,0); // 市价平空 Commentary("尾盘清仓,目前仓位:" + Text(MarketPosition)); } }5分钟周期运行策略,尾盘清仓代码可以正常执行;策略周期换成30分钟就不执行了,也无警告消息。请问为什么?
If(Time>=0.1455 && Time<0.15) { If(MarketPosition<>0) { Sell(0,0); // 市价平多 BuyToCover(0,0); // 市价平空 Commentary("尾盘清仓,目前仓位:" + Text(MarketPosition)); } }5分钟周期运行策略,尾盘清仓代码可以正常执行;策略周期换成30分钟就不执行了,也无警告消息。请问为什么?
time默认返回的是bar开盘时间。如果是30分钟,那么靠近收盘的那几根bar,大概是0.1400,0.1430哪一根都比0.1455小
回复:谢谢老师,onbar()的说明文档是:对于历史BAR是每根BAR只运行一次,对于实盘行情正在形成的BAR则每接收到一个新的TICK都会运行一次。应该能get到0.1455吧?
回复:不能把 bar时间理解为bar的唯一标签,是离散的,是在k线横坐标看得到的数值不是连续的,历史的不是 ,实时的也不是连续的是currenttime 这种
回复:我觉得我上面其实说的很清楚了。我再说一遍time默认返回的是bar开盘时间。请问30分钟k线,哪一根bar的开盘时间可以比14点55分大?请你列举出来
回复:感谢老师指点!我是新手,对bar的运行机制了解的不够。参考您的另一篇帖子用OnBarClose解决了,非常感谢!
回复:感谢老师点评!我是新手,对bar的运行机制了解的不够。就是说每根bar的每个tick接收一次行情数据,但结构体内的程序只在开始的时候运行一次?
回复:你也不新了,我对你这个id早就有印象了,最少半年前我就应该给你发过零基础课程了吧....
Time是bar时间你可以print一下 30分钟周期最后一个bar 可能是1445 1430 或者其他,看你怎么切割k线的但不太可能大于0.1455
回复:谢谢!追问同上
回复:就是说每根bar的每个tick接收一次行情数据,但结构体内的程序只在开始的时候运行一次?【回复】:程序也是每个tick运行,问题不是因为没有每个Tick运行,而是因为判断的时间是BAR的开始时间,30分钟,最后一根K线的开始时间是0.1430,永远不可能是0.1455