MT5回测的单步调试与变量观察技巧

新帖
登录发帖
XM 推荐平台

覆盖品种全,新手友好,支持多种入金方式

CySEC(塞浦路斯) / ASIC(澳洲) / IFSC(伯利兹) · 最低入金 $5
XAUHuntern
XAUHuntern 楼主 2 小时前 浏览 10 回复 0 阅读 1 分钟
Lv.1 新手汇友 等级 Lv.1 主题 3 帖数 22 积分 1366 汇币 1052
1楼
说出来你可能不信,我最早用MT5策略测试器跑黄金XAUUSD那会儿,EA在实盘和回测里表现完全是两个东西,后来才发现问题出在我根本不会看回测过程中的变量——整整两周时间,我都是靠Print硬输出猜逻辑,现在回头看真是走了大弯路 😂
MT5相比MT4在调试上其实强不少,但很多人(包括当时的我)压根没用起来。核心思路就一句话:让回测跑起来之后能暂停在某一根K线上,然后逐行看EA内部状态。具体我踩过的流程是这样的:
  • 第一步,在MetaEditor里打开你的EA源码,找到你想观察的那段逻辑,比如黄金在关键支撑阻力位附近挂单判断那几行,在行号左边点一下打上红色断点,注意断点别打在OnTick最开头,否则每根tick都断,回测根本跑不动;
  • 第二步,回到MT5主界面,Ctrl+R打开策略测试器,选好你的EA和黄金品种,勾选“可视化模式”——这个勾不勾差别巨大,不勾的话断点触发后你看不到图表;
  • 第三步,点开始回测,程序跑到断点会自动暂停,这时候测试器面板上会出现调试工具栏,有单步跳过(F10)、单步进入(F11)、继续(F5)这几个按钮,跟MetaEditor里调试脚本是一个逻辑;
  • 第四步,也是最关键的一步,打开MetaEditor下方的“观察”窗口,手动把你关心的变量拖进去,比如持仓手数、当前ATR值、挂单价格变量,回测暂停时这些值会实时刷新。

我踩得最狠的一个坑是:一开始以为断点只在OnTick里有效,结果在OnInit里打了断点死活不触发,后来才搞明白可视化模式下OnInit是在回测启动瞬间就跑完的,想观察初始化参数得用Print或者写到全局变量里。还有个坑是变量观察窗口不会自动显示数组的全部元素,看黄金多单分批建仓的数组时,得手动展开或者单独把关键索引拖出来,不然只能看到个[0]。
另外提醒一句,单步调试会极大拖慢回测速度,跑一年的黄金M15数据本来几分钟的事,开着断点单步走能磨一下午。我的习惯是先用小时间区间(比如最近一个月)验证逻辑,确认没问题再关掉断点跑全量。还有如果EA里用了定时器或者多线程相关的逻辑,单步调试下时序会跟实际跑不一致,这种场景就别硬调了,老老实实加日志。
你们平时调EA是习惯Print大法还是真用断点单步?有没有在MT5可视化回测里遇到过断点不触发或者变量显示不对的情况,评论区聊聊,我最近正好在折腾一个黄金突破策略的调试,想多收集点坑 😄
0 回复 众裁0 复制
#1
💬
暂无回复,来抢沙发吧!
THE END
本帖内容仅供学习交流,不构成任何投资建议。外汇交易存在高风险,请谨慎参与。
← 上一帖 聊聊镑日GBP/JPY在W1上的策略回测