研究AI辅助黄金交易与XAUUSD EA时,我想讨论一个验收问题:终端没有报错、EA挂在图表上,能不能直接把项目状态写成“验证通过”?
我的看法是需要两张独立的检查表。一张回答程序是否按设计工作,另一张回答策略是否在限定样本和风险条件下通过测试。它们不能用同一个绿色图标代替。
第一张是工程检查表。我会检查源码与构建版本能否追溯,参数是否对应当前版本,账户、品种、周期和Magic是否匹配,并分别记录启动、行情读取、请求发送、服务器返回和成交确认。订单请求有结果,不应直接等同于成交确认。
MQL5官方OrderSend文档也明确区分了返回true与实际执行完成。需要继续检查result.retcode,并跟踪相关交易事件。这一点适合做成独立测试,而不是只看日志里有没有“发送成功”。
第二张是策略验证表。我会先固定版本、样本时间和判定门槛,再分别记录训练、验证、样本外与后续前向结果。点差、佣金、滑点、样本量和最大回撤需要单独保留,不能只展示最后的净利润。样本外区间如果反复用于调参,也要标记,不能继续当作完全未见的数据。
以状态页设计为例,我更倾向分别展示runtime_state和validation_state。前者可以是运行中、异常或停止;后者可以是未测试、测试中、限定样本通过或未通过。还要同时展示版本、测试区间和证据更新时间。“限定样本通过”也不能改写成未来收益保证。
我还会加入三类异常测试:终端重启后是否重复处理旧信号;报价过期时是否停止产生新动作;请求结果暂时不明确时,是否先核对订单和成交记录,而不是立即重发。这里列的是建议的检查项,不代表某个现有版本已经全部实现或通过。
大家在MQL5项目里,是怎样把运行健康与策略验证分开展示的?特别是重启或断线恢复后,你们会先核对哪些记录?
参考:https://www.mql5.com/zh/docs/trading/ordersend
仅讨论研发和测试方法,不提供买卖点,不承诺收益。
MQL5文档: OrderSend / 交易函数
- www.mql5.com
通过向服务器发送 请求 ,OrderSend()函数用来执行 交易操作 操作。 参量 request [in] 指针指向 MqlTradeRequest 结构类型操作,描述成客户的交易活动。 result [in,out]指针指向 MqlTradeResult...