多图层计算问题

有两个问题在代码中,求大佬解决一下:Vars Series<Numeric> myjs; //序列变量 Global Numeric myjs2; Global Integer dyid1; //增加的数据源idEvents //初始化事件函数 OnInit() { //订阅辅助图层 这里应该不需要Range,如果周期为1分钟 就订阅2分钟周期 If(Frequency()==\"1m\") { dyid1 = SubscribeBar(Symbol, \"2m\", 20240101, 0, Enum_Data_RolloverBackWard); Print(\"已订阅2m周期,dyid1=\" + Text(dyid1)); } } //当Bar更新变化时驱动,相当于收到Tick数据就更新 OnBar(ArrayRef <Integer> indexs) { } //当下一个Bar开始前,最后一次当前bar驱动,参数indexs表示更新的图层编号数组 OnBarClose(ArrayRef <Integer> indexs) { Integer i = 0; Range[i=0:DataCount-1] { //序列变量 这里可以修改 两个图层也能获取到 myjs = 1; //判断相应图层执行 If(indexs[i]==0) { //问题1:当1分钟K线出现新bar的时候,但2分钟没有产生新bar,这里会执行2次(如果1分钟和2分钟同时产生新bar的时候没问题) //原因:循环第1遍的时候 indexs[i]=0,i=0,循环第2遍的时候 indexs[i]=0,i=1 //请教如何解决这个问题? //问题2:这里为什么不能修改序列变量myjs的值?所以我用了myjs2 = myjs2+1;但是执行2次后就不准确了,所以产生了问题1 myjs = myjs+1; //用于打印K线时间 String dyintime = DateTimeToString(Date+Time); Print(dyintime + \":图层(\" + Text(indexs[i]) + \")myjs = \" + Text(myjs) + \",变量i = \" + Text(i)); } //在订阅图层dyid1执行 Else If(indexs[i]==dyid1 And dyid1!=0) { //用于打印K线时间 String dyintime = DateTimeToString(Date+Time); Print(dyintime + \":订阅图层(\" + Text(indexs[i]) + \")myjs = \" + Text(myjs) + \",变量i = \" + Text(i)); } } Print(\">>>>>>>>>>>>>> 跳出了循环。 \"); }

第一个问题我其实没有看懂你在干什么如果是要限定某个图层驱动才执行某个业务逻辑,那么直接遍历indexs参数不就好了吗,为什么还要加个range呢?第二个问题,什么叫不能修改myjs的值?你要怎么修改?整个代码放上来,我不知道你想做什么。请把你需要实现的业务逻辑说清楚,然后再通过注释把怎么实现的描述清楚。现在的内容完全看不懂。

回复:

回复:再请教一下:在订阅图层id1中往erwei数组中添加yiwei数组的三种方式哪个最好?ArrayPushBack(Data1.erwei, Data1.yiwei); //1Data1.ArrayPushBack(Data1.erwei, Data1.yiwei); //2Data1.ArrayPushBack(erwei, yiwei); //3

回复:这...所以问题呢?

回复:这种工具性无内部缓存数据的函数其实三个写法都一样。

回复:谢谢,之前问的问题是由于我自己把逻辑没搞清楚