关于收盘平仓

Events OnBar(ArrayRef<Integer> indexs) { //... If((TradingDate[-1] != InvalidInteger && TradingDate!= TradingDate[-1]) || (TradingDate[-1] == InvalidInteger && TradingDate< CurrentDate)) { Sell(0,Close); BuyToCover(0,Close); }Else If(TradingDate== CurrentDate && Time == 0.1455 && CurrentTime >= 0.1459) { Sell(0, Close); BuyToCover(0, Close); } //... } 【注意事项】 本例是以国内商品期货交易所收市时间举例,股指期货或其他市场需调整写法。 本例是针对5分钟周期的收盘平仓所写,针对不同的周期需改写为合适的最后Bar时间。 老师好! 我想解决这个问题:针对不同的周期需改写为合适的最后Bar时间。 一个品种我有多个周期,如果每个周期都改写最后Bar时间就很麻烦,我试着把这句 Else If(TradingDate== CurrentDate && Time == 0.1455 && CurrentTime >= 0.1459) 改写成 Else If(TradingDate== CurrentDate && CurrentTime >= 0.1459) 省略了&& Time == 0.1455 结果导致策略单元里的多单信号还在 而图表上的多单却已经平仓了 监控器里也少了多单信号 这是怎么回事,应该如何解决?谢谢老师

收盘平仓建议直接用onbarclose作为实盘的载体 收盘平仓 - 哔哩哔哩 (bilibili.com)

回复:老师,您举的例子是5分钟周期的情况,如果要各个周期都通用,比如15分钟、60分钟,有没有更好的办法?

回复:不太能领会你这个问题的意义 首先 无论是5分钟,1小时,如果你是想每天定点收盘平仓,settrigger设置的参数肯定是一样,不需要修改。 如果你是需要每根bar都执行收盘平仓操作,那句正常像onbar一样写罢了,只不过是在每个小节结束的时候用settrigger设置一下这跟小节结束bar的执行时间就行了 感觉你并没有读懂这个东西的机制 如果只是想照葫芦画瓢,却没搞清楚背后的原理,恐怕很难应用吧

回复:老师,我的意思是,5分钟周期是这样写的: OnBarClose(ArrayRef<Integer> indexs) { if(time == 0.1125 or time == 0.1455) ...... 那么28分钟周期应该怎样写?写成 if(time == 0.1125 or time == 0.1455)还行吗? 或者要改写成: if(time == 0.1107 or time == 0.1459)才好?

昨天下午的收盘平仓执行成功,但策略单元里的多单信号还在,监控器里多单信号也在。导致信号和实盘持仓对不上。