首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Amibroker中将这个冗长的赋值语句转换为函数?

如何在Amibroker中将这个冗长的赋值语句转换为函数?
EN

Stack Overflow用户
提问于 2018-08-02 00:28:02
回答 1查看 75关注 0票数 0

我在Amibroker中有一个很长的赋值语句。

代码语言:javascript
复制
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的泛型函数。

代码语言:javascript
复制
function get_num_times_above(n)
{
  //code
}

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

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

代码语言:javascript
复制
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版本6.28

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-05 09:05:22

尝尝这个。

代码语言:javascript
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51638171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档