如何将这么长的赋值语句转换成Amibroker中的函数?
How to make convert this long assignment statement into a function in 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
试试这个。
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。
我在 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
试试这个。
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。