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的数组里