不同周期数据的函数计算机制
2022-03-17 16:05

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取数据。

评论区
顶部