Execution Cost Audit
- 实用工具
-
Carlos Macaya Rodriguez
I build tools for MetaTrader 5 — trade and risk management utilities, panels, and diagnostics that work with the terminal's own data. - 版本: 2.0
- 激活: 10
您有没有想过,交易到底让您付出了多少成本?Execution Cost Audit 读取您账户里已有的平仓历史,然后直接告诉您:每一笔成交那一刻报给您的点差、每一笔成交滑了多少、以及佣金和隔夜利息在此之上又加了多少。不需要提前安装任何东西,也不需要等待。它只读取,从不发送订单。
我为什么做这个工具
我想知道自己的交易到底花了多少钱,而我找到的每一个工具给出的答案都一样:先装上,几周后再来看。可历史记录明明已经在我的账户里了,每一笔成交、每一个价格都在。每次成交那一刻的点差就在经纪商的报价历史里。所有零件都存在,只是没人把它们拼起来。
于是我写了一个能把它们拼起来的工具。把它拖到图表上,它会读取您已有的平仓历史,用每一笔成交记录重建每一次完整交易,再到报价历史里查出成交那一毫秒的报价,以及成交价离订单请求价有多远。佣金和隔夜利息直接来自成交记录。一分钟之后,您就知道最近九十天、或者最近一年、或者终端记得的全部历史让您付出了多少。
它从不开仓、修改或平仓。代码里没有任何交易函数,也不需要开启自动交易。
它告诉您什么
- 点差:每一笔成交那一刻实际报出的点差。不是现在屏幕上的点差,不是经纪商的平均值,也不是 M1 K 线的点差字段,那个字段平均的是整整一分钟,包括点差被拉开的那一分钟。
- 滑点:订单请求的价格与实际得到的价格之差。市价单取请求价,止损单或限价单取挂单价位。符号经过统一,正数永远表示对您不利。
- 佣金、手续费和隔夜利息:按每次完整交易统计,直接取自成交记录。
- 如果某笔成交在报价历史里查不到任何数据,它会明确告诉您。这笔成交保持未测量,而不是编造一个数,报告会说明这样的成交占多大比例。
四项成本,分得清清楚楚
有一个很容易犯的错:把点差、滑点、佣金和隔夜利息加在一起,再从毛利中扣掉。这是重复计算。点差和滑点已经包含在毛利里了,因为您是按卖价买入、按买价卖出的;佣金和隔夜利息则是另外收取的。报告把它们分开处理:一边显示真正到账的金额,另一边显示同样这些交易若以中间价成交、不含佣金和隔夜利息时会得到的结果。当它用百分比表示成本时,分母就是后面这个数字。
对隔夜利息同样谨慎。您会看到它在结果中的净额,然后拆分成您支付的部分和您收到的部分。只有支付的部分计入成本,因此成本各行相加永远等于合计。
钱花在了哪里
每一个数字都按品种、开仓小时、星期几、交易时段、方向、魔术号以及仓位的平仓方式分解。止损出场的滑点单独列出,因为意外通常就藏在那里。您还能看到成本最高的十笔交易,以及总摩擦成本中有多少集中在最差的百分之十里。这个比例往往比想象的高,而且它指向一些可以改变的事。
您的经纪商是怎样给您成交的
有三件事可以拿来衡量经纪商,而且没有一件与您的策略好坏有关:
1. 点差稳定吗?报价点差的第 90 百分位与中位数之比。只在风平浪静时才成立的宣传点差,在这里会现形。
2. 滑点有多大?相对于该品种的典型点差来衡量,这样黄金上的几个点和 EURUSD 上的几个点就不会被同等看待。
3. 滑点是否均衡?在发生偏移的成交里,有多少是对您不利的。永远只朝一个方向滑的盘口,问题不在延迟。
三项合成一个 0 到 100 的分数和一个字母等级。如果某一项样本不足,就把它剔除并重新换算其余各项,所以即使经纪商不提供报价历史,账户仍会按成交情况得到评级。
把点数换成钱,而不自欺
通常的捷径是用当前的每跳价值,但它把今天的汇率套到了四个月前的交易上。这里的做法是让每一个已平仓位用自己的已实现盈亏校准自己的换算:它走过一段已知的距离,记下一个已知的结果,这就揭示了经纪商在那一刻实际使用的换算关系,包括交叉汇率。每跳价值只作为几乎没有波动的仓位的后备。
它会告诉您什么被排除在外
过滤后的报告和完整报告看起来一模一样,于是就有人在七十笔交易的账户里只审了四笔,然后得出成本没问题的结论。这份报告始终注明:被审计交易的时间跨度、搜索的区间、生效的过滤条件,以及有多少已平仓的完整交易落在该区间之外。面板、HTML 报告和 CSV 里都有。
输出什么
- 图表上的面板,共五页:Overview、Symbols、Time、Quality 和 Method。可以固定在任意角落,会根据图表高度自动调整,内容放不下时可以滚动。
- 一份独立的 HTML 报告,图表内嵌。没有外部文件,在任何电脑上都能打开,打印也清晰。适合发给您的经纪商,或者半年后发给自己。
- 一份 CSV,每次完整交易一行,UTF-8 带字节顺序标记,分隔符可选,供您自己的表格使用。
购买前先试用
策略测试器里没有可供审计的账户历史,所以在测试器中,本产品会基于报价流构建一组模拟交易,并对它进行审计。不会发送任何订单。点差、从决策到成交之间的价格变动、以及止损成交,全部来自经纪商为该品种和该时段记录的真实报价,因此成交数据描述的是该经纪商的该品种。只有交易的时间安排是虚构的,而每个界面都会说明这一点。请使用"基于真实报价的每次报价"模式:OHLC 和开盘价模式生成的报价过于稀疏,无法为成交计时;一旦出现这种情况,报告会说明有多少笔成交未被测量。
它还有一个有用的副作用。把它指向任意品种和时段,它就能回答一个您在开户前也许问过自己的问题:在这家经纪商交易这个品种,会让我付出多少成本?
您需要什么
MetaTrader 5,不需要 DLL。对冲或净额账户均可,任意品种,任意周期。点差测量需要您交易过的品种的报价历史。某个品种第一次运行时,终端下载报价可能需要一分钟;面板和报告会列出仍然缺失的品种,审计会在几分钟内自动重试。
主要参数
- 周期:最近 N 天、自定义日期范围或全部可用历史。
- 过滤:品种(带或不带经纪商后缀)、魔术号及其范围、方向、最小手数。
- 测量:报价查找窗口(毫秒)、每笔成交计半个或整个点差、自动资金校准或当前每跳价值。
- 时段:亚洲、伦敦和纽约的服务器时间小时数,允许跨越午夜。
- 面板:角落、偏移、字号、颜色、自动刷新间隔。
- 报告:HTML 和 CSV 可分别开关、CSV 分隔符、首次审计时导出、隐藏账户信息、报告文件夹和文件名后缀。
- 策略测试器演示:手数、每日交易次数、持仓时长、假定佣金、止损距离。
局限,直说
- 只统计完全平仓的完整交易。未平仓位只是半笔交易,半笔交易没有可测量的出场。
- 在市价执行的账户上,订单不带请求价,因此无法测量入场滑点。报告会显示覆盖率,而不是填补这个空缺。
- 在某些服务器上,市价单按其成交价记录。当账户上所有市价成交的滑点都恰好为零时,这些成交会被视为未测量,而不是评为完美,报告会说明这一点。
- 点差和滑点测量的是报价历史里记录的内容,而这份历史属于经纪商。
- 执行等级描述的是成交质量,不是盈利能力。再完美的经纪商也不能让亏损的策略盈利。
有问题?
如果报告里有什么对不上,请在产品评论中提问,或在 MQL5 上给我发私信。两处我都会看,而一份解释不通的报告,正是我想听到的那种事。
