收盘平仓的简单处理

先给操作流程。首先,确定收盘bar的时间。注意,这个指的是bar时间,而不是自然时间。具体可以通过k线查看。比如,15分钟k线图,那么如果想要在下午收盘前最后一根bar收盘平仓,那么可以看到时间点为14点45分,换成tb的时间格式就是0.1445。再比如,5分钟图,那么如果想要在上午收盘前最后一根bar收盘平仓,可以看到时间点为11点25分,换算成tb的时间格式即使0.1125。现在以5分钟k线举例,需要在中午收盘和下午收盘时进行收盘平仓,如下步骤操作首先添加onbarclose部分代码OnBarClose(ArrayRef<Integer> indexs){if(time == 0.1125 or time == 0.1455){sell(0,close);BuyToCover(0,close);Commentary("收盘平仓");}}这个部分可以使历史bar上出现我们想要的收盘平仓信号但是光这样还不够,我们还需要添加设置,让实盘的时候也能在临近bar收盘的时候执行收盘平仓。在oninit域里添加代码如下OnInit(){array<Numeric> timepoint;timepoint[0] = 0.112950;timepoint[1] = 0.145950;SetTriggerBarClose(timepoint);}这样我们就会在实盘的时候,当走到11:25和14:55这个两个bar的时候,分别在自然时间11:29:50和14:59:50的时候执行onbarclose里的代码,也就是出现收盘平仓信号。注意,如果在这个时间点之后到当前bar走完之前,系统报警信号闪烁,一般是正常情况,无关紧要。上述代码基本上可以无缝添加到任何策略模型内,但是不能保证100%不出问题。如果没有达到预想情况,请食用文章底部的解说视频,进一步了解代码的意义。视频解说配合食用https://www.bilibili.com/video/BV1Gt4y1t7ET/作者:kyover https://www.bilibili.com/read/cv17625951 出处:bilibili

请问有什么复杂的处理?这样写会有闪烁。我想到的是叠加更小周期,还有其他更好方案吗

回复:针对这个业务需求可以写两段代码,一段放在onbarclose里用于处理实时bar上的信号,一段放在onbar里用户处理历史bar上的信号

回复:谢谢刘老师,代码改正后收盘有信号有发单,但是为什么点击刷新后信号消失了呢,这样的话盘后复盘回测就不对了

回复:很神奇的,我回个信息的时间又有信号了。谢谢,解决了!