amibroker - 如何将这个长赋值语句转换为 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。
推荐阅读
- node.js - 从 nodejs requet 获取响应
- java - 在日历中使用事件名称而不是电子邮件主题
- reactjs - 使用 @steveeeie/react-page-transition 时组件不渲染
- swift - 通过 Unity 使用 ARKit 创建的 ARWorldMap 的持久性
- python - 无法通过 websockets 连接(daphne、django、nginx、docker)
- sparql - 如何从 Protege 运行 SPARQL-select 到 Wikidata?
- react-admin - React-admin 过滤器没有更新 GRID,排序也不起作用,使用带有默认数据提供者的 JSON 服务器
- ubuntu - 在 Ubuntu 上从源代码安装 apache 时出现问题
- reactjs - 如何解决 firebase 数据库的延迟?
- sql - 如何使用 nulls postgresql 自我加入