经常出现图表信号只有在重启策略单元后才显示的问题
请教老师们一个问题,我有一个多品种策略在实盘运行时,出现图表信号不刷新的问题,想问一下大概是什么原因?以下是详细情况:1、问题描述:策略在回溯测试时,图表信号是正常的,开了监控器,监控器也没有报不匹配,此时我以为策略一直正常运行。但当我停止策略单元再重启后,监控器就查出帐户持仓和信号持仓不匹配。我去查找原因,发现会出现一种情况:在停止策略单元并重启前,该出图表信号的地方没有出图表信号,而在策略单元停止再重启后,那个图表信号又出现了。这也是为什么策略单元重启前监控器没有报不匹配,而重启后又报不匹配的原因。上述情况不是每一次交易信号都会出现,有时候会有时候不会。另外:此种情况出现时,消息中心并没有报信号闪烁。2、策略的特点:是一个多品种的策略,不同图层数据源之间会互相交互计算(简单来说就是会取不同图层的数据源进行综合计算得出一个指标值,作为交易信号计算的依据)。我是把信号计算写在ONBARCLOSE里,报单写在ONBAROPEN里,没有用到ONBAR。另外,ONBARCLOSE里进行数据计算时,我会用到CLOSE。我知道ONBAR里不能用CLOSE,会导致信号闪烁。但在ONBARCLOSE里用CLOSE我的理解是不会导致信号闪烁问题,因此就用了(不知道是否问题出现在这里?)3、我自己推测的第一种可能(有点瞎猜):这种情况会不会是因为ONBARCLOSE的处理机制问题。之前看TB的官方视频,说ONBARCLOSE的驱动并不是严格按照最后0.5秒那个TICK驱动,而是当新BAR出现时才驱动ONBARCLOSE,但一定会在ONBAROPEN之前驱动。而且ONBARCLOSE的驱动可能也并不会等数据对齐后才驱动,因为这样会有问题。按照这个理解的话,我的策略出现这种问题是不是可以这样解释:当加载多品种的策略时,驱动ONBARCLOSE的那一刻,有些品种的数据还没有到,所以导致有一些品种的图表信号没法被正确计算出来,因此就没有图表信号。而因为ONBARCLOSE只会驱动一次,即使时间过了那一刻,也不会去重新计算那个位置的图表信号,因此策略单元不重启的话那个图表信号就缺失了。而当停止策略单元重启后,又会重新计算一遍那个位置的图表信号,此时因为数据补齐了又算出来有图表信号了。4、我自己推测的第二种可能:是不是因为ONBARCLOSE里一样不能用CLOSE的原因?因为我的理解是ONBARCLOSE里的CLOSE只会有一个价格而且只会触发一次,所以不存在信号闪烁的可能。这个理解是不是有误?5、那假如上述问题大概是对的(这要老师评估才知道),是不是我把代码里的信号计算和报单全部放在ONBAR里,同时把所有CLOSE(包括用到CLOSE的函数】改成CLOSE[1],是不是就可以解决这个问题了?不知道我有没有表达清楚我的问题,期待老师的答案,万分感谢!