MT4复盘加速器:用脚本批量导出历史订单到Excel做策略归因

较热61.7
登录发帖
XM 推荐平台

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

CySEC(塞浦路斯) / ASIC(澳洲) / IFSC(伯利兹) · 最低入金 $5
流年轻语
流年轻语 楼主 2026-9-19 15:12:23 浏览 538 回复 4 阅读 1 分钟
Lv.1 新手汇友 等级 Lv.1 主题 2 帖数 14 积分 1267 汇币 919
1楼
昨天整理复盘日志的时候又踩了一次坑,同一个错误三个月前犯过,当时还特意记在笔记本上,结果还是重蹈覆辙。这让我意识到,光靠脑子记和手动翻MT4的历史记录,根本没法做真正的策略归因。于是我把之前折腾过的订单导出脚本又翻出来重新捣鼓了一遍,今天就把这套流程完整写下来,给同样被复盘效率折磨的朋友一个参考。
先说为什么要做这件事。MT4自带的历史记录导出功能其实很简陋,导出来的HTML或者CSV字段不全,尤其缺少订单平仓时间、持仓时长、最大浮盈浮亏这些关键维度。你要分析一套EA在欧美或者黄金上的表现,光看总盈利和总亏损根本不够,必须拆到每一单的持仓周期、入场时段、盈亏比分布,才能知道问题出在哪个环节。我之前做镑美M15的一套策略,回测曲线很漂亮,实盘却一直阴跌,后来把订单导出来按小时统计才发现,亏损集中在下午三点到五点这个区间,正好是伦敦盘和纽约盘交接的流动性真空期,点差扩大导致频繁扫损。
具体操作我分几步走:

  • 第一步,在MT4里打开“账户历史”标签,右键选择“所有历史记录”,确保时间范围覆盖你要分析的周期。注意一定要先切换到这个标签再运行脚本,否则脚本读不到订单数据。
  • 第二步,把脚本拖到图表上,脚本会自动遍历OrdersHistoryTotal(),逐单读取OrderOpenTime、OrderCloseTime、OrderOpenPrice、OrderClosePrice、OrderLots、OrderProfit、OrderSwap、OrderCommission这些字段。这里有个坑,OrderProfit()返回的是不含隔夜利息和手续费的毛利润,必须手动加上OrderSwap()和OrderCommission()才是真实净盈亏,我第一次做归因就是忘了这一步,导致盈亏比算出来偏差很大。
  • 第三步,脚本把数据写到一个CSV文件里,默认路径是MQL4/Files文件夹。建议用FileOpen加上FILE_CSV|FILE_WRITE|FILE_ANSI这几个标志,不然中文注释容易乱码。
  • 第四步,用Excel打开CSV,加一列持仓时长,公式就是平仓时间减开仓时间,再按小时或者星期几做透视表,很快就能看出策略在哪些时段表现最差。

说个真实教训。去年做黄金的一套突破策略,归因之后发现周三的胜率明显低于其他交易日,一开始以为是偶然,后来把三个月的订单全导出来按星期分组,发现周三平均亏损是其他天的两倍多。查了财经日历才想起来,周三经常有美联储官员讲话或者EIA数据,波动结构完全不一样。这就是手动复盘绝对看不出来的东西,因为你不可能凭记忆去统计几十上百单的星期分布。
另外提醒一句,脚本导出的时候建议按平仓时间排序,而不是开仓时间,因为归因分析看的是结果发生在什么时候,不是决策发生在什么时候。这个细节很小,但影响很大。
你们平时复盘是手动翻记录还是有自己的一套脚本工具?有没有遇到过导出后发现字段对不上的情况,一起聊聊。

补充个小细节:脚本跑之前记得先把MT4的历史记录全部刷新出来,不然导出的订单会缺最近几单,我一开始就被这个坑了半天。
0 回复 众裁0 复制
#1
MistyMeadow
MistyMeadow #3· 6 天前
3楼
“必须手动加上Swap和Commission”这句真的戳到我了,我之前算镑美盈亏比就漏了隔夜利息,结果差好多。我自己也写了个小脚本导黄金订单,但没统计持仓时段,回头加上试试。
赞 回复 众裁0 复制
6 天前 #3
CoolBreezej
CoolBreezej #4· 5 天前
4楼
那个"伦敦盘和纽约盘交接的流动性真空期"的分析点醒我了,我自己也做镑美,一直没按小时拆过,回头导出来看看是不是同样情况。leo说的最大浮盈浮亏我也打算加进脚本里一起看。
赞 回复 众裁0 复制
5 天前 #4
暮色拾光
暮色拾光 #5· 5 天前
5楼
净盈亏别只加Swap和Commission,MT4导出的历史里部分经纪商的库存费还包含三倍隔夜,按小时归因时先把这列单独拆出来看。
赞 回复 众裁0 复制
5 天前 #5
THE END
本帖内容仅供学习交流,不构成任何投资建议。外汇交易存在高风险,请谨慎参与。
← 上一帖 用美债收益率曲线倒挂做加元日线过滤,三个月回撤缩了六成 下一帖 → 挂单被扫后行情立刻反向,是止损设太近还是流动性猎杀