教学视频里收盘平仓的逻辑有点问题

看视频里面老师说 用SetTriggerBarClose 来输入收盘的时间,然后通过OnBarClose 事件来写收盘的逻辑,问题是OnBarClose事件每个bar的结束都会触发,如何做到只在收盘触发一次呢?

最后写成这样的逻辑了,感觉很丑 OnBarClose(ArrayRef<Integer> indexs) { Numeric _hour; Numeric _minute; Numeric _second; _hour=HourFromDateTime(SystemDateTime); _minute=MinuteFromDateTime(SystemDateTime); _second=SecondFromDateTime(SystemDateTime); if( _hour==22 && _minute== 59 &&_second>40 ) { Sell(100,Max(Open,High)); } }

回复:三个变量多余了吧,这样写呢? If(FracPart(SystemDateTime())>0.225940)

回复:我发现用SystemDateTime 回测的时候触发不了的,衰~

回复:回测历史自然要用历史时间,怎么会用当下的系统时间

回复:老师,哪个函数是历史时间啊,我就是看你视频学的

SetTriggerBarClose 可以 用于提前触发 你的情况需要判断当前K线的时间就可以,比如收盘的K的时间