首页 / 交易学院 / 在 MQL5 中连接 NeuroSolutions 神经网络
在 MQL5 中连接 NeuroSolutions 神经网络
🧠

在 MQL5 中连接 NeuroSolutions 神经网络

MQL5 编程 难度 · 高阶 2011 13 分钟阅读
神经网络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 稳定性;务必留出样本外测试与严格资金管控。