神经网络在交易中的实际应用。 是时候进行实践了(基础篇)
📘

神经网络在交易中的实际应用。 是时候进行实践了(基础篇)

第 1/3 篇

「在 MT5 里跑通第一个神经网络实验」

把神经网络真正接进交易流程,第一步不是调模型,而是先确认你的 MetaTrader 5 终端能加载自定义指标与 EA,并且允许 DLL 导入(多数神经网络推理库依赖此选项)。 根据 2020 年 10 月 9 日某公开示例帖的社区数据,该入门级神经网络交易示例在发布后获得 5,581 次查看与 14 条讨论,说明即便是最基础的 MQL5 + 神经网络 demo,也足以让有经验的交易者动手验证。 建议直接新建一个 EURUSD 的 M1 图表,把示例 EA 挂上去用历史数据跑一遍;外汇与贵金属杠杆品种波动剧烈,实盘前务必先在策略测试器里确认信号延迟与重算频率,避免过拟合带来的概率偏差。

EURUSD 上跑通的 NNM 实战起点

本篇直接拿 EURUSD 做 NNM(神经网络模块)的实盘化验证,目标不是讲理论,而是把模块塞进 EA 跑起来。NNM 本身是通用架构,能同时挂多个不同货币对训练出来的网络,但首轮我们只锁定欧美这对高流动性品种,便于你开 MT5 对照复现。 作者把原属于 EA 的一部分交易触发条件挪进了 NNM,让模块只输出二元信号(买/卖),训练和优化的活儿留在外部做。这样做的好处是 NNM 在真实账户里极简,只管下单判断,回测与参数搜索仍由智能交易系统离线完成。 依据经纪商历史数据做长周期测试,该 NNM 在很长一段测试期内给出了正向结果;不过作者认为把这部分测试也统一进模块意义不大,留给你自己换数据源验证。外汇与贵金属杠杆高,实盘前务必用策略测试器跑通样本外数据。 文末附了一段短视频,后续会讲 Matlab 筹备与训练细节,未来还可能迁到 Python。下图是模块启动时的初始界面,你可以先对照自己的 NNM 加载状态。

◍ Online 与 Offline 模块的启动逻辑

Online 模块只在实盘或可视模式回测里负责神经网络的启停,触发条件是信息字段中信号曲线与神经网络响应曲线发生交叉。Offline 模块则把网络对测试样本的响应写进数组,不参与实时决策,两者分工很硬。 Train 属于演示模块,用来做初训和再训练;Net1/2/3 是三个子模块,各自覆盖时间序列的不同段,每个里面包两个神经网络。左侧画神经网络响应、右侧画信号线、下侧当前柱上侧前一根,这是响应值输出字段的默认排布。 Online 模式下有几个可编辑字段值得盯:神经网络响应曲线平均值对应的信号线周期、以小时计的 NNM 运行时间,以及模块结束时间;系统同时会计算自启动后已跑了多少小时。把这些值调准,才能在 MT5 里复现交叉触发。

「随包文件各自干什么」

这套神经网络模块交付时不是单个 EA,而是一整包文件,搞清楚每个文件职责才能少踩坑。 MyAppInstaller_mcr.exe 是安装器,EURUSD_MT5.exe 是神经网络主模块,EURUSD_MT5var.exe 是它的一个变体,二者都只在 EURUSD 的 MT5 环境下跑。 net1-net6.mat 实际是 Net1-Net3 三个子网及示例权重,既用于训练也用于测试参照;EURUSDData.csv 则装着训练数据,想重训就得动它。 ExpertMatlabPodkach_MT5.mq5 与 ExpertMatlab_MT5.mq5 两个 EA 只干一件事:为离线测试准备历史数据;NWI.mq5 是指标,把 NNM 的响应画出来方便肉眼看。 Matlab_MT5.mq5 进策略测试器做优化,ExpertMatlabReal_MT5.mq5 才接实盘或模拟账户在线跑,也能在可视化模式回测。外汇及贵金属杠杆高、滑点跳空频繁,实盘前务必用前两类 EA 校完数据再上真金。

首次运行前先装运行时

经 Matlab 编译的 EA 不能直接扔进 MT5 就跑。第一次使用前必须执行一次 MyAppInstaller_mcr.exe,它会把 MATLAB Runtime 和神经网络模块(NNM)本体写入系统,否则 EA 启动会找不到依赖。 安装完成后,安装器会在数据目录的 ...\Common\Files 里生成 EURUSD_MT5.exe 的快捷方式。这个目录是所有智能交易系统和 NNM 的共享工作区——EA 写文件、NNM 搜文件都认这里,相当于给整条管线定了一个公共盘。 实际操作分两步:先通过快捷方式 EURUSD_MT5 分配一个工作文件夹,再在 EA 参数里把路径指过去。路径指错,NNM 就扫不到训练好的权重文件,EA 会空跑或报错。外汇与贵金属杠杆高,先用模拟盘验证这套安装链路再上实盘。

◍ 把 NNM 跑通前先在 MT5 里排雷

NNM 落地有四条路径:模拟/实盘在线交易、可视化测试、神经网络训练、离线接收响应做策略优化。前三条和第四条都绕不开一个动作——先用 ExpertMatlabPodkach_MT5.ex5 在策略测试器里生成历史下载文件 EURUSDTestPodkach.csv,且启动时间要覆盖操作日前三天,否则 EA 会弹警告、出假信号。 实盘或模拟启动时,EA 往 ...\Common\Files 写 Input_mat.txt,NNM 读完后图表左上角回三类数:1.0 / -1.0 / 0.0 分别对应买、卖、观望;本评估版里 Net1、Net2 不吐可变信号,仅 Net3 给买卖。系统用 5 小时平滑响应线,故需提前 5 小时开模块吃满预热,否则首信号易假。 作者边写边跑「纠正错误」那段最值得抄:用 Net1 子模块输出字段(4)的响应,对比 ExpertMatlab_MT5.ex5 收到的 NNM 响应,发现二者对不上。追到 ExpertMatlabReal_MT5.mq5 里缺了「数据偏移置零」的主条件,终端喂给网络的数据错位,神经网络照常算但对你来说是假响应。补完再比,输入对齐了。 还没完。修复后可视化测试结果仍和参考差一大截,NNM 还自断了。继续翻到 ExpertMatlabReal_MT5.mq5 空头平仓条件有错;切到 1 分钟 OHLC 可视化重测,还是不匹配参考。根因是加速测试里 NNM 回传延迟,EA 按旧信号成交——这种劣化环境反而能暴露系统在乱流里的表现,但提醒一句:外汇/贵金属杠杆高,这类延迟在实盘可能放大滑点亏损。 落地动作很具体:开 MT5,载 ExpertMatlabPodkach_MT5.ex5 生成 csv,删到只留启动日前最后一小时那行;再载 ExpertMatlabReal_MT5.ex5,盯左上角数字和 Input_mat.txt 是否同值。任何一步对不上,先查 mq5 里数据偏移与平仓条件,别急着调网络参数。

常见问题

先装好对应的神经网络运行时组件,再把随包里的离线训练与在线预测模块都放进指定目录,否则首次启动会直接报错。
基础篇默认用小时图、几千根 K 线做离线训练样本,样本太少容易过拟合,建议先按随包示例参数跑通再调。
小布可以替你监控品种页的神经网络信号状态,并把离线训练与在线预测模块的异常直接标出来,你只管看结论。
Offline 先跑历史样本训练出权重,Online 再加载权重做实时推断;训练没完成前别开 Online,否则用的是空模型。
随包里配置管参数、模型管权重、运行时管执行;缺哪个就补哪个到对应文件夹,排雷时重点看路径是否放错。