ONNX Trader clusters
该EA使用两个ONNX神经网络模型——主模型和元模型——生成EURUSD的二元分类交易信号。主模型预测交易方向(买入/卖出),元模型作为置信度过滤器,仅在其输出超过阈值时允许交易。它以固定止损/止盈和基于风险比例的仓位管理执行交易。
打开交互版(权益曲线、切换品种)基本信息
回测结果(H1,约 1 年)
| 品种 | 盈亏 | 年化 | 最大回撤 | 交易数 | 胜率 | 夏普 | 恢复因子 | 最长连亏 | 每笔期望 | 状态 |
|---|---|---|---|---|---|---|---|---|---|---|
| EURUSD | 0.00% | 0.00% | 0.00% | 0 | — | — | — | — | — | 暂不支持转换 |
| GBPUSD | 0.00% | 0.00% | 0.00% | 0 | — | — | — | — | — | 暂不支持转换 |
| USDJPY | 0.00% | 0.00% | 0.00% | 0 | — | — | — | — | — | 暂不支持转换 |
| XAUUSD | 0.00% | 0.00% | 0.00% | 0 | — | — | — | — | — | 暂不支持转换 |
这个 EA 从未交易的原因:转换后没有留下任何开仓规则。
由 MQL5 自动转换为 Python,所有 EA 使用同一套规则回测:按 MT5 手数计仓(外汇每手 10 万单位、黄金每手 100 盎司),1:100 杠杆,同一时间只有一张挂单,净值跌破初始资金 10% 时强平。夏普比率按权益曲线计算。标为不可靠的结果仅供参考。
爆仓风险: 未发现爆仓模式
代码里没有发现常见的爆仓模式,回测中账户也没有爆仓。但这不是保证,任何 EA 都可能亏钱。
高:回测中爆仓,或使用马丁/网格加仓且不设止损。偏高:马丁或网格加仓但有止损,或不设止损且可同时持有多个仓位。 标签的含义和我们的发现 →
策略分析
策略概念基于双模型机器学习架构:主模型输出分类概率作为方向信号,元模型输出概率作为信号置信度过滤。入场条件为:当元模型概率大于meta_threshold时,若主模型概率小于(1-main_threshold)则买入,若大于main_threshold则卖出;买入信号低于0.5意味着模型预测上涨概率更高,卖出信号高于0.5则预测下跌概率更高。出场条件为:当元模型确认时,若持有多头且主模型信号大于main_threshold则平多仓,若持有空头且主模型信号小于(1-main_threshold)则平空仓。仓位管理通过MaximumRisk参数按账户可用保证金比例计算手数,也支持固定手数ManualLot,并有最小/最大手数限制和手数步长规范化。资金管理使用CheckMoneyForTrade函数在下单前检查保证金是否充足,防止因资金不足导致订单失败。
优势
- 双模型架构设计合理,元模型作为置信度过滤器能有效减少低质量信号的交易
- 使用ONNX模型进行推理,能够捕捉非线性市场特征,比传统技术指标更有潜力
- 包含完整的资金管理检查(保证金验证、手数规范化、最小/最大手数限制)
劣势
- 无限重试循环(do-while res==-1)可能导致无限阻塞,缺少最大重试次数限制
- countOrders函数使用PositionSelect而非PositionGetTicket遍历,在多持仓时会重复选择同一持仓导致计数错误
- 止损止盈固定为2000点且无追踪止损机制,无法根据市场波动动态调整
- 元模型和主模型使用相同特征时缺乏正交性验证,可能导致过滤效果有限
改进建议
- 为do-while重试循环添加最大重试次数限制和超时机制,避免无限阻塞
- 修复countOrders函数,使用PositionGetTicket(k)正确遍历持仓而非PositionSelect
- 添加spread过滤和滑点控制,防止在高点差环境下开仓
- 考虑添加追踪止损或动态止损机制,根据ATR等波动指标调整止损距离
风险评估
总体风险: 中等
- 无限重试循环可能在高延迟或服务器断连时导致EA卡死
- countOrders函数计数错误可能导致超过max_orders限制开仓
- Sleep(50)在重试循环中使用会阻塞EA线程,影响其他逻辑执行
- 无点差过滤,在流动性低的时段可能以较大滑点成交
评估得分
参数
| 参数 | 默认值 | 说明 |
|---|---|---|
Allow_Buy | true | 是否允许买入交易 |
Allow_Sell | true | 是否允许卖出交易 |
main_threshold | 0.5 | 主模型信号阈值,超过此值视为卖出信号 |
meta_threshold | 0.5 | 元模型置信度阈值,超过此值才允许交易 |
MaximumRisk | 0.001 | 渐进式手数系数,用于按保证金比例计算手数 |
ManualLot | 0 | 固定手数,0表示使用动态计算 |
OrderMagic | 666 | 订单魔术号,用于标识本EA的持仓 |
max_orders | 1 | 最大同时持仓数量 |
stoploss | 2000 | 止损点数 |
takeprofit | 2000 | 止盈点数 |
comment | The ONNX EA | 订单注释 |
同类 EA:机器学习
回测是历史模拟,不代表未来收益,不构成投资建议。