数组应用

tbquant在编写下面语言的过程中,alpha本身想求的数组myalpha的平均值,但是显示只显示第一个图标的值 Params Numeric length(20); Vars Array<Numeric> MyAlpha(0); Global Numeric Alpha; Numeric i; Events OnBar(ArrayRef<Integer> indexs) { Range[0:DataCount-1] { MyAlpha[i]=Average(Abs(Close[1]-Open[1]),length)/Average(High[1]-Low[1],length); } Alpha=AverageArray(MyAlpha); Range[0:DataCount-1] { Commentary("Alpha="+Text(Alpha)); Commentary("MyAlpha="+Text(MyAlpha[i])); } }

您好,还是没搞清楚怎么处理,能帮忙写出来理解一下吗

你用了range range其实等效于for循环加data[i]前缀的形式,range内的所有对象如果没有强制声明图层都会跟随默认的当前图层, 现在tb的局部序列等数据结构形式的变量,都是区分图层的。比如你定义的numeric myVAr,data0.myVar和data1.myVar是两个对象。全局变量部分图层 所以你上面代码实际操作的是把第i个图层的数值,放到这个图层的myalpha数组的第i个位置。于是每个图层的myalpha都只有相应图层序号位置的数组位置有结果。 建议赋值的时候强制使用data0.myalpha强制放到data0的数组里