使用 Python 和 MetaTrader5 python 软件包及 ONNX 模型文件进行深度学习预测和排序(基础篇)
📘

使用 Python 和 MetaTrader5 python 软件包及 ONNX 模型文件进行深度学习预测和排序(基础篇)

第 1/3 篇

「用 Python 接 MT5 跑 ONNX 深度学习排序」

在 MT5 生态里,除了 MQL5 原生指标,还能用 Python 的 MetaTrader5 包直接拉取报价与历史柱,再喂给 ONNX 格式的深度学习模型做预测与信号排序。这套做法把模型推理挪到 Python 端,MQL5 只负责执行,规避了终端内跑重模型的性能瓶颈。 实际部署时,先 pip 安装 MetaTrader5 与 onnxruntime,用 mt5.initialize() 连上本地终端,再通过 mt5.copy_rates_from_pos() 取指定品种的最近 N 根柱。作者 Javier 在 2024 年 8 月 19 日发布的这套方案,原文页面显示 2046 次浏览、4 条讨论,说明外汇与贵金属圈对轻量 AI 接入的需求已经不小。 要注意:外汇和贵金属属高杠杆品种,模型输出只是概率排序,不是方向保证;任何预测在 MT5 里都先用模拟盘验证参数稳定性,再谈实盘。

◍ 用 Python 跑模型,让 MT5 下单

深度学习本质是多层神经网络自动从数据里抽特征,不用手写规则。对交易者来说,它的价值不在学术,而在于你能拿历史 tick 或 K 线训一个判势模型,再把它接到实盘终端。 关键零件就那几个:神经网络靠层叠节点学复杂模式;激活函数塞进非线性,不然三层和一层没区别;反向传播按预测误差回退调权重。训练用带标签数据最小化误差,这一步直接决定模型在行情里是赚钱概率高还是过拟合。 Python 是干这事最省力的语言。NumPy、pandas 洗数据,TensorFlow、PyTorch 搭网训模,社区里现成片段一搜一大把。但 Python 本身下不了单,得和 MQL5 打通。 具体链路:先用 TensorFlow/PyTorch 写脚本训好策略模型,输出买卖信号;通过 socket 或 REST API 把信号传给 MT5;MQL5 的 EA 里用平台交易函数接信号、发订单。外汇和贵金属杠杆高、滑点跳空频繁,这条链路里任何一环延迟都可能让信号失效,实盘前务必在策略测试器里跑通全流程。

在 MT5 里跑别人的 AI 模型

ONNX 是微软和 Facebook 推的开源模型交换格式,本质是不同深度学习框架之间的中间文件。你用 PyTorch 训好的网络,转成 .onnx 后,TensorFlow 那边也能直接读,不用重写结构。 对做贵金属和外汇的人来说,关键点在于:MetaTrader 5 从 MQL5 侧原生支持加载 ONNX。也就是说,你可以把训练好的模型丢进 EA,让策略在行情里直接调神经网络做推断,而不是只靠硬编码规则。 这类跨框架集成简化了部署,但外汇/贵金属杠杆高、滑点跳空频繁,模型在历史样本上表现好不等于实盘概率占优,上线前务必在 MT5 策略测试器用 Tick 级数据回测。

「接下来要拆的深度学习交易链路」

后面几篇会直接进代码层,把一个用深度学习做自动交易的程序拆开讲。核心不是炫模型,而是用平均绝对误差(MAE)、均方误差(MSE)和 R 平方(R2)这三个指标去压模型的预测准确性与稳健性,你可以在 MT5 里对照回测报告自己复算一遍。 另一块实务是把 Python 训练脚本(.py)打包成可执行文件,避免目标机器缺环境跑不起来;这一步做完,整套方案才谈得上「能分发」。 收尾我会给一个生成 ONNX 的脚本,专门用来把训练好的模型塞进 MT5 的 EA 里。ONNX 在 MT5 里走的是原生推理接口,比远程调 Python 快得多,也更适合做高频次的贵金属与外汇信号判断——这两类品种杠杆高、滑点跳空频繁,实盘前务必用历史数据跑通再上。

◍ 先把 Python 环境搭起来

我们要做的 Python 机器人分两步走:先用深度学习啃完行情数据,再下交易指令。MT5 能拉到海量分时报价,策略上就是把这些原始 tick 拖下来,转成两个相邻分时报价取均值的价格序列,量降下来才好让模型跑分析和决策。 动手写代码前,环境得先就位。最省事的做法是装 Anaconda 管 Python 环境,再配个 Visual Studio Code 写脚本,界面比裸终端舒服太多。 装完 Anaconda 和 VS Code,下一步是在 VS Code 集成终端(或 Anaconda Prompt)里用 pip 把项目依赖拉齐。下面这行是骨架,把方括号里的包名换成你实际要用的就行。外汇与贵金属杠杆高、滑点凶,环境没配稳之前别急着接实盘。

MQL5 / C++
pip install [package1] [package2] ...

接好 Python 到 MT5 的那根线

要在本地用 Python 驱动 MT5 做价格行为研究,先得把运行环境拼齐。除了 Anaconda 自带的科学计算库,核心就三块:MT5 终端、MetaTrader5 的 Python 包、以及 TensorFlow 这类建模库。 MT5 本身只是个交易平台,Python 侧需要单独的接口包才能通信。截至 2022 年 1 月,官方发行版仍没有直接可用的原生 Python API,社区里存在第三方封装(如 metatrader5 包),版本和可用性随平台更新浮动,动手前建议先查当前官方文档或论坛确认。 装包本身不复杂,两条 pip 命令就能把 MT5 接口和 TensorFlow 拉进环境。注意:外汇与贵金属杠杆交易高风险,接口连通不代表策略有效,后续所有信号都只是概率倾向,需用历史数据回测验证。 [CODE] pip install MetaTrader5 pip install tensorflow [/CODE] 跑完这两条,在 Python 里 import MetaTrader5 不报错,基本就算把数据通道打通了。接下来换周线还是 Tick 级,全看你想验证哪类价格行为假设。

常见问题

先装好 Python 3.8+ 和对应的交易终端 Python 包,再用 pip 装 onnxruntime,最后用终端包的连接函数拉取行情和持仓数据即可。
用 Python 把候选品种特征喂给 ONNX 模型推理,按输出分数降序排,再把前几名传给 MT5 下单接口,注意外汇贵金属高风险需先模拟验证。
小布可内置 AIGC 诊断,自动拉取品种页特征并跑轻量模型排序,你只需打开对应页面看结果,不必自己写连接代码。
多是终端没开「允许算法交易」或 Python 端账号没登录,检查终端设置里的 DLL 和自动交易开关,重连一次通常就好。
下一步会拆特征工程与模型训练链路,即怎么从裸 K 线和成交量做出 ONNX 能吃的输入张量,建议先巩固 Python 环境部分。