当订阅多个基础数据时,OnBar执行一次,OnDic是不是会执行多次?

对于历史行情,OnBar每根k线只会执行一次,而OnDic是不是订阅了几个数据就会执行几次?

这样会导致一个问题:Var中声明的Numeric变量,每次执行OnBar前,首先将这个变量赋初值为0,然后对这个变量进行操作。

而执行 OnDic时,每次执行都会将这个变量赋初值为0,然后操作这个变量,收到几个基础数据,这个变量就被重置为0几次。

Vars
    Plot plt;
    Numeric total;
    Numeric a;
    Numeric b;
Events

    OnInit()
    {
        SubscribeDic("订阅数据1",Symbol);
        SubscribeDic("订阅数据2",Symbol);
    }
    
    //订阅了两个数据,意味着执行一次OnBar, 会执行两次OnDic
    OnDic(StringRef dicName, StringRef dicSymbol, DicDataRef dicValue)
    {
        if(dicName=="订阅数据1" and dicSymbol == Symbol)
        {
            //开始执行前,a, b, total都等于0
            dicValue.getValue(a);
            plt.line("a", a);
            plt.line("total", a + b);//执行这句时,a不等于0,b等于0,最后total等于a的值
        }
        else if(dicName=="订阅数据2" and dicSymbol == Symbol)
        {
           //开始执行前,a, b, total都等于0
           dicValue.getValue(b);
           plt.line("b", b);
           plt.line("total", a + b);//执行这句时,a等于0,b不等于0,最后total等于b的值
        }

        //最后total到底是多少?我怎么才能得到 total = a + b 正确的值
    }


基础数据订阅 回调OnDic没有执行
请问早期历史数据回测onbar多次执行的问题
OnDic-基础数据事件函数 里监听某一个基础数据的更新 ,数据每更新一次,OnDic触发两次,一次是图表交易,一次是策略运行
多数据源时,有段代码想开盘前全局只执行一次计算
关于OnBar代码执行方式的问题
当前的K线只执行一次
命令当日仅执行一次该如何编写?
在OnBar里执行策略前判断BarStatus==2 再执行有什么用
一个工作区多个策略单元时,是每个策略单元单独的线程执行吗?
循环体内plot只执行一次

ondic本质上是你订阅的基础数据发生更新时驱动,不更新就不驱动