基于成交历史的交易播放器(基础篇)
📘

基于成交历史的交易播放器(基础篇)

第 1/3 篇

「用历史成交回放看清每一笔单」

MT5 终端自带一种被很多人忽略的能力:把已经发生的成交历史按时间轴重演一遍,相当于给自己的交易过程做慢放。2013 年 12 月社区里就有人据此做了播放器原型,原帖浏览量超过 3116 次,说明手动复盘的需求一直存在。 这种回放不是简单看成交记录列表,而是把每笔市价单、挂单触发、平仓动作还原到当时价格走势上。对外汇和贵金属来说,这类品种杠杆高、跳空频繁,重看历史成交能帮你看清自己是在反转初段还是延续中段出的手,风险暴露时长也一目了然。 如果你手上有 MT5 实盘或模拟户的成交历史,直接进「账户历史」导出 xml,再写个简易读取脚本就能在离线图表上逐帧播放。重点看滑点发生位置和持仓均价的移动轨迹,比看净值曲线更有用。

为什么要把成交记录画到图上

把交易历史做成可视分析,是复盘里绕不开的一环。若只靠统计汇总数字,很多细微的价格反应会被抹平——人眼接收的信息占感知的约 80%,图形能暴露出报表里看不出的进出场上下文。 本文不写自动展示历史的 EA,重点放在对象间传信、大程序规划、图表管理,以及跨品种信息同步这些更底层的工程问题。 惯例是先讲播放器应用和配套脚本的好处,再进代码层逐行拆。你可以先开 MT5 随便跑一段历史,想想哪些细节是报表给不了的。

◍ 用 Player Report EA 复现 2008 锦标赛成交

  • 年自动交易锦标赛的服务器早已停用,没法像 2010 届那样直接登 ATC 账户导 HTML。官方留了个 ZIP 包 Automated_Trading_Championship_2008_All_Trades.zip,解压进 MT5 安装目录的 \Files 文件夹就能拿到全员综合成交。

要解析这份数据,先跑 Report Parser MT4 脚本:它按你给的 login 参数挑账户,落一个二进制文件;之后 Player Report EA 在策略测试器里读这个文件,跑完导出 HTML 报告。EA 里的 login 只是写进报告做辨识用,不改测试结果,但记得改个默认名以外的报告名,不然多份混一起分不清。 不知道 login 只知昵称时,把脚本 login 设 0 跑一遍,它会生成 Automated Trading Championship 2008 All Trades_plus 这个 csv,按字母列全部账户,查到目标再带真实 login 重跑一次。 Player Report EA 不是真按当年环境撮合,只是近似重放:报价不同、报告时间只精确到分、滑点上限也会起作用。差异大多几点,出现在约 10% 的成交里,但够把利润从约 17 万拖到约 16 万——外汇与贵金属历史回测本身高风险,这种偏差提醒你别把复现数值当实盘依据。

「用播放器回放 MT5 成交历史的关键参数」

成交历史播放器能直接吃进 MetaTrader 5 策略测试导出的 HTML 报告,也能读工具箱 History 选项卡另存的手工交易报告。把报告文件名填进 Player History Trades exp v5 的 'name of html file of the strategy tester report' 参数,启动后靠 'start of history' 和 'end of history' 框定回放区间;不填就默认从首笔成交播到末笔,账户里交易品种数量无限制,只认第一笔和最后一笔的时间边界。 'list of required charts' 用枚举写交易品种名,大小写和分隔符都不敏感。实测 Manov 在 2010 自动交易锦标赛用了 12 个货币对,但建议一次不超过 4 个——图表在总循环里逐个处理,品种多了会拖慢价格变动生成速度。 'delete charts when deleting the EA' 设 false 可让 EA 退出后图表留着做精细分析;EA 会落盘每个品种的 csv 成交记录和跨品种同步余额文件,对抓多货币篮子里的单个品种很有用。'Period of the generator' 是 tick 生成器初值,这里的 tick 指价格水平变动而非经典报价,依据柱的四点生成,播放中也能改周期来加速大周期回放。 'font size for the comment to deals' 设 1 时备注变成细线不挡成交,方便在对象列表里看量仓。'number of speeds' 控制降速步进,配合周期按钮组成速度管理;'vert. size of the progress button' 我默认设 8 以免控件盖住图表。进度栏由 100 个互斥按钮组成,柱数不能整除 100 时余数进最后一段,所以靠起止参数能跳到指定历史段。 播放器控件里左右箭头改速度或周期取决于中间方钮状态;余额指标对象实际是两个超大隐藏按钮,左键加减指标右鍵切 All/Sum 数据,且它是唯一异步控件,其他图表改动都同步。两个对象叠在同一字段时按钮会失灵,得换图表或调垂直比例才能点中。回放 Manov 可连 login=630165、password=MetaTrader,报告存到 terminal_data_folder\MQL5\Files\ReportHistory-630165.html。外汇与贵金属回放仅作历史复盘,实盘高杠杆高风险,参数结论均属可能倾向。

MQL5 / C++
[deal volume|position volume]
[<deal volume>|position volume]

把历史成交回放跑起来的最后几步

先把 player_history_trades.zip 下载下来,解压进终端数据目录下的 MQL5/Indicators 文件夹。接着进 Player History Trades 目录,在 MetaEditor 里把四个文件全部编译一遍,顺序无所谓,编译通过即可。 回放依赖 M1 周期的报价历史。手动把要复盘的所有品种切到 M1,开图后拖一条竖线,按 Ctrl+B 呼出对象列表,把竖线日期改成这笔交易的起始日,再点 Show。若界面没报价,多半是历史没下载,或 Charts 设置里 Max bars in chart 给得太小——路径在 Tools→Options→Charts。 外汇与贵金属属高杠杆品种,回放仅用于验证策略逻辑与价格行为,不构成任何方向暗示。参数调顺后,这套本地回放就能在 MT5 里正常跑起来了。

常见问题

用成交播放器加载历史成交记录,按时间轴逐笔回放,就能在K线上看到每笔单的进出场位置与顺序。
图形化回放能把买卖点、加减仓和价格走势对齐,比纯数字报表更容易发现当时的决策盲点。
可以,小布能读取你的成交历史生成回放视图,并基于价格行为标注出明显偏离计划的交易供你复盘。
主要设置好起止时间、品种过滤和回放速度,确保数据源包含对应时段成交,避免跳过非主力合约。
常见是历史数据未下载完整、EA未附在正确图表,或播放器时间范围超出本地缓存,补全数据并核对挂载即可。