全部 TBQuant功能 TBL语言 TB开户 问答专区 其他
ArrayPushBack(myArray,10)为什么不能运行在Range中
2021-07-25 08:40

这个数组末尾追加元素的函数 为什么不能运行在Range中 是软件的BUG吗  请有关人员验证 。

kyover

现在的容器都是区分图层的 内部参数跟随外部函数的图层 ,你确定不是图层问题?如果认为是bug请提交能复现bug的相关完整代码

2021-07-27 08:22
LIYUPINGLJ

有没有一个在图层上能使用的容器的代码 叫我参考一下

 

 

2021-07-27 10:03
LIYUPINGLJ

Params
    //此处添加参数
    Array<String>mysymbol(["a2109.DCE","ag2112.SHFE","al2109.SHFE","AP110.CZCE","au2112.SHFE"]);
    String yy("1d");
Vars
    //此处添加变量
     Global Integer i;
     Global Integer j;
    
     Array<Numeric> myArray;

Defs
    //此处添加公式函数
    Numeric calcAvg(Numeric a,Numeric b)
    {
        return (a+b)/2;
    }

Events
    //此处实现事件函数
    
    //初始化事件函数,策略运行期间,首先运行且只有一次,应用在订阅数据等操作
    OnInit()
    {
        
        
         for  j= 0 to GetArraySize (mysymbol) {        
              SubscribeBar(mysymbol[j],yy,20200101); 
                  }
    }

    //在所有的数据源准备完成后调用,应用在数据源的设置等操作
    OnReady()
    {

    }

    //在新bar的第一次执行之前调用一次,参数为新bar的图层数组
    OnBarOpen(ArrayRef<Integer> indexs)
    {

    }

    //Bar更新事件函数,参数indexs表示变化的数据源图层ID数组
    OnBar(ArrayRef<Integer> indexs)
    {
     Range[i=0 : DataCount-1]
        {
             ArrayPushBack(myArray,66);
            }
              PlotNumeric("收盘价",myArray[2]);
    }

2021-07-27 10:23
kyover
@LIYUPINGLJ

你的myarray不是全局类型 那么不同图层的myarray实际上是不同的容器,也就是说data0.myarray和data1.myarray其实是两个变量。

你在range里对不同图层的myarray进行插入,实际上就是在对不同的myarray进行插入。

你可以在插入语句后面加上commentary语句输出myarray的内容元素。

另外,range实际上就是省略了循环变量和前缀的for,建议先用for循环写明白了多图层管理,再用range

更多细节可以关注视频区启航类课程

2021-07-27 10:28
LIYUPINGLJ

运行结果是   

2021-07-27 10:25
LIYUPINGLJ

结果为什么不是66 而是0呢

 

2021-07-27 10:27
LIYUPINGLJ

谢谢老师指点 我明白了

 

2021-07-27 11:12
您未登录,请先 登录注册 后发表评论
顶部