EA-47225 · 机器学习
TestMnistOnnx
该EA是一个演示工具,使用ONNX神经网络模型(MNIST)对画布上手绘的数字进行分类识别。用户在通过CCanvas渲染的28x28网格上绘制数字(0-9),EA通过OnnxRun运行推理来预测该数字。它完全没有任何交易功能,纯粹是一个机器学习推理演示。
打开交互版(权益曲线、切换品种)基本信息
回测结果(H1,约 1 年)
暂未回测:这个 EA 还没能自动转换。
策略分析
该EA不包含任何交易策略,它是一个基于ONNX模型的MNIST手写数字识别演示工具。策略概念是利用预训练的卷积神经网络模型对用户在画布上绘制的数字进行分类推理。入场条件为用户点击CLASSIFY按钮触发推理,出场条件不适用,因为没有交易操作。仓位管理和资金管理均不涉及。整个流程是:用户在画布上用鼠标绘制数字 → 像素数据被采集并做平均池化降采样到28x28 → 归一化到0-1范围 → 送入ONNX模型推理 → softmax激活后取argmax得到预测数字。模型置信度低于0.8时会打印完整概率分布供调试参考。
优势
- 成功演示了MQL5中ONNX模型推理的完整流程,为机器学习在MetaTrader中的应用提供了参考范例
- 交互式画布设计直观,用户可以通过鼠标绘制并实时获取分类结果,用户体验良好
- 代码结构清晰,PrepareMatrix函数将像素采集、降采样和归一化分离,逻辑层次分明
劣势
- 无任何交易功能,作为EA发布意义有限,更适合作为示例脚本或指标
- 绘图精度受限于GRID_STEP的整数除法,可能导致边界像素丢失或降采样不够精确
- 缺少输入验证和异常处理,如ONNX模型加载失败后仍允许用户点击分类按钮,可能导致误导性结果
改进建议
- 增加对ONNX模型加载失败的UI状态管理,在模型不可用时禁用分类按钮并显示错误提示
- 优化降采样算法,使用双线性插值代替简单平均池化,提高手写数字识别准确率
- 增加模型置信度阈值参数化和低置信度结果的UI可视化提示,而非仅打印到日志
风险评估
总体风险: 安全
- 该EA不执行任何交易操作,不存在资金风险
- ONNX模型推理失败时仅打印错误日志,PredictNumber返回-1但UI仍会显示-1作为预测结果,可能误导用户
评估得分
代码质量4.0
策略逻辑1.0
风险管理5.0
稳健性3.0
创新性5.0
文档2.0
综合3.3
参数
| 参数 | 默认值 | 说明 |
|---|---|---|
SHIFT_X | 100 | 画布X轴偏移量(像素) |
SHIFT_Y | 100 | 画布Y轴偏移量(像素) |
SIZE_X | 420 | 画布总宽度(像素) |
SIZE_Y | 300 | 画布总高度(像素) |
SIZE_CAPT | 20 | 标题栏高度(像素) |
ONNX_DEFAULT | 0 (implicit) | ONNX模型创建和运行时的默认标志 |
同类 EA:机器学习
回测是历史模拟,不代表未来收益,不构成投资建议。