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

Broker Clock Auditor - MetaTrader 5EA

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
显示:
13
等级:
(1)
已发布:
MQL5自由职业者 需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务

专家顾问中的每个交易时段过滤器都是基于服务器时间编写的,而服务器时间取决于经纪商选择的时钟标准。有些服务器采用UTC时间,有些在冬季采用UTC+2、夏季采用UTC+3,而且时间调整的服务器并不都在同一个周末进行调整。 该工具从交易品种自身的价格历史数据中读取时间,而非依赖论坛帖子:外汇和CME交易周于纽约时间17:00收盘,因此将每周收盘时的服务器时间与该时刻的UTC时间进行对比,即可得出该周服务器的时差。 在过去的60周内,大约有60个测量值(每个收盘时间对应一个),根据这些序列,该工具可以判断时钟是否调整、何时调整以及采用的是哪种日历——美国夏令时还是欧洲夏令时。随后,它会显示未来几周伦敦、纽约、东京和悉尼开盘时的服务器时间。

bca-panel

Exness模拟服务器,五个“市场观察”符号,每个符号包含60周的H1K线,单次处理耗时12.3毫秒。当前显示的是最近一次常规收盘时的时差;“日历”字段显示时区状态为“固定”、“美国”或“欧盟”,并标注美国和欧洲夏令时切换日期是否位于该时间窗口内(已测试); “不规则”统计与周围收盘价不一致的收盘价,此处为黄金因美国节假日导致的四次提前收盘;“周日”统计服务器时间中至少包含一根K线的周日。BTCUSD全天候交易,无收盘价可供测量。截图时将面板字体大小设为4以适应页面;默认值为8。

问题

诸如“10:00 至 13:00 交易”之类的交易时段过滤器,是基于服务器时钟对伦敦或纽约时间的约定。只有当两个时钟之间的时差保持不变时,该约定才成立,而每年有两次时差会发生变化。 欧洲和美国在不同的周末调整时钟——2026年,美国于3月8日将时钟拨快,欧洲则于3月29日拨快;到了秋季,欧洲于10月25日将时钟拨回,美国则于11月1日拨回。 在春季的三周和秋季的一周里,伦敦比纽约早四小时而非五小时,而遵循其中一种日历的服务器将与另一座城市的时间出现偏差。

这些周中哪一周会影响某个EA,取决于服务器自身的规则,而该规则很少以程序可读的形式记录下来。 TimeTradeServer() − TimeGMT() 会给出今天的时差,但该值是根据电脑的时钟和时区计算得出的,对于进行回测的去年3月或下个月的情况则毫无说明。

其衡量标准

基准点。 银行间外汇交易周,以及金属和美国指数期货的CME交易周,均于美国纽约时间17:00结束。 对于该交易品种H1历史数据中每次持续至少InpMinGapHours小时(默认20)的中断,该工具将收盘价定义为:中断前最后一个H1K线的时间(开盘价)+ 1小时, 并将 U 设为最接近该时间的纽约时间 17:00,并根据美国夏令时规则转换为 UTC 时间。close − U 即为该收盘价对应的服务器时差。节假日暂停(圣诞前夕、除夕)同样在 17:00 结束,也视为锚点。

  • 非正常收盘。 如果某次收盘的偏移量既与之前的最后一次常规收盘不同,又与之后的收盘不同,则该收盘会被标记并排除在以下所有计算之外(第一个和最后一个收盘绝不会被标记):例如,某周五数据延迟一小时的行情源,或者历史数据中存在足够长、看起来像暂停的缺口,否则会被解读为两次时钟变更。
  • 切换点。 两个偏移量不同的连续常规收盘时间界定了时区切换。 该工具会将时间定位在两个收盘价之间,并以协调世界时(UTC)为基准,将该时间段与美国时区切换日(3月第二个星期日、11月第一个星期日)及欧洲时区切换日(3月最后一个星期日、10月最后一个星期日)进行比对,同时验证方向:春季切换应使偏移量向上调整,秋季切换则应向下调整。 每个时区切换被标记为 US、EU、US+EU(若时间段内同时包含美国和欧洲切换,且数据过稀)或其他。
  • 时区模式。 无切换 = 固定偏移量;全部为“US” = 美国日历;全部为“EU” = 欧洲日历;其他情况 = 混合模式。只有当时间窗口内包含至少一个美国切换日期和一个欧洲切换日期时,固定判定才被视为“已测试”——仅7月份的四周历史数据无法区分固定时区与浮动时区,该工具会明确提示这一点。
  • 周日K线。 服务器上至少包含一根H1K线的周日(及周六)数量。采用UTC时区的服务器于周日晚间开启外汇交易周,这会使每个基于D1的指标多出一根第六根、较小的日K线。
  • 实时交叉验证。 在实时图表上,历史数据给出的偏移量旁边会显示 TimeTradeServer() − TimeGMT()。若存在差异,则表明问题出在电脑的时钟或时区上,而非服务器。
  • 预测。 根据最新的时差和检测到的日历,系统会计算未来 InpProjectWeeks 周内每个工作日的伦敦、纽约、东京和悉尼开盘时间(以当地时间作为输入)。仅列出其中任一开盘时间发生变化的日期。

当涉及多个交易品种时,系统将采用最常见的偏移量和日历作为最终结果,而与之不符的交易品种将在日志中列出——例如,纽约时间16:00收盘的股票差价合约显示偏移量为1小时,而24/7交易的加密货币品种则完全没有收盘时间。

三台模拟服务器,三套时钟

附图为2026年10月7日的EURUSD H1图表;包含截至最新K线(2025.08.13至2026.10.07)的60周H1K线; 除符号列表外,所有输入均采用默认设置(Exness平台使用*,其他两个平台使用指定符号名称)。

服务器 交易品种 平仓 当前偏移量 日历 已观察到的切换(首次关闭后) 不规则收盘 带有K线的周日
Exness-MT5Trial17 EURUSD、GBPUSD、USDJPY、XAUUSD 各62 UTC+0 无,已测试 — XAUUSD 4,其余 0 60
ICMarketsSC-模拟 EURUSD、GBPUSD、USDJPY 各62 UTC+3 美国 2025年11月8日 −1小时,2026年3月14日 +1小时 0 0
MetaQuotes-模拟 欧元/美元、英镑/美元、美元/日元、黄金/美元 62 / 40 / 40 / 62 UTC+3 所有4个指标均显示看涨;偏移:4个中有3个达成一致 2025年10月31日 −1小时,2026年4月4日 +1小时 EURUSD 1,XAUUSD 4 0

bca-三台服务器

该偏移量基于三个模拟服务器上欧元兑美元每次纽约时间17:00收盘价推算得出,数据范围为2025年8月1日至2026年10月7日的H1K线,每台服务器64个收盘价,每个收盘价对应一个点;虚线表示美国时区切换点,点线表示欧洲时区切换点。 数据源自通过MetaTrader5 Python包及终端MCP接口读取的H1K线时间,而非该工具自身的输出结果。

Exness:全年采用UTC时间。 62个收盘价均显示为+0:00,包括圣诞前夕和除夕的停盘时段。 变化的是收盘价本身:当纽约处于夏令时(3月中旬至11月初)时,当周最后一个H1K线以服务器时间21:00结束;其余时间则以22:00结束。 每周日都有从 21:00 或 22:00 开始的K线,因此日线图上会出现第六根短K线。黄金的偏移量相同,并增加了四个不规则收盘价,均为美国节假日提前收盘: 2025年11月28日“黑色星期五”(−2小时)、圣诞前夜(−3小时)、2026年6月19日“六月节”以及2026年7月3日星期五(各−4小时)。

IC Markets:遵循美国日历,冬季为UTC+2,夏季为UTC+3。 在2025年11月1日至8日以及2026年3月7日至14日这两个周末(即美国调整时钟的周末),时差会发生变化。外汇交易周全年均从周一00:00持续至周五24:00(服务器时间),周日不生成K线。

MetaQuotes-Demo:采用欧洲日历,时区为UTC+2 / UTC+3。 时区切换发生在2025年10月25日至31日以及2026年3月27日至4月4日的收盘之间。 其中一个欧元兑美元的收盘时间不规则:2026年3月13日星期五,在美洲时区与欧洲时区切换期间,最后一个K线于服务器时间00:00结束,比纽约时间17:00晚了一小时,而其前后的收盘时间均准时。 英镑兑美元(GBPUSD)和美元兑日元(USDJPY)在此交易终端上仅保留了自2026年1月起的H1历史数据,因此仅显示了春季切换的情况。 黄金与上述三组货币对的情况不同,日志中已特别说明:自2026年春季欧洲交易时段切换以来,其周收盘时间一直保持在服务器时间23:00,即纽约时间17:00前一小时,因此目前其时间显示为UTC+2:00。

这对未来几周意味着什么。 2026年10月7日的三项预测:在Exness平台,伦敦市场在10月23日之前于服务器时间07:00开盘,10月26日起于08:00开盘;纽约市场在10月30日之前于12:00开盘,11月2日起于13:00开盘。 在 IC Markets 上,伦敦市场开盘时间为 10:00,但 10 月 26 日当周除外,该周开盘时间为 11:00。 在 MetaQuotes-Demo 平台上,纽约市场开盘时间为 15:00,但上述同一周除外,该周开盘时间为 14:00。编写为“伦敦 10:00”或“纽约 15:00”的过滤器在 2026 年的 52 周中,有 48 周(其中 48 周中的 48 周)在 UTC+2/+3 服务器上均正确,但在其余四周中则不正确——其中三周在春季,一周在秋季,每个过滤器分别位于不同的服务器上;在 2027 年和 2028 年,春季的偏差为两周。

在所有三个实时连接中,交叉核对结果均与历史数据一致:TimeTradeServer() − TimeGMT() 在 IC Markets 和 MetaQuotes-Demo 上结果为 +3:00,在 Exness 上结果为 +0:00。 在准备本页面时,曾启动一个未登录的交易终端;离线状态下,该终端在+3:00时区的服务器上显示的时差为+0:00。因此,当终端未连接时,该工具会跳过检查,仅生成一条日志记录。

独立验证报告

该报告可在 MetaTrader 外部重新计算。 本页面使用的脚本仅读取摘要文件中的窗口数据,通过Exness服务器的终端MCP接口以及另外两台服务器的MetaTrader5 Python包,提取相同的H1K线时间,并使用Python的时区数据库(而非工具自身的夏令时规则)重新计算上述所有内容: 每个锚点行、每个切换行及其日历、每个汇总计数器、判定结果的偏移量及其日历,以及每个预测行。在本文展示的三次运行中,其结果在328、250和284个数值上完全一致,未出现任何差异。 该工具的定义首先通过十个手动处理的案例进行了验证——包括八个合成K线序列(固定型、美国型、欧洲型、反向切换、节假日暂停、数据缺失、间隔一周的两次提前收盘)以及两个预测——其中故意植入的十处错误均被成功检测出来。

使用方法

将该专家顾问附加到任何图表上。若 InpSymbols 为空,则审计当前图表的符号;输入 * 则审计“市场观察”中的所有符号;输入以逗号分隔的列表则审计该列表中的符号。请选择在周末停盘的符号——如主要货币对、黄金、指数期货;加密货币符号因无收盘价可供测量,故不适用。 审核运行一次(或每隔 InpRefreshMinutes 运行一次),在专家顾问日志中为每个符号打印一行,内容包括其异常收盘价、状态切换、审核结果及预测值;同时在图表上绘制表格并生成 CSV 文件。该程序仅读取历史数据:代码中不包含交易功能,无 DLL 组件,也不进行网络访问。 带 * 时,该工具仅读取“市场观察”中已有的符号。 该工具从不主动选择符号,但当某上市符号未出现在“市场观察”中且需先下载其历史数据时,终端会自动将其添加至“市场观察”(经测试:EURCHF和AUDNZD在首次读取时被添加,而AUDUSD在第二次读取时未被添加); 日志会在首次读取前列出此类符号的名称。

请先阅读日志。在 IC Markets 上,EURUSD 的日志记录为

EURUSD 62 个锚点(60 个周末,2 个节假日) | 当前 UTC+3:00 | 已观察 +2:00 +3:00 | 2 次切换: 2025.11.08 美国 -60,2026.03.14 美国 +60 | 时区模式:美国,dst_tested 1 | 不规则 0 | 周日K线 0天

这表明欧元兑美元在该时间窗口内收盘62次,服务器时间目前比UTC快3小时,此前也曾快2小时,且时钟曾两次调整:在2025年11月8日之前的一周向后调整1小时,在2026年3月14日之前的一周向前调整1小时,两次调整均以美国日期为准。 随后的预测线列出了时间变更当日各开盘时的服务器时间,例如

预测 2026.10.26 周一 时差 +3:00 伦敦 11:00 纽约 15:00 东京 03:00 悉尼 周日 23:00(伦敦)

使用多个在周末停止的符号:多数符号的结论即为最终结果,而持不同意见的符号将被标出。

输入

输入 默认 含义
InpSymbols "" 符号:空 = 图表符号,* = 市场观察,否则为 CSV 列表
InpWeeks 60 要读取的H1历史数据周数(60周涵盖两个夏令时季节)
InpMinGapHours 20 报价中断时间达到此长度即表示市场休市(周末/节假日)
输入项目周数 8 按服务器时间计算,项目开始前的交易日数(以周为单位)
InpLondonOpen 08:00 伦敦开盘,伦敦当地时间
InpNewYorkOpen 08:00 纽约开盘,纽约当地时间
InpTokyoOpen 09:00 东京开盘,东京当地时间
InpSydneyOpen 07:00 悉尼开盘,悉尼当地时间
InpMaxExamples 5 日志:按符号打印的不规则锚点
InpWriteCsv true 写入锚点、开关、摘要、投影和结论的 CSV 文件
InpShowPanel true 在图表上绘制结果表
InpPanelCorner CORNER_LEFT_UPPER 面板角
InpPanelFontSize 8 面板字体大小
InpPanelX 10 面板 X 偏移量,px
InpPanelY 18 面板 Y 偏移量,px
InpRefreshMinutes 0 每 N 分钟重新审核一次(0 表示仅审核一次)

超出范围的值(周数超出2至520范围、暂停时间超出6至60小时、预测时间超出1至52周、开放时间非HH:MM格式)将被限制或重置为默认值,并分别生成一条日志记录;专家顾问绝不会拒绝启动。

输出文件

所有文件均保存在 MQL5\Files\BrokerClockAuditor\ 目录下,以分号分隔并包含一行标题,文件名格式为 <symbols>_<weeks>w_<chart id>_…,以确保两个图表的文件绝不会互相覆盖。

  • …_<symbol>_anchors.csv — 每行对应一个收盘价:服务器时间、UTC 时间下的纽约时间 17:00、分钟偏移量、是否为周末或节假日、暂停时长、重新开启时间、是否为常规或非常规。
  • …_<symbol>_switches.csv — 每行对应一次交易时段变更:该变更前后各一个收盘价、变更前后的偏移量、日历信息。
  • …_summary.csv — 每个代码行对应一行,包含上述所有计数器数据。
  • …_projection.csv — 预计交易时段开盘时间,每当其中一个时间发生变化时,按日生成一行。
  • …_verdict.csv — 总体偏移量和日历信息、匹配的符号数量以及实时偏移量。

限制条件,简明说明

  • 基准点是纽约时间17:00收盘。收盘时间不同的符号(如16:00收盘的股票差价合约、部分指数)会根据时间差进行偏移;若将其与主要符号混合,日志会将其标记为不一致。
  • 分辨率以H1K线为基准:偏移量以整小时为单位显示。若某服务器采用半小时偏移,其数据将按其K线所属的小时进行四舍五入。
  • 若经纪商在与美国或欧洲夏令时无关的日期更改其服务器时间,其时间将有所不同,且其预测会假设最新的时差保持不变。
  • 该预测是基于历史数据所显示的日历范围进行的。它无法预知经纪商下个月会将服务器迁移至另一个时区。
  • 首次读取终端尚未保存历史数据的符号时,可能仅包含几周的数据(实测:EURCHF初始数据为2.8周)。日志会显示“窗口缩短”,日历显示“未测试”;待历史数据导入后请重新运行。
  • 在切换日期前后,若某周两端均无常规收盘时间,时间范围会扩大;当时间范围同时包含美国和欧洲日期时,该切换将标记为“US+EU”,而非由系统推测。
  • 上述数据描述的是所示日期上的三台模拟服务器。这些数据并不涉及同一经纪商的实盘服务器,后者可能采用不同的时间基准。

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

Advanced Prop-firm Trade Panel based on S-R Advanced Prop-firm Trade Panel based on S-R

一款适用于 MetaTrader 5 的手动交易面板,内置自营交易公司风险防护功能和隐藏式支撑/阻力位查找器。

CajasTF – MT5 集成多时间周期侧边栏 CajasTF – MT5 集成多时间周期侧边栏

带有智能配色、独立价格刻度以及K线倒计时器的实时多时间周期侧边栏迷你图表。

Prop Daily Loss Meter Prop Daily Loss Meter

显示自营交易公司账户的每日亏损限额中已使用多少,以及剩余多少。该指标为只读。

离散 离散

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