🧠
在 MQL5 中连接 NeuroSolutions 神经网络
神经网络DLLNeuroSolutions
为什么用 NeuroSolutions
NeuroSolutions 提供可视化的网络搭建、训练与测试,且第 5 版拥有成熟的 DLL 接口,方便从外部程序(如 MQL5 EA)调用训练好的网络做实时预测。
策略构思:WeekPattern
示例策略很简单:D1 新柱开盘时,用前 5 根 K 线的 OHLC 预测当根收盘方向,据此做多或做空并持有整天。预测基于“相对当前开盘价的变化量”而非价格本身,以提升泛化。
导出训练数据
先用 MQL5 脚本把客户端历史按网络要求的格式导出为 CSV:每行 = 过去 5 根 OHLC(输入)+ 当前收盘(输出),逐根平移构造样本。
// WeekPattern-Export.mq5
void OnStart(void)
{
int fh = FileOpen("weekpattern.csv", FILE_CSV|FILE_WRITE, ',');
for(int i=rates_total-1; i>0; i--)
{
// 写 过去5根OHLC(输入) + 当前收盘(输出)
FileWrite(fh, Open[i-5], High[i-5], Low[i-5], Close[i-5],
Open[i-4], High[i-4], Low[i-4], Close[i-4],
..., Close[i]);
}
FileClose(fh);
}
在 EA 中调用网络 DLL
NeuroSolutions 生成 DLL(如 NSNetwork.h),MQL5 用 #import 声明函数,把实时特征喂入网络取预测输出。
#import "NSNetwork.h" bool CalcNeuralNet(double &inputs[], double &output[]); #import // 实时把当前 OHLC 变化量喂入网络 double inp[20]; // ... 填充相对开盘价的变化量 ... double out[1]; if(CalcNeuralNet(inp, out)) Trade(out[0] > 0.5 ? BUY : SELL);
关键注意
⚠ 三个雷区
1) 训练用“相对开盘价的变化量”而非价格本身,提升泛化;2) DLL 位数(32/64)须与终端匹配;3) 神经网络极易过拟合,必须留出样本外验证。
小结
✦ 各司其职
神经网络负责“预测”,EA 负责“风控与下单”。不要把仓位决策也塞进网络,保持职责分离才好调试与回测。
常见问题
变化量对价位尺度不敏感,训练集与实盘分布更接近,泛化更好。
通过 NeuroSolutions 生成的 DLL(如 NSNetwork.h),用 #import 声明函数,喂输入取输出。
过拟合历史与 DLL 稳定性;务必留出样本外测试与严格资金管控。