EA Ledger True Costs MT5
- 实用工具
-
Quoc Dat Quach
Software engineer with 8 years in fintech and mobile, writing MQL4/MQL5 since 2017. I build Expert Advisors, indicators, trade and risk-management panels and utilities for MT4/MT5, and I trade forex and gold on MT5 myself. - 版本: 1.0
- 激活: 10
一款适用于 MetaTrader 5 的账户账本:按幻数、交易品种、星期和小时拆分您的交易结果,将价格盈亏、手续费、库存费和费用分列显示,并测量每次成交时支付的点差,以及成交价相对于您所请求价格的滑点。每次更新时都会将合计与账户余额进行核对。它绝不会在图表上交易。
功能
将它加载到一个图表上。它读取账户的成交历史,根据成交重建每个持仓,并在面板上显示结果:
- 净结果、价格盈亏、手续费、库存费和费用,分列显示
- 每次成交的点差成本和滑点成本,依据终端自身的跳价历史测量
- 每笔已平仓交易的 MFE 和 MAE:持仓期间价格向对您有利和不利的方向分别走了多远
- 交易笔数、胜率、盈利因子、手数以及每手综合成本
- 入金、出金、信用、赠金、更正及其他非交易条目,与交易结果分开显示
每新增一笔成交,它都会自动更新。其计算已用包含 50,000 笔和 200,000 笔成交的合成历史进行测试;实时测试所用账户最多有 1,249 笔成交。
与余额一致的合计
每当历史发生变化,面板都会将账户的全部成交相加,并将总和与经纪商报告的余额进行比较。汇总下方的状态栏显示这两个数字及其差额:精确到分完全一致时显示绿色“OK”,不一致时显示红色“MISMATCH”。对于所选周期,它还会显示余额变化等于交易结果加上非交易条目。
信用会显示,但不计入余额,与 MetaTrader 的计算方式相同。
根据成交重建持仓
- 对冲账户和净额账户。
- 部分平仓、加过仓的持仓、反向平仓(两个持仓都标记为“CB”),以及净额账户上的反转(一笔成交平掉一个持仓并开立方向相反的持仓)。反转成交的手续费按交易量在被平掉的交易和新交易之间分摊。
- 以单独成交记账的手续费,以及按日或按月收取的手续费,在经纪商将其关联到某个持仓时,会归入该持仓。否则单独显示为一行“Commission not linked to a position”。
- 由止损、止盈和强制平仓导致的离场会被标记。
分组与筛选
视图:按幻数(如有 EA 注释则以其作为标签,幻数 0 显示为“Manual”)、按交易品种、按幻数和交易品种、按入场星期、按入场时的经纪商小时,以及交易列表。
周期:今天、本周、本月、全部历史,或按服务器时间指定的自定义范围。
点击幻数行可查看其交易品种,点击交易品种行可查看其幻数,点击幻数与交易品种行可查看其交易。面板上的一个标签显示当前生效的筛选,也可用它清除筛选。
Results 页面显示金额;Costs 页面显示每个分组的点差、滑点、手续费和费用,每手成本,平均 MFE 和 MAE,以及每项测量的数据来源。
成本如何测量
- 成交时的点差:成交时刻有效的 bid/ask,取自终端的跳价历史。如果没有跳价,则使用 M1 K线的点差,并将该交易标记为“M1”。
- 滑点:成交价相对于所请求价格的差值:
- 挂单:其订单价格
- 止损或止盈:其止损/止盈价位
- 市价单:经纪商通常不为其保存请求价格,因此从跳价历史中取下单时刻的报价(买入取 ask,卖出取 bid)
正滑点对您不利,负滑点对您有利。
- 每点的货币价值:取自该交易本身的盈利,因此会随账户货币(包括美分账户和 EUR 账户)以及合约大小(黄金每手 1, 10 或 100 oz,指数 CFD 每手 1, 10 或 100 个单位)而变化。如果交易没有可用于测量的价格变动,则使用该交易品种的平均值,再不行则使用经纪商自身的盈利计算。
- MFE / MAE:从入场到离场期间,持仓估值所用价格(买入按 bid,卖出按 ask)的最高价和最低价,取自跳价。持续超过 3 天(可通过输入参数设置)的交易使用 M1 K线,并标记为“M1”。
点差成本和滑点成本已经包含在价格盈亏中,因为它们是成交价的一部分。显示它们是为了让您看到它们占去了多少结果。它们不会被再扣除一次。
结果保存在一个小型缓存文件中,因此每笔成交只测量一次。在测试账户上,首次测量 1,246 次成交和 557 笔交易用时 7 秒;测量在后台分小批进行,期间面板可以正常使用。
CSV 导出
“Export CSV”按钮会将四个文件写入 MQL5\Files\EALedger\<account>\:
- <time>_summary.csv:周期合计、非交易条目、余额核对
- <time>_groups.csv:当前视图中每个分组一行
- <time>_trades.csv:每笔交易一行,包括入场和离场、成本、入场和离场时的点差与滑点、以点数和金额表示的 MFE 和 MAE、每项测量的来源以及备注
- <time>_deals.csv:每笔成交一行,包括其所属交易、请求价格、下单时的报价、滑点和点差
通过输入参数“Write the CSV files again after every history change”,同样的文件会以前缀 auto_ 保持实时更新。
输入参数
| 输入参数 | 默认值 | 含义 |
|---|---|---|
| Period shown at start | All history | Today, This week, This month, All history, Custom |
| Custom period: from / to | 2026.01.01 / 0 | 服务器时间。0 = 当前时间 |
| View shown at start | By magic number | By magic number, By symbol, By magic number and symbol, By weekday of entry, By broker hour of entry, Trade list |
| Show only this magic number | -1 | -1 显示全部 |
| Measure spread and slippage at every fill | true | |
| Measure MFE / MAE of closed trades | true | |
| Trades up to this many days long use ticks | 3 | 更长的交易使用 M1 K线 |
| Write the CSV files again after every history change | false | |
| Panel distance from the left / top edge | 8 / 22 | 像素 |
| Panel scale in % | 0 | 0 表示跟随屏幕 DPI |
| Hide the chart's own trade arrows while the panel is open | true | MetaTrader 会将它们绘制在面板上方。面板折叠或 EA 被移除时,图表设置会恢复 |
| Tester only: open sample positions | true | 见下文 |
策略测试器
测试器在开始时没有可显示的成交历史。因此,仅在策略测试器中,EA 会自行开立一小批示例持仓:
- 最小交易量(预付款允许时为最小交易量的两倍),三个幻数(“Sample A”、“Sample B”、“Sample C”)
- 每个持仓先开立,再平掉一半,然后平掉剩余部分,最多 60 个持仓
- 每次开新持仓前都会检查可用预付款;资金不足时它会写入一条提示,不发送任何订单
在可视化模式下运行,可以看到面板逐步填满。示例持仓不是交易策略,其结果不能说明任何盈利能力。测试器中的市价单没有请求价格,也可能没有跳价历史,因此在测试器中点差和 MFE/MAE 取自 M1 K线,滑点在交易列表中显示为“n/a”,在汇总中显示为 0.00。
在真实账户或模拟账户的图表上,EA 绝不会发送、修改或关闭任何订单。
限制(购买前请阅读)
- 占用一个图表位:它是智能交易系统,因此会占用所加载图表的 EA 位置。请将它加载到一个空闲图表上,而不是某个交易 EA 所在的图表。
- 跳价历史来自经纪商:点差、市价单的滑点以及 MFE/MAE 需要经纪商在交易发生时段的跳价历史。经纪商只保留有限的时间,部分交易品种则完全没有(测试中有一个股票 CFD 就没有)。此时将使用 M1 K线并将交易标记为“M1”,没有数据时则标记为“n/a”。首次测量会从经纪商服务器下载跳价历史。
- 市价单的滑点是相对于下单时刻的报价测量的。它包含执行期间的任何价格变动,而这正是您实际付出的。
- 反向平仓:MetaTrader 将反向平仓的全部盈利记在两个持仓中的一个上。账本按经纪商的记账方式显示;合计是正确的,两个持仓之间的分配由 MetaTrader 决定。
- 净额账户:一个持仓可能被多个 EA 修改。该交易归属于开立它的幻数;其他幻数在该持仓上的成交标记为“Mix”。
- 金额以账户货币显示,与经纪商报告的一致。美分账户显示美分。
- 库存费单独一列显示,不计入每手综合成本;每手综合成本包括点差、滑点、手续费和费用。
- 星期和小时均指入场时的星期和小时,按服务器时间计。
- 测试环境:
- 在四个模拟账户上实时运行:MetaQuotes-Demo USD 对冲账户(1,249 笔成交)、EUR 对冲账户(900 笔成交)、USD 净额账户(262 笔成交),以及第二家经纪商的一个 USD 对冲模拟账户(337 笔成交,包括 5,000 oz 白银、10 单位和 100 单位的指数合约以及股票 CFD)。在全部四个账户上,合计与余额精确到分一致,并且每笔交易都与为测试单独编写的历史重建结果一致。
- 美分账户和 1 oz 黄金由使用合成成交的单元测试覆盖,而非实时账户。这两家经纪商的模拟账户都未提供它们。
- 速度已用包含 50,000 笔和 200,000 笔成交的合成历史进行测试。
- 请先在模拟账户上试用,并使用免费的策略测试器演示版。
