首页 / 交易学院 / 用 ENCOG 机器学习框架做 MQL5 时间序列预测
用 ENCOG 机器学习框架做 MQL5 时间序列预测
🤖

用 ENCOG 机器学习框架做 MQL5 时间序列预测

MQL5 编程 难度 · 高阶 2012 13 分钟阅读
ENCOG机器学习RPROP

为什么选 ENCOG

ENCOG 是 Heaton Research 开发的高级神经网络/机器学习框架,被选中有几个硬理由:

网络结构:RPROP 前馈

弹性传播(RPROP)前馈网络用梯度符号独立调整每层步长,对中小样本金融序列比普通反向传播更稳,不易陷局部极小。

输入特征:StochK / WilliamsR

随机振荡指标与威廉指标都是界内振荡量,归一化稳定,且对超买超卖敏感,适合作为方向特征。归一化到 [0,1] 或 [-1,1] 是训练前提。

// 归一化到 [0,1]
double normalize(double x, double min, double max)
   { return (x - min) / (max - min); }
double deNormalize(double x, double min, double max)
   { return min + x * (max - min); }

// 输入: 过去 N 根 StochK, WilliamsR
double input[FEAT];
input[0] = normalize(iStochastic(...), 0, 100);
input[1] = normalize(iWilliamsR(...), -100, 0);

导出与训练

MQL5 负责特征工程,把样本导出给 ENCOG(C#/Java 环境)训练;预测时可加载模型或经 DLL 调用。导出格式用 CSV 最简单。

// 把 MQL5 特征导出给 ENCOG 训练
void ExportToEncog(double &inp[], double &out[])
{
   int fh = FileOpen("encog_train.csv", FILE_CSV|FILE_WRITE, ',');
   for(int i=0;i<ArraySize(inp);i++) FileWrite(fh, inp[i]);
   FileClose(fh);
}

关键注意

⚠ 训练四忌
1) 必须归一化,否则梯度爆炸;2) 样本外切分防过拟合;3) 网络别太深,金融小样本易记忆;4) 特征比网络结构更关键。

小结

✦ 分工明确
ENCOG 负责学习,MQL5 负责特征与执行。把精力放在特征工程与样本质量上,比纠结网络层数收益更高。

常见问题

RPROP 用梯度符号调步长,对中小样本金融序列更稳,不易陷局部极小。
它们是界内振荡指标,归一化稳定,且对超买超卖敏感,适合做方向特征。
通常在外部 C#/Java 环境训练,MQL5 负责导出特征与加载预测;或本地调用 DLL。