我在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版本6.28
发布于 2018-08-05 09:05:22
尝尝这个。
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://stackoverflow.com/questions/51638171
复制相似问题