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. 实盘运行时这种延迟会有什么潜在风险,如何规避?

有表示行情在盘整的函数吗?
tbpy 行情严重延迟推送问题
实时行情,A函数撤单成功,却返回false
实时行情延缓
订阅实时行情的疑问
Q_LastTime 最新成交时间:在实时行情上显示0.
TBQuant实时行情失败
行情数据的获取会发生变化吗
函数返回值的问题
A_BuyPosition函数返回值问题

最新bar上第一次运行以历史bar状态驱动,目的是防止启动报单的情况

具体情况是这样的:

如果你的策略在最新一根bar上出现了信号,这个信号已经报单。你这个时候停止了策略,重新启动自动交易,那么这个最新bar上的信号又会再报一次单。

这种情况之前比较常见,主要是当用户夜盘刚好最后一个bar上出信号并报单交易,然后关闭计算机,第二天开盘前启动软件并继续开启自动交易,这个时候就会重复报单。

为了解决这个问题,我们把每次执行到最新bar的状态值调整为历史状态,之后再接收tick数据,才确认为实盘状态。

这个事实上并不是什么延迟更新,这个两次驱动之间的间隔大概是0.00 00 00 007,这就是7毫秒。对比tick数据是500毫秒间隔,这个误差几乎是忽略不计的。事实上这个也并不能说明行情存在延迟。

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