如何在Amibroker中将该长赋值语句转换为函数?

时间:2018-08-01 16:28:02

标签: amibroker

我在Amibroker中有很长的任务说明。

num_times_above = iif(Ref(CLOSE, -0)>Ref(CLOSE, -4) , 1, 0)
                    + iif(Ref(CLOSE, -1)>Ref(CLOSE, -4), 1, 0)
                    + iif(Ref(CLOSE, -2)>Ref(CLOSE, -4), 1, 0)
                    + iif(Ref(CLOSE, -3)>Ref(CLOSE, -4), 1, 0)
                    + iif(Ref(CLOSE, -4)>Ref(CLOSE, -4), 1, 0)
                    ;

我想将此长语句转换为接受参数n的泛型函数。

function get_num_times_above(n)
{
  //code
}

最上面的代码用于n == 4的情况。由于Amibroker中使用的数组格式,我陷入了这个看似简单的问题。

如果n == 3,则等效代码为;

num_times_above = iif(Ref(CLOSE, -0)>Ref(CLOSE, -3) , 1, 0)
                    + iif(Ref(CLOSE, -1)>Ref(CLOSE, -3), 1, 0)
                    + iif(Ref(CLOSE, -2)>Ref(CLOSE, -3), 1, 0)
                    + iif(Ref(CLOSE, -3)>Ref(CLOSE, -3), 1, 0)
                    ;

我正在使用Amibroker ver6.28

1 个答案:

答案 0 :(得分:1)

尝试一下。

function get_num_times_above(n)
{
    num_times_above = 0;
    refn = Ref(C, -n);
    for (i=0; i<n; i++) 
        num_times_above += Ref(C, -i)>refn;
    return num_times_above;
}   

信用归于fxshrat,后者在此处提供了答案。

https://forum.amibroker.com/t/how-to-make-convert-this-long-assignment-statement-into-a-function/7181/2