Symbol Spec Auditor
- 实用工具
-
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
Symbol Spec Auditor 将交易品种合约规格中决定仓位大小和交易成本的那部分内容集中到图表上的一个面板中:每点价值、点差成本、保证金、库存费、执行规则和交易时段。原始规格数值会换算成以账户货币计的每 1.00 手金额,而那些会悄悄破坏手数计算代码的经纪商设置会作为警告列出。只需一个按钮,即可将市场报价中每个交易品种的同样审计结果导出到一个 CSV 文件。
这是一个检查工具。它不下任何订单,不使用 DLL,也不使用 WebRequest,除了你要求的 CSV 导出之外,不写入任何文件。
为什么需要它:在一个经纪商那里正常运行的代码,换到下一个经纪商时常常出问题,原因是某个没人检查过的规格细节。黄金合约是 1 盎司而不是 100 盎司;美分账户的余额和最小变动价值以美分计;止损水平会拒绝距离过近的止损;最小变动价位与点不同;挂单在当日结束时被删除。终端会显示所有这些信息,但分散在多个选项卡中,而且使用原始单位,因此两个经纪商或两种账户类型之间的差异很容易被忽略。于是,一个假定常规合约大小的仓位计算公式会错上 10 倍或 100 倍,而日志中不会出现任何错误。
面板为图表交易品种显示以下内容,每秒刷新一次,并在你更改交易品种或时间周期时重建:
- 基本信息:交易品种、描述、路径、计算模式、基础货币、盈利货币和保证金货币、账户货币、账户杠杆和保证金模式。
- 价格与合约:小数位数、点、最小变动价位、盈利和亏损的最小变动价值、合约大小,以及会到期的合约的到期日。
- 每 1.00 手的金额:由最小变动价值得出的一个点的价值,并与合约大小乘以点再乘以换算汇率的结果交叉核对;价格变动 1.00 的价值;以点和金额表示的点差;图表时间周期的 ATR(14),以及点差占它的百分比。
- 交易量:最小值、步长、最大值和上限。
- 1.00 手的保证金:买入和卖出保证金、初始保证金比率、名义价值,以及与账户杠杆并列显示的实际杠杆。
- 1.00 手的库存费:库存费模式、多头和空头数值、每晚金额以及三倍库存费日。
- 执行:交易模式、执行模式、成交方式、允许的订单类型、到期模式、GTC 模式,以及以点和价格表示的止损水平和冻结水平。
- 交易时段:以服务器时间表示的今日交易时段。
无法确定的数值显示为 n/a,而不是一个看似合理的数字。最小变动价值、每点价值核对、点差、ATR 和保证金这几行还会写明原因,例如缺少换算货币对或保证金比率为 0。
Warnings 区块按严重程度列出值得再看一眼的设置,每一项都附有它对交易代码的影响:合约大小对该资产类别而言不寻常、最小变动价值或最小变动价位为 0、由最小变动价值得出的每点价值与由合约大小得出的不一致、美分账户货币、受限的交易模式、会到期的合约、没有当前报价、最小变动价位与点不同、止损水平或冻结水平大于 0、GTC 模式为当日有效、外汇和 CFD 交易品种的最小交易量或交易量步长大于 0.01、点差超过 ATR(14) 的设定百分比,以及对该资产类别而言不寻常的三倍库存费日。如果没有任何一项适用,面板会提示未检测到陷阱。警告并不一定意味着经纪商出错;它标记的是你的代码必须从规格中读取、而不能自行假定的数值。
Export CSV 按钮会写入 MQL5\Files\SymbolSpecAudit_<server>_<date_time>.csv,市场报价中的每个交易品种一行,共 55 列,其中包括一个 Warnings 列,以及一个说明缺失的最小变动价值、每点价值核对、保证金或 ATR 原因的 Notes 列。在两个经纪商或两种账户类型上分别导出的两份文件,可以在将智能交易系统从一方迁移到另一方之前逐行比较。
面板操作:可放在图表任意角落,单列或双列(默认自动),紧凑的仅显示警告模式,以及在更换交易品种和时间周期后仍保持状态的折叠按钮。颜色默认跟随图表:浅色背景上为浅色面板,深色背景上为深色面板,每种颜色也可以手动设置。布局根据实际字体度量计算,因此在高 DPI 屏幕上以及使用其他字体时都能保持对齐。
输入参数:面板角落、X 和 Y 偏移、布局、字体名称和大小、仅显示警告模式、五种颜色、点差警告阈值(以 ATR(14) 的百分比表示),以及启动时导出 CSV 的选项。每个输入参数在终端中都有各自的注释说明。
注意事项和局限。MetaTrader 5 不允许指标调用 OrderCalcMargin 或 OrderCalcProfit,因此保证金和每点价值交叉核对使用的是各计算模式的文档公式。在测试所用经纪商的外汇和 CFD 交易品种上,计算结果与在相同价格下从智能交易系统调用 OrderCalcMargin 得到的结果一致,差异在美分舍入范围之内。对于债券和抵押品交易品种、没有初始保证金的期货,以及货币与账户货币不同的指数 CFD,保证金显示为 n/a。货币换算使用市场报价中有实时报价的交易品种,直接换算或经由 USD 换算;如果没有这样的品种,受影响的数值显示为 n/a,并写明缺少的货币对。美分账户通过账户货币代码识别,例如 USC 或 EUC。ATR 是图表时间周期上最后一根已收盘K线的 ATR(14)。面板使用一秒定时器而不是每个 tick 刷新,并且设计为每个图表只运行一个实例。
