关于跨周期情况下数组被循环赋值的问题

我在跨周期找形态的时候,想寻找顶底分型。我是通过数组弄的,用数组记录每个满足情况的分型的高低点,再去比较分型的高低。

但这里遇到个问题。onbar里,每根bar程序运行一次,就导致小周期运行的时候,我的大周期数组被循环赋值。最后,大周期一个周期内,比如在一天之内,小周期运行了10遍,就把我数组里的数全部赋值成了同一个数。

我已经设置了分图层运行(range),但还是解决不掉range[1:1]里的数组在每个小周期上都运行的问题

OnBar(ArrayRef<Integer> indexs)

{

range[0:0]

{

If( (c[2]>c[1] and c>c[1]))

{

for i = 0 to 3

{

difenxing_arr[i] = difenxing_arr[i + 1];

}

difenxing_arr[4]=data0.c[1];

}

If(c[2]<c[1] and c<c[1])

{

for i = 0 to 3

{

dingfenxing_arr[i] = dingfenxing_arr[i + 1];

}

dingfenxing_arr[4]=data0.c[1];


}

}

///////////////////////////////////////////////////

range[1:1]

{

If( (c[2]>c[1] and c>c[1]))

{

for i = 0 to 3

{

upper_difenxing_arr[i] = upper_difenxing_arr[i + 1];

}

upper_difenxing_arr[4]=data1.c[1];

}

If(c[2]<c[1] and c<c[1])

{

for i = 0 to 3

{

upper_dingfenxing_arr[i] = upper_dingfenxing_arr[i + 1];

}

upper_dingfenxing_arr[4]=data1.c[1];


}

}

请老师帮我看下如何解决

关于跨周期的问题
关于跨周期的问题
quant3关于跨周期引用的问题
数组赋值问题
关于跨周期报错的问题
不同周期同品种跨bar数组调用
关于跨数据源变量赋值的问题
数组赋值
求助TB旗舰版数组赋值
数组和变量序列相互赋值问题

如果你的数组是global,每次驱动后保证不会清空,那其实可以试试用驱动参数indexes来限定一下,只有某个图层驱动才执行对应的代码

驱动参数可以看看零基础里关于行情驱动onbar的介绍说明,简单来说就是这个indexes里存放了本次参与行情更新驱动的图层编号

谢谢老师,经过修改可以用了。但还有个未来函数的问题。修订后的代码如下:

OnBar(ArrayRef<Integer> indexs)

{

if(GetArraySize(indexs)==2)

{ Range[1:1]

{

If( (c[2]>c[1] and c>c[1]))

{

for i = 0 to 3

{

upper_difenxing_arr[i] = upper_difenxing_arr[i + 1];

}

upper_difenxing_arr[4]=c[1];

}

If(c[2]<c[1] and c<c[1])

{

for i = 0 to 3

{

upper_dingfenxing_arr[i] = upper_dingfenxing_arr[i + 1];

}

upper_dingfenxing_arr[4]=c[1];


}

}

}

if(GetArraySize(indexs)==1)

{

If( (c[2]>c[1] and c>c[1]))

{

for i = 0 to 3

{

difenxing_arr[i] = difenxing_arr[i + 1];

}

difenxing_arr[4]=c[1];

}

If(c[2]<c[1] and c<c[1])

{

for i = 0 to 3

{

dingfenxing_arr[i] = dingfenxing_arr[i + 1];

}

dingfenxing_arr[4]=c[1];


}

但我发现这里有个未来函数的问题,比如index[0]是5min,index[1]是一天,我去定义大级别底分型的时候,其实当天的bar还没走完。但在回测中,当天的bar是在当晚00:00分生成的。有没有办法通过设置,让当天bar对齐15:00,这样避免了未来函数,回测也更准确。

看不懂什么意思,日线bar不是当晚00:00生成的,你是怎么得出这个结论的

历史bar的驱动是按k线一根一根走的,如果你是5min和1日,那么当天每一根5min都要一根一根走过去,对应的日线bar一直是同一根