全部 智大领峰 TBQuant功能 TBL语言 TB开户 问答专区 高手圈 其他
数组应用
2022-07-07 09:11

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]));
        }
    }
       

kyover

你用了range

range其实等效于for循环加data[i]前缀的形式,range内的所有对象如果没有强制声明图层都会跟随默认的当前图层,

现在tb的局部序列等数据结构形式的变量,都是区分图层的。比如你定义的numeric myVAr,data0.myVar和data1.myVar是两个对象。全局变量部分图层

所以你上面代码实际操作的是把第i个图层的数值,放到这个图层的myalpha数组的第i个位置。于是每个图层的myalpha都只有相应图层序号位置的数组位置有结果。

建议赋值的时候强制使用data0.myalpha强制放到data0的数组里

2022-07-07 11:28
xueshixueshi

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

2022-07-07 13:46
您未登录,请先 登录注册 后发表评论
顶部