TL;DR
- ONNX是一种开源格式,可以直接在MT5中运行ML模型——无需外部服务器。
- MetaTrader 5从build 3600+开始原生支持ONNX Runtime。
- 没有.onnx文件的EA不是真正的机器学习。
- Karat Killer使用4个ONNX模型进行XAUUSD集成交易。
什么是ONNX?为什么交易者应该关注
ONNX(Open Neural Network Exchange)是机器学习模型的开源格式。你在Python中训练模型,导出为.onnx格式,然后在MetaTrader 5中直接运行——无需外部服务器或API。
MetaTrader 5原生支持ONNX Runtime。模型在终端内以C++速度运行,零外部依赖。ONNX之前,在MT5中运行ML需要硬编码权重、HTTP调用Python服务器或DLL导入——都有严重缺陷。
ONNX项目由Microsoft、Meta、Amazon等支持,是行业标准。
ONNX在MetaTrader 5中的工作原理
MetaQuotes从build 3600+添加了原生支持。流程如下:
- 训练:在Python中训练模型,进行特征工程和walk-forward验证
- 导出:使用
onnxmltools导出为.onnx格式 - 嵌入:将.onnx文件作为MQL5 EA的资源
- 运行:使用
OnnxCreate()、OnnxRun()、OnnxRelease()
关键函数:OnnxCreate()加载模型,OnnxRun()执行预测,OnnxSetInputShape()配置张量维度。推理速度低于1毫秒。
ONNX为何是EA开发的革命性技术
ONNX解决了五个关键问题:
- 框架独立:XGBoost、LightGBM、PyTorch都导出为相同的.onnx格式
- 无外部依赖:模型在MT5进程中运行,无需服务器或网络
- 策略测试器兼容:可以用10+年的tick数据回测ML EA
- 无需修改代码即可更新模型:替换.onnx文件即可
- 多模型架构:MT5可同时加载多个ONNX模型进行集成
ONNX训练工作流程(分步指南)
步骤1:特征工程——将原始价格数据转换为有意义的特征。80%的工作在这里。
步骤2:训练与验证——Walk-forward验证是标准方法。绝不能对时间序列使用随机分割。详见机器学习EA:炒作vs现实。
步骤3:ONNX导出——使用onnxmltools导出,文件大小100KB-5MB。
步骤4:MQL5集成——嵌入.onnx资源,在OnInit()加载,OnTick()预测。
步骤5:策略测试器验证——包括样本外期间的完整回测。
集成模型:为什么一个ONNX不够
在竞争性ML中,单一模型很少获胜。集成方法一致地超越单个模型。
- XGBoost——非线性关系
- LightGBM——速度和高维效率
- CatBoost——抗过拟合
- 神经网络——复杂时间模式
Karat Killer EA使用4个ONNX模型并行运行进行XAUUSD交易。只在集成达成共识时才执行交易。回测结果:10年XAUUSD数据+7,229%。
ONNX与MT5中其他AI方法的比较
| 方法 | 优点 | 缺点 | 适合 |
|---|---|---|---|
| ONNX Runtime | 原生支持、快速、可回测 | 需要ML专业知识 | 生产级ML EA |
| 外部API | 完整Python生态 | 延迟、可靠性 | 研究 |
| 硬编码权重 | 简单 | 脆弱、有限 | 非常简单的模型 |
| DLL导入 | 完全灵活 | 安全风险、MQL5市场禁止 | 机构系统 |
| 仅"AI"标签 | 易于营销 | 不是真正的AI | 营销(不幸地很常见) |
BLODSALGO如何使用ONNX(真实架构)
Karat Killer——4个ONNX模型的XAUUSD集成:
- XGBoost、LightGBM、CatBoost和深度神经网络
- 60+工程特征
- 共识系统:4个模型必须一致
- 回测:+7,229%,10年数据
Stability Killer AI——AUDCAD ML:
- 最大回撤:4.08%
- 实盘增长:+15.6%
两个EA都包含.onnx文件作为嵌入资源。更多关于黄金和AI的内容:XAUUSD的AI和机器学习。
在自己的EA中开始使用ONNX
前提条件:Python 3.8+、MetaTrader 5 build 3600+、ML基础知识、5+年历史数据。
最小示例:
int handle = OnnxCreate("model.onnx", 0);OnnxSetInputShape(handle, 0, input_shape);OnnxRun(handle, 0, features, prediction);OnnxRelease(handle);
常见错误:特征不匹配、张量形状错误、过拟合、归一化不一致。参考MetaQuotes ONNX文档。
ONNX在算法交易中的未来
MT5中的ONNX采用仍处于早期阶段。未来趋势:Transformer模型、强化学习、更大特征集、自动重训练。
理解ONNX是评估EA的实用技能——区分真正的ML产品和营销标签。寻找.onnx文件,询问训练方法论。
FAQ:MetaTrader 5中的ONNX模型
- 哪个版本的MT5支持ONNX?
- 从build 3600+开始。
- ONNX会减慢EA吗?
- 影响极小。每次预测不到1毫秒。4模型集成每tick增加2-3ms。
- ONNX能在策略测试器中使用吗?
- 是的——原生支持,这是最大优势之一。
- 哪些框架可以导出ONNX?
- scikit-learn、XGBoost、LightGBM、CatBoost、PyTorch、TensorFlow等。
- 如何验证EA是否真的使用ONNX?
- 在MetaEditor中检查Resources标签。没有.onnx文件=没有ML。
- ONNX在VPS上能用吗?
- 可以。在MT5进程内运行,兼容所有系统。
Risk Disclaimer: Trading foreign exchange, gold (XAUUSD), and other financial instruments involves significant risk of loss and is not suitable for all investors. The information in this article is for educational purposes only and does not constitute financial advice. Past performance of any Expert Advisor does not guarantee future results. Always test strategies on a demo account before trading with real capital, and never risk money you cannot afford to lose.