【问题标题】:How to make convert this long assignment statement into a function in Amibroker?如何将这个长赋值语句转换为 Amibroker 中的函数?
【发布时间】:2018-08-01 16:28:01
【问题描述】:

我在 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

【问题讨论】:

    标签: amibroker


    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多