全部 智大领峰 TBQuant功能 TBL语言 TB开户 问答专区 高手圈 其他
关于Range的问题
2022-01-21 10:02

公式代码:

Params
    //此处添加参数

Vars
    //此处添加变量
Events
    //此处实现事件函数
    
    //初始化事件函数,策略运行期间,首先运行且只有一次
    OnInit()
    {
        SubscribeBar(Symbol, "5m", data0.BeginDateTime);
        SubscribeBar(Symbol, "15m", data0.BeginDateTime);
    }


    //Bar更新事件函数,参数indexs表示变化的数据源图层ID数组
    OnBar(ArrayRef<Integer> indexs)
    {
        Commentary("indexs array size=" + Text(GetArraySize(indexs)));
        Numeric i;
        Range[i = 0 : DataSourceSize - 1]
        {
            Commentary("size=" + Text(GetArraySize(indexs)) + ",i:" + Text(i));
        }    
    }

 

公式加载在1分钟K线上,公式自己再订阅两个图层,共3个图层。

把鼠标放在图层0中Commentary的信息是正确的。

把鼠标放在图层1、2中Commentary中size的值大部分是1,有时显示2和3。这是为什么?

 

问题2:Range[i = 0 : DataSourceSize - 1]中i是否相当于For i = 0 To DataSourceSize - 1]的i?

问题3:怎样去理解这个Range[i = 0 : DataSourceSize - 1]?不是应该对更新的bar去循环吗:

For i = 0 To GetArraySize(indexs) - 1

{

Data[indexs[i]].

}
 

kyover

第一 如果是历史 一般都是固定的图层数量 如果是实时 不是固定 indexs里放的是队列里待命的驱动tick数据 举例如果indexs里是0 2 两个元素 说明队列里收到了图层1和图层3的新tick数据 需要驱动公式运行

第二 如果用for 那么后面的所有函数和变量都需要加上data[i].前缀 效果基本是一样的

range的动作是让一段代码批量获取多个图层的数据,批量执行多个图层上的函数等操作

你可以理解为让你的代码在range范围的图层上批量运行

 

2022-01-21 10:56
您未登录,请先 登录注册 后发表评论
顶部