OnOpenBar内对跨周期的运算
刚才赋值的问题我大概还能想明白,现在这个像灵异现象,百思不得姐。老师来给瞧一下吧。测试代码如下:Vars Series <Numeric> x; series <Numeric> y;Events OnInit() { SubscribeBar(Data0.Symbol,5m,Data0.BeginDateTime); } OnBarOpen(ArrayRef<Integer> indexs) { data1.x = data1.x + 1; } OnBar(ArrayRef<Integer> indexs) { data1.y = data1.y + 1; Commentary(data1.Currentbar = +text(data1.CurrentBar)); Commentary(OnBarOpen: 图层1自加1 = +text(data1.x)); Commentary(OnBar: 图层1自加1 = +text(data1.y)); }上面是前4根k线在onbaropen域自加1的结果,对跨周期的操作实在很迷,如图1分钟周期订阅5分钟周期,每一根5分钟周期data1的新bar出现以及之后新的1分钟k bar出现都会执行一次+1,为什么这样?
其实我的问题是自己建了同花顺那个神奇九转指标的函数,在onbaropen引用,不想计算那么多次,但是反复调试都有bug,最后提炼出来这么个简单的算式。。。
多图层还要判断图层来操作序列变量?OnBarOpen需要这样 而OnBar不需要?感觉很奇怪,应该是个TBQ的Bug吧
回复:onbar因为都是相同时间间隔 你看不出onbaropen即使大周期也只需运行一次所以不能让小周期上的onbaropen去触发大的
回复:反正使用起来很怪
回复:可是问题在于,onbar他对于图层一的自加一是可以正确识别的,它同onbaropen都在一个大周期内出现了5次,onbar只有第5次新的大周期出现的时候加了一次,即使他每一分钟都运行过120次。。。
Vars Series <Numeric> x;series <Numeric> y;Events OnInit() { SubscribeBar(Data0.Symbol,\"5m\",Data0.BeginDateTime); }OnBarOpen(ArrayRef<Integer> indexs) { Numeric i; for i=0 to GetArraySize(indexs)-1 { if(indexs[i] == 1) { data1.x = data1.x + 1; } } //data1.Commentary(\"OnBarOpenx: 图层1自加1 = \"+text(data1.x)); }OnBar(ArrayRef<Integer> indexs){ data1.y = data1.y + 1; Commentary(\"data1.Currentbar = \"+text(data1.CurrentBar)); Commentary(\"OnBarOpenx: 图层1自加1 = \"+text(data1.x)); Commentary(\"OnBary: 图层1自加1 = \"+text(data1.y));}