请观看如何免费下载自动交易
请在Telegram上找到我们!
加入我们粉丝页
有趣的脚本?
因此发布一个链接 -
让其他人评价
喜欢这个脚本? 在MetaTrader 5客户端尝试它
指标

Symbol Spec Auditor - MetaTrader 5脚本

Quoc Dat Quach
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.
| Chinese English Русский Español Deutsch 日本語 Português 한국어 Français Italiano Türkçe
显示:
17
等级:
(1)
已发布:
MQL5自由职业者 需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务

“符号规格审计器”在图表的一个面板中显示了决定持仓规模和交易成本的符号合约规格部分:点值、点差成本、保证金、掉期、成交规则和交易时段。 这些数值会被转换为每1.00手以账户货币计的金额,而那些会悄无声息地破坏手数代码的经纪商设置则会以警告形式列出。只需单击一下,即可将“市场观察”中所有交易品种的相同审核结果导出为CSV文件。

symbol-spec-auditor-xauusd

XAUUSD H1:某交易符号的完整双栏面板(无陷阱)

问题

在某家经纪商上运行正常的代码,往往会在另一家经纪商上出现异常,原因在于某个无人核查的规格细节。符号规格窗口虽显示了所有信息,但分散在多个标签页中且以原始单位呈现,因此两家经纪商或两种账户类型之间的差异很容易被忽略。 如果专家顾问(EA)根据预设的合约或点值来确定仓位规模,那么即使交易日志中没有任何错误提示,它仍可能导致风险敞口不准确。典型情况包括:

  • 黄金合约为1盎司而非100盎司,或外汇“迷你”合约单位为10,000。若手数计算公式基于常规合约,则可能出现100或10倍的偏差。
  • 分币账户,其中余额、点值和保证金均以分计。
  • 止损或止盈水平或冻结水平会拒绝接近当前价格的止损/止盈指令或修改操作。
  • 日间订单:经纪商在交易日结束时会删除挂单,有时还会删除止损/止盈指令。
  • 点值与点数不同,因此价格不在点值网格上的订单会被拒绝。
  • 存在强制四舍五入的最小交易量或交易量步长、处于仅限平仓模式的交易品种,或出现异常的三重掉期日。

该指标将这些数值汇总到一处,将其转换为每1.00手对应的金额,并列出值得再次关注的项目,每条警告均附有一行后果说明。它仅作为检查工具:不下单、不使用DLL,除您要求的CSV导出外不写入任何文件。 面板和CSV文件采用相同的计算方式,因此您在单个图表上看到的内容可与整个“市场观察”窗口进行对比。

面板显示的内容

面板显示图表符号的相关信息。它每秒刷新一次,并在您更改符号或时间周期时重新构建,因此切换图表符号时会依次审核各个符号。无法确定的值将显示为“n/a”并附带原因说明,而触发警告的行将以警告色显示。各行按以下部分分组:

  • 标识:符号、描述、路径、计算模式、基准、盈亏及保证金货币、账户货币、账户杠杆及保证金模式。
  • 价格与合约:位数、点值、点差大小、点值(盈亏)、合约规模,以及具有到期日的交易品种(如期货)的到期日。
  • 每1.00手价值:根据点值计算的1点的价值,并与合约规模×点×换算率进行交叉核对;价格变动1.00点的价值;当前点差(以点和货币计);图表时间周期的ATR(14)及其占点差的百分比。
  • 成交量:最小、步长、最大和限额。
  • 1.00 手保证金:买入和卖出保证金、初始保证金率、名义价值,以及位于账户杠杆旁边的有效杠杆(名义价值除以保证金)。 当无法计算某项数值时,面板会显示原因,例如“无报价”、“保证金率=0”、“账户杠杆率=0”或缺少汇率。
  • 1.00手隔夜利息:隔夜利息模式、多头和空头数值、以账户货币计的每晚利息(点数、货币和利率模式)以及三倍隔夜利息日。周日到周六以外的日期将显示为“未设置”。
  • 执行:交易模式、执行模式、成交策略(FOK、IOC、BOC、Return)、允许的订单类型、到期模式、GTC模式(挂单和止损/止盈的有效期),以及以点数和价格为单位的止损和冻结水平。
  • 交易时段:按服务器时间显示的今日交易时段。

警告

面板底部的“警告”区域列出了需要关注的设置,按严重程度从高到低排序。 每条警告都会注明该数值及其对交易代码的影响。如果没有适用项,面板将显示“未检测到异常”。这些检查是与常见的参考值进行对比的,因此警告并不总是经纪商错误:它标记的设置是您的代码必须从规范中读取,而不是自行假设的。

  • 合约规模与该资产类别不符:外汇 100,000、黄金 100、白银 5,000。
  • 报价单位(tick value)或报价间隔(tick size)为 0,或者报价单位计算出的点值与合约规模计算出的点值相差超过 1%。
  • 分币账户货币(USC、EUC 等)。
  • 交易模式非“全模式”:已禁用、仅做多、仅做空或仅平仓。
  • 即将到期的合约,并附有其到期日。
  • 当前无买价/卖价。
  • 点值与点数不同。
  • 止损水平或冻结水平高于 0。
  • 每日订单(GTC 模式)。“每日”会在交易日结束时删除止损/止盈和挂单;“每日(不包括止损)”会删除挂单并保留止损/止盈。
  • 最小交易量大于 0.01 或交易量步长大于 0.01,仅限外汇和差价合约 (CFD) 符号。交易所交易产品通常以整手为单位交易,因此不会被标记。
  • 点差超过图表时间周期内 ATR(14) 的指定百分比。
  • 周三以外的日子出现三倍隔夜利息,仅限外汇和贵金属。对于美元兑加元、土耳其里拉、俄罗斯卢布和菲律宾比索,因结算日提前一天,周四也被视为特殊日。指数、加密货币及其他差价合约通常在周五进行展期,因此对于这些品种,虽然会显示该日期,但不会被标记。

符号规范审核警告

US500 M1(差价合约):最小交易量为0.14手,点差为28点,相当于M1 ATR的17.6%

CSV导出

点击“导出 CSV”按钮或通过启动选项,系统将生成文件 MQL5\Files\SymbolSpecAudit_<server>_<yyyymmdd_hhmm>.csv,其中每行对应一个市场观察符号。 该文件的 55 列包含上述所有值,包括 GTC 模式和合约到期日,此外还有一列“警告”(以“ | ”分隔)和一列“注释”,用于说明缺失值的原因。可以逐行比较来自两家经纪商或两种账户类型的导出文件。

该文件采用 UTF-8 编码(含 BOM),以逗号分隔,其中包含逗号或引号的字段均采用标准引号进行处理。 数字使用点作为小数点分隔符,且不使用千位分隔符。在列表分隔符为分号的区域设置中,请通过电子表格的导入对话框打开该文件。文件的完整路径将显示在“专家”选项卡中。

面板操作

  • 支持任何图表角落、一列或两列(默认自动)以及仅显示警告的紧凑模式。
  • 折叠按钮在切换符号和时间周期时仍保持折叠状态。
  • 颜色默认随图表调整:浅色图表背景上显示浅色面板,深色图表背景上显示深色面板。每种颜色也可手动设置。
  • 布局基于实际字体度量进行计算,因此能与其他字体保持对齐,并在高DPI屏幕上保持一致。较长的警告信息会在面板宽度处换行。
  • 仅更新文本或位置发生变化的标签,因此面板不会闪烁。
  • 启动时,会清除先前实例(例如来自已保存模板)在图表上留下的面板对象。

符号规范审核器(仅警告)

EURUSD M1,仅警告模式:6点的点差占M1 ATR的35.9%

输入参数

输入 默认值 描述
面板角落 左上角 面板锚定的图表角。
X 偏移量(以 100% 屏幕缩放比例计算的像素数) 10 距该角的水平距离。在高DPI屏幕上会自动缩放。
Y 偏移量(屏幕缩放比例为 100% 时的像素数) 30 距角点的垂直距离。在高DPI屏幕上会自动缩放。
布局 自动 当面板高度与图表高度相同时,“自动”模式使用一列,否则使用两列。“一列”和“两列”用于强制指定布局。
字体名称 Consolas 等宽字体可使各列排列整齐;任何已安装的字体均可使用。
字体大小 9 范围为 4 到 24;其他值将被限制在此范围内。
仅显示警告 false 包含标题、警告和“导出 CSV”按钮的紧凑面板。
文本(无 = 自动) 无 文本颜色。“无”表示从图表背景中自动获取颜色。
标题(无 = 自动) 无 章节标题的颜色。
警告(无 = 自动) 无 警告及其后方行行的颜色。
确定 / 无陷阱(无 = 自动) 无 “未检测到陷阱”行显示的颜色。
背景(无 = 自动) 无 面板背景。键标签、边框和按钮的颜色由文本色和背景色混合生成。
若价差超过ATR(14)的%则发出警告(0 = 关闭) 15.0 点差警告的阈值。0 表示关闭该功能。
启动时将所有“市场观察”符号导出为CSV文件 false 仅在指标启动时生成一次CSV文件,当交易品种或时间周期发生变化时不再重新生成。

使用方法

  1. 将该指标附加到任何图表上。它不绘制任何线图,且可与专家顾问同时运行。
  2. 请先阅读“警告”部分;其上方的行列列出了每条警告背后的具体数值。
  3. 切换图表符号以审核其他符号,或点击“导出 CSV”一次性审核“市场观察”中的所有符号。
  4. 使用“-”按钮可将面板折叠至标题栏。

典型的使用场景是在将专家顾问迁移到新的经纪商或账户类型之前,先对其进行导出操作,并将合约规模、点值、成交量步长、止损位、GTC模式和隔夜利息天数与开发该专家顾问的账户进行比较。 这些列中的差异往往会在没有明显错误的情况下,改变每笔交易的风险或策略的成本。

注意事项和限制

  • 保证金和点值交叉核对使用公式计算。MetaTrader 5 不允许指标调用 OrderCalcMargin 或 OrderCalcProfit(调用时会因错误 4014 而失败), 因此该指标采用 MQL5 文档中针对每种计算模式提供的公式:当经纪商设定固定初始保证金时采用该值;采用 SymbolInfoMarginRate 返回的初始保证金率;并按买入时按卖出价、卖出时按买入价将金额转换为账户货币。 在外汇、无杠杆外汇、差价合约(CFD)和带杠杆差价合约符号上,计算结果与在相同价格下由专家顾问调用的 OrderCalcMargin 结果一致,误差仅在分级四舍五入范围内。
  • 对于债券和抵押品符号、无初始保证金的期货,以及其交易货币与账户货币不同的CFD指数符号,保证金显示为“n/a”。仅在交易服务器上适用的、与交易量相关的保证金分级及规则未在此反映。
  • 对于期货和债券,经纪商的点值即为规格,因此该处的点值交叉核对显示为“n/a”。
  • 利息模式下的掉期金额基于名义本金并采用360天年度法计算。对于重新开仓模式,由于不存在固定金额,因此显示为“n/a”。
  • 货币转换仅使用“行情监视器”中具有实时报价的符号,可直接转换或通过美元间接转换。若无相关符号,受影响的金额将显示为“n/a”,或显示未经转换的名义本金。请将转换货币对添加至“行情监视器”以填入相关数值。
  • 当读取使用外币作为盈利货币的符号的点值时,MetaTrader 5 会向“市场观察”中添加一个转换符号。 因此,该指标仅在“市场观察”中已有报价的符号已将盈利货币与账户货币关联时才读取点值,且绝不会枚举“市场观察”之外的符号;否则,点值将显示为“n/a”并标注缺失的货币对,例如“市场观察中无KRW/USD报价符号”。 在测试中,该指标从未添加过任何符号。不过,交易终端会自行选择转换符号,因此如果经纪商的转换符号名称与“行情监视器”中的名称不同,仍可能会添加符号。
  • 分币账户通过账户货币代码(如USC、EUC、GBC等)进行识别,并按主要货币的1/100进行转换,即1美元 = 100 USC。此路径是使用模拟的账户货币进行的验证,而非在真实的分币账户上。 若分币账户报告的货币为 USD,则此检查无法检测到该账户。
  • 常规合约规模和三重掉期日仅为参考值。经纪商可能合法地使用其他规模(微型或美分符号)或不同的展期日;此警告旨在提醒您的代码应查阅规范说明,而非直接假设相关参数。
  • ATR 指图表时间周期内最后一个收盘K线的 ATR(14)。对于 CSV 文件中的其他符号,其 ATR 值根据K线历史数据计算得出;启动后不久,该历史数据可能仍在加载中,此时“备注”列会予以说明,且第二次导出时会填入该值。
  • 该面板由 1 秒定时器刷新,而非每 tick 刷新一次。折叠状态保存在名为 SymbolSpecAuditor_<图表 ID> 的终端临时全局变量中,该变量会在指标被移除或图表关闭时被删除。请为每个图表使用一个实例。
  • 截图是在模拟账户上拍摄的,屏幕分辨率为 192 DPI,字体大小设为 4(仅警告模式下为 6),以确保面板能适配 750 像素的图像。默认大小 9 会生成更大的面板。

由MetaQuotes Ltd译自英文
原代码: https://www.mql5.com/en/code/77806

Spread Profile by Hour Spread Profile by Hour

显示每服务器小时的实际点差,数据源自您的经纪商自身的 tick 历史记录:每小时的中位数和第 90 百分位数,可选的点差成本(占止损价的百分比及每手成本),以及 CSV 导出功能。

iFVG Indicator With Signals iFVG Indicator With Signals

带信号的iFVG指标

加速震荡(AC) 加速震荡(AC)

加速/减速技术指标(AC)用于衡量当前驱动力的加速和减速。

离散 离散

离散技术指标由价格和交易量的变化决定。