问题描述
我有一堆保存在 MQL5/Files 中的 csv 文件和一个函数(目前仅)将一个 csv 读取到一个名为 output_arr[]
的数组中。函数原型为:
void ReadCsvData(double &output_arr[],string ticker,string column="close")
例如通过提供 ticker="AAPL"
和 column="close"
,它将用 Apple 股票的所有收盘价填充 output_arr[]
:
int OnInit() {
double output_arr[];
ReadCsvData(output_arr,"AAPL","close");
// safety check: print first 10 values to Expert Log
for(int i=0; i<10; i++) {
Print(i," ",DoubletoString(output_arr[i],2));
}
return(INIT_SUCCEEDED);
}
现在,我的计划是采用 output_arr[]
(即具有收盘价、开盘价、最高价、最低价...价格或成交量的双打数组)并计算该数组的相对强度指数。除了 RSI,我还计划在其他一些指标上重复这个过程,包括代码库中的指标和 .mq5 格式的在线指标。
我知道在 MQL4 中存在一些 i...OnArray()
函数,而在 MQL5 中这些被删除了。我发现 Migrating from MQL4 to MQL5 article 有这些 i...OnArray()
函数的空单元格,但同一篇文章的俄文版本实际上包含一些有用的东西:这些单元格重定向到 this article on Applying One Indicator to Another。
我还发现了一些论坛帖子,例如 this one from 2017,提出了与我非常相似的问题。上面链接的文章和论坛帖子中推荐使用 Oncalculate()
函数的回复:
int Oncalculate(const int rates_total,// size of the price[] array
const int prev_calculated,// bars handled on a prevIoUs call
const int begin,// where the significant data start from
const double& price[] // array to calculate
);
“参数价格可以在指标的设置对话框中指定为来自其他指标的自定义数组。” - Stanislav Korotky 于 2017 年 8 月 20 日引用。
但是,如果我理解正确的话,这种方法并不完全适用于我的需求,因为我需要一个 EA(而不是一个新的指标文件)来执行 IO 操作和计算 RSI 值(分解它:(1)读取 csv 并将其加载到数组中,(2)计算数组上的 RSI,(3)将计算出的 RSI 值保存到新的 csv)。我还没有找到更适合我需要的具体文章或论坛帖子,我现在对如何在单个阵列上实现简单的 EA 计算 RSI 感到有些困惑。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)