不同周期数据的函数计算机制
result1 = Summation(data1.CurrentBar,6); result2 = data1.Summation(data1.currentbar,6); 考察这两行代码。 result1 和 result2 计算的都是最近6根bar的currentbar序号的和,区别仅仅在于外面的summation一个是基于图层data0,一个是基于图层data1. 如果图层1和2的周期一致,函数summation的运行结果是一致的。 如果图层1和2的周期不一致,我们能看到结果有明显的区别。 我们设置data0为30分钟,data1为1小时 OnBar(ArrayRef<Integer> indexs) { Numeric result1; Numeric result2; commentary("currentbar="+text(data1.CurrentBar)); result1 = Summation(data1.CurrentBar,6); result2 = data1.Summation(data1.currentbar,6); Commentary("result1="+text(result1)); Commentary("result2="+text(result2)); } result1 = 161 = 29 + 28 + 27 + 26 + 26 + 25 result2 = 159 = 29 + 28 + 27 + 26 + 25 + 24 对于函数来说,前缀的图层决定了他向前回溯的主序列是哪个图层。如果函数是data0,数据是data1,那么实际的计算过程就是在data0上逐一向前回溯,然后根据data0bar对应的data1bar取数据。