背景:
1、在onInit中通过ubscribeBar订阅了多个合约。
2、在onbar事件域中进行处理时,需要尽量减少计算次数,于是会先判定symbol——不同的symbol的计算结果分开存放,且计算的次数会影响计算结果(因为有些结果是计数相关的)。
然后就发现了一些问题
一、symbol等函数如果不在前面加上Data[i],输出的结果总是Data[0].Symbol。请问,在tbquant与tbquant3中,函数XXXX如果不加前缀、都等于Data[0].XXXX么?
二、onbar事件域是多线程并行的还是一个一个串行处理的?这个问题非常重要,因为会影响到我设计程序时变量的使用方式与设计思路,麻烦解答一下,谢谢。
三、在订阅了多个品种时,怎么知道当下运行的具体品种是什么呢?尤其是index中有好几个元素,没办法通过Data[index[0]].symbol来获取。
问题二与问题三非常重要,在线等。
1 不加前缀就是默认data0
2.一个单元内是串行的
3.实际运行的图层品种都在index里
对于问题三,再补充一下:
假设,订阅了10个品种,在onbar中看到index=[0,3,7]——代表订阅的第一、第四、第七个合约有数据更新。
然后我在onbar事件域中有一段逻辑,放在if{}条件语句块中,该条件语句块由于有计数器之类的机制,所以希望不要多余执行——即,能够计算的次数不要冗余或重复计算本身就是计算结果的保证之一。
那么,此时,我需要能够把index与symbol之类函数结合起来判断,只有通过了if条件的合约,才会执行if{}语句块。
对于问题二,再解释一下,防止没说清楚。
假设,订阅了10个品种,在onbar中看到index=[0,3,7]——代表订阅的第一、第四、第七个合约有数据更新,那么这第一、第四、第七个合约的onbar事件域是同时并行的?还是一个一个串行的?