刚才赋值的问题我大概还能想明白,现在这个像灵异现象,百思不得姐。老师来给瞧一下吧。
测试代码如下:
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));
}
我来调下
补充下,onbar是没问题的,所以更奇怪了