StatusQuote函数在实时行情下返回值有延迟变化

想使用StatusQuote函数判断当前行情状态是否是实时的,使用了如下代码在实盘环境下运行OnReady() { Print("Quote Status:" + Text(QuoteStatus())); Print("*****************************"); } OnBar(ArrayRef<Integer> indexes) { if(BarStatus == 2) { Print(Text(SystemTimestamp) + " - Quote Status:" + Text(QuoteStatus())); } }预想的结果是在OnReady()里输出的就是4, OnBar()第一次也输出4,实际运行结果如下:请问:1. 如何这种延迟更新是否稳定,仅仅是有一次还是会随机出现?2. 实盘运行时这种延迟会有什么潜在风险,如何规避?

最新bar上第一次运行以历史bar状态驱动,目的是防止启动报单的情况具体情况是这样的:如果你的策略在最新一根bar上出现了信号,这个信号已经报单。你这个时候停止了策略,重新启动自动交易,那么这个最新bar上的信号又会再报一次单。这种情况之前比较常见,主要是当用户夜盘刚好最后一个bar上出信号并报单交易,然后关闭计算机,第二天开盘前启动软件并继续开启自动交易,这个时候就会重复报单。为了解决这个问题,我们把每次执行到最新bar的状态值调整为历史状态,之后再接收tick数据,才确认为实盘状态。这个事实上并不是什么延迟更新,这个两次驱动之间的间隔大概是0.00 00 00 007,这就是7毫秒。对比tick数据是500毫秒间隔,这个误差几乎是忽略不计的。事实上这个也并不能说明行情存在延迟。

回复:原来如此,这个设计还是很合理的,谢谢解答