经验: 2个数据层的数据没有对齐的情况一下偶然的情况下会导致策略卡死

这几天很偶然的情况下,发现一个运行很好的策略在原油期货2个数据层(sc2309 和sc2310) 的情况下会导致策略卡死,仔细分析了一下原因后发现TBQ的数据对齐机制和OnBar() 类触发运行机制上可能存在缺陷导致。

会偶然卡死的代码:

OnBarOpen(ArrayRef<Integer> indexs)

{

       Integer datai;

       range[datai=0:DataCount() - 1]

      {

                   fun1(); //复杂的计算函数

        }

  }


不会卡死的代码:

OnBarOpen(ArrayRef<Integer> indexs)

{

Integer datai;

       range[datai=0:DataCount() - 1]

     {

                   if (!ArrayFind(indexs,datai)) Continue; // 不是Data1i数据层触发的就不计算后计算函数

                   fun1(); //复杂的计算函数

         }

 }

原理:  每次计算只处理触发数据层的计算!!




数据对齐与信号闪烁
数据缺失导致的错误
订阅数据,时间对齐
疑似数据缺失导致的错误
如果只复制了第3层的,那么会自动复制第2层的参数优化设置?
不同数据源的数据时间起点不同,在多个图层存在的情况下如何判断某个时刻有哪些数据源有数据。
大小周期下的数据对齐问题。
关于多数据源对齐的 SetBeginBarMaxCount疑问
如何让策略过滤掉没有数据而强制留空的BAR
内置函数bug,在某些特殊情况下会出现数据错误的bug

代码决定问题  

一切皆有可能

导致问题应该也在fun里面