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

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

每次回测、每个指标以及每项优化结果都基于交易终端所拥有的K线历史数据,而几乎没有人会对这些历史数据进行审核。 而本工具会这样做:它读取交易终端提供给专家顾问的K线数据,并统计其中六类缺陷——不合理的OHLC值、时间异常的K线、在经纪商声称正在报价时却缺失的K线、完全没有报价点或波动范围的K线, 与经纪商自身M1数据系列不一致的K线,以及点差为零或超过您设定的阈值的K线。

hia-marketwatch-panel

五个“市场观察”符号,M15周期,每个符号各5 000根已收盘K线;通过检测约需一秒。 需关注的列是Sess%——XAUUSD的数值为99.80,而其他四个为100.00——而Grid%的范围在68-100之间,主要反映每个符号的周末占比。 这与下文的日志块是同一份审计结果,两分钟后在第二张图表上重复执行以生成截图,因此文件前缀不同;所有数值均完全一致。为此已关闭“发现”文件,而“csv行数”统计的是该文件的行数,因此85项发现旁边显示为0。 出厂时的面板采用深色底板配浅色文字,此处已将其重新着色为白底黑字。

问题

缺失的柱状图是不可见的。 无论K线之间的时间间隔是一个周期还是三个小时,K线在图表上都并排显示,因此历史数据中的缺口看起来完全就像是市场清淡。策略测试器也不会对此发出警告:它只是对给定的数据进行建模,而跨越缺口进行的策略测试,实际上是在一个跳过了本应亏损的那一小时的市场上进行的。

真正重要的缺陷并不罕见。收盘价高于自身高点的K线,会让止损测试通过,而现实中本应失败。K线时间重叠会导致所有“回溯K线”的计算指向错误的K线。零 tick K线代表的是市场从未报价的价格。 如果某个时间周期的K线与经纪商自身的M1 K线不匹配,就意味着你的两个指标正在解读两个不同的过去。

针对所有这些问题的常规测试是滚动查看图表,观察是否有异常。这种测试既找不到问题,也无法令人信服地证明其有效性。

其检测内容

针对某个时间周期、单一符号、列表或“市场观察”中的所有内容,对最近N根已收盘K 线进行六项独立检查。每项检查都有可手动重新计算的定义,且每项检测结果都会连同K线时间写入CSV文件,因此报告可被审计,而非仅凭信任。

  • OHLC 一致性。 高价 < 低价,开盘价或收盘价超出 [低价, 高价] 范围,或四种价格中的任何一种等于或低于零。每根K线中,每项被违反的谓词会产生一个检测结果:倒置K线会合法地产生多个结果,因为此时开盘价和收盘价同时位于高价之上且低于低价。
  • K线时间。 从一根K线到下一根K线的时间未递增(重复K线或顺序错误的K线),以及开盘时间不在周期网格上的K线——time % PeriodSeconds() != 0——这是由错误导入或服务器会话中断导致的历史数据异常表现。
  • 与该符号自身交易时段相比缺失的K线。 对于每对连续的K线, 工具会计算其之间缺失了多少个网格开盘点。 随后——这也是使该数据具有实用价值的关键部分——它会查询SymbolInfoSessionQuote,以确认市场在每个缺失的开盘点是否本应进行报价。 每个报价时段之外缺失的开盘数据均有*合理解释*(如时段表中的夜间、周末、节假日);而时段内的缺失开盘数据则无法解释,并被单独计数。 完全没有交易时段记录的交易品种会被报告为“未分类”——绝不会被默认归类为“已解释”。在下文测量的经纪商中,既未出现这种情况,也未出现空的M1窗口;这些情况已被处理,但未在示例中展示。
  • 空K线与平K线。 当 tick_volume == 0 时,表示该K线由零 tick 构建而成;当开盘价 == 高价 == 低价 == 收盘价且包含 tick 数据时,即为平K线:在交易清淡时段属正常现象,但在流动性充沛时段则值得警惕,且在指标进行K线区间除法运算前应予以关注。
  • M1交叉核对。 每个被审计的K线都会根据其自身时间窗口内的M1K线重新构建——首先是开盘价、最高高点、最低低点、最后收盘价,以及累积的 tick 量——并将其与经纪商提供的更高时间周期的K线进行比较。 仅对M1历史数据实际覆盖的窗口进行比较;超出M1覆盖范围的窗口将报告为“超出覆盖范围”,而覆盖范围内但完全没有M1K线的窗口则单独计数。偏差以点为单位测量,并可选定容差值。
  • 点差合理性。 统计存储点差为零的K线数量、超过您设定阈值的点差数量,以及经审计K线中的最大点差和平均点差。充满零点差的历史数据无法回答任何成本相关的问题。

核心指标是交易时段覆盖率:经纪商自身交易时段表中应存在但实际拥有K线的开盘次数占比。网格覆盖率——即包括夜间和周末在内的每个时段的相同比率——显示在其旁边,因为仅看该指标,主要只能反映您审计了多少个周末。

测量示例

某Exness模拟终端(版本6230)Market Watch中的五个交易品种,时间周期为M15,每个品种最近5 000根已平仓K线,于2026年10月2日服务器时间08:07用约一秒钟完成审计。

交易品种 K线 跨度(天) 跳空 缺失开盘价 盘中缺失 OHLC 时间异常 空缺/持平 M1 比较 / 不匹配 / 最大偏差 网格覆盖率 交易时段覆盖率
XAUUSD 5 000 76.5 55 2 342 10 0 0 0 / 0 5 000 / 0 / 0.0000 分 68.10 % 99.80 %
欧元兑美元 5 000 72.1 10 1 920 0 0 0 0 / 0 5 000 / 0 / 0.0000 分 72.25 % 100.00 %
BTCUSD 5 000 52.1 0 0 0 0 0 0 / 0 5 000 / 0 / 0.0000 分 100.00 % 100.00 %
英镑兑美元 5 000 72.1 10 1 920 0 0 0 0 / 0 5 000 / 0 / 0.0000 分 72.25 % 100.00 %
美元/日元 5 000 72.1 10 1 920 0 0 0 0 / 0 5 000 / 0 / 0.0000 分 72.25 % 100.00 %

请将这两列覆盖率数据相互对照,因为这正是将它们分开计算的全部依据。网格覆盖率显示,每个外汇品种的覆盖率为68%-72%,而BTCUSD的覆盖率为100%——这实际上什么也没说明,仅仅是因为外汇市场周末休市,而加密货币市场则不休市。 交易时段覆盖率——即仅针对经纪商自身交易时段表所声称的开盘时间计算的相同比率——显示有四次为100.00%,XAUUSD为99.80%。这两列数据中有一项存在瑕疵;其余部分则源于日历因素。

那0.20%仅对应一个跳空,且幅度足够小,可以手动核对。检测结果文件中为此保留了一行记录:

符号;周期;检查;K线索引;K线时间;字段;详情;值 XAUUSD;M15;C3_GAP;3304;2026.09.07 18:30:00;缺口;类别=无法解释 交易时段=10;14

在 C3_GAP 行中,bar_time 表示缺失的 第一个开盘价,bar_index 表示紧随缺口之后的 K 线的索引(从最旧的已审核 K 线开始计数,从 0 开始),因此该行内容为: 在2026年9月7日(星期一),开盘时间为18:15的K线之后紧接着是开盘时间为22:00的K线,而从18:30到21:45之间的十四个开盘时间均缺失。 根据该经纪商的声明,周一黄金的报价时段为 00:00-20:58 和 22:00-24:00。 缺失的开盘数据中有10个(18:30至20:45)属于第一个交易时段;其余4个(21:00至21:45)则处于声明中的休市时段内。 十个无法解释,四个有解释,这正是该行所示。周一傍晚两个半小时的活跃交易时段,该交易终端上的每次回测都默默跳过了这一段,而在图表上,这仅表现为两根并排的K线。

其余2 332个缺失的XAUUSD开盘数据来自日历:11个周末(每个周末196个开盘),43个每日休市(每次4个开盘),以及那个周一缺口内的4个休市开盘——即2 156 + 172 + 4。 每种外汇货币对中的1 920个开盘点位仅来自十个周末,别无其他:10个周末,每个周末192个15分钟的开盘点位,总计恰好是1 920。 正是这些数字使得网格覆盖变得毫无意义,但它们仍然值得列出,因为如果某个交易品种的“已解释”开盘时间与其交易时段表不符,这就说明该交易时段表是错误的。

审计的其余部分未发现任何问题,这也是一种结果: 在25,000根K线中,不存在不可能的OHLC值,没有重复或超出网格的K线时间,没有空K线和横盘K线,且全部25,000根K线与经纪商自身的M1系列数据精确匹配至最后一位小数——最大偏差仅为0.0000点。 BTCUSD 还值得再补充一点:52 天内零跳空,且在全部 5,000 根K线中点差均精确为 700 点。固定点差虽非缺陷,但也并非有效衡量标准,基于此调优的策略实质上是基于一个常量进行调优。

每小时缺勤人数

XAUUSD M15,5 000根K线:每根缺失K线的开盘时间均按服务器日的时间计算,并根据经纪商自身交易时段表中该小时的说明进行划分。 带斜线阴影的K线表示报价时段外的开盘价——共11个周末,因此覆盖了所有小时,外加21:00的每日休市时段。10根实心K线是25,000根K线中交易时段表无法解释的唯一开盘价,均出现在某周一晚上。 数据源自本次运行的K线数据转储和交易时段转储;工具本身生成的是数值,而非图表。

同样是这五个交易品种在M1时间框架下,点差限制设为20点,这页显示的是截然相反的情况,值得单独用一段文字说明,因为它展示了当检查机制触发时的情形:共发现10 613处异常,EURUSD / 英镑/美元/美元/日元上分别出现20、22、40的平直K线;5,000根 黄金和BTC/USDK线中所有点差均 超过20点;而在M15上未出现缺口的这三组货币对中,单个交易时段内分别有25、28、20个缺失开盘价。 最后一个数据并不矛盾:5 000根M1K线横跨一周中的三天半,这完全是另一个时间窗口,而且在单个交易时段内出现一分钟的缺口远比出现十五分钟的缺口更为常见。 在M1时间框架下,两列覆盖率数据也趋于一致——GBPUSD的覆盖率均为99.44——因为如此短的时间窗口不包含周末,网格数据因此无法因周末因素而被美化。

hia-m1-spread-panel

在M1时间框架下使用同一工具,点差限制设为20点: Flat和SprHi现在显示数值,InSess在M15上看似干净的货币对中发现了缺口,而M1bad列显示为负值——因为在M1上,审计时段之下没有任何数据,因此交叉核对报告自身为异常——结果表绝不会对未测量的项目显示零值。

独立验证报告

上述计数器由一个与该工具代码完全独立的程序进行核查。一个 Python 脚本仅读取原始数据——即 EA 生成的 K 线数据转储和交易时段转储——根据上述定义重新计算 OHLC、时间、跳空、空盘/平盘及点差检查的每个计数器,并将结果与 EA 自身的汇总文件进行比对。

在本文所依据的运行测试中——涵盖 M1、M15 和 W1 时间周期的 15 个符号/周期审计——该脚本对比了215 个计数器,报告 0 处不一致, 其中包括上文提到的 10 次盘中跳空开盘,这些数据仅通过 K 线时间戳和交易时段表重新计算得出。

有两点是“重新计算”功能未涵盖的。M1交叉核对未包含在上述215个计数器中:该脚本虽能从交易终端本身提取M1数据序列并重建K线,但本次测试未执行该路径,因此“比较5000次/不匹配0次”的结果完全基于EA自身的计数。 此外,只有当两侧计数均为零时,才被确认为零——在所有运行中,均未出现不可能的OHLC值、非递增或超出网格的时间、非整数周期的跳空、空K线、 没有M1不匹配,M1覆盖范围内不存在没有M1K线的窗口,也没有超出容差范围的偏差。在本次测量的数据中,这些分支从未被触发。

确定该经纪商绝不会产生的缺陷定义的关键,在于对重新计数脚本本身进行的第二次、规模较小的测试:一个包含12根K线的合成历史数据,其中手动写入了缺陷并标注了预期计数——共29个断言,未涉及任何终端。 EA以相同的顺序应用相同的谓词,而这种操作本质上是将两个数据源并列比较,而非实际测量。 该测试框架仍是本工具中两项决策的来源:其一,倒置K线必须产生五项检测结果而非一项,因为当时间区间被颠倒后,开盘价和收盘价均同时高于最高价且低于最低价;其二,单一的未分割覆盖率数值几乎毫无意义。

该工具还会对自身的运算进行校验,并打印每个恒等式的两边,因此完全无需使用Python即可核对报告:

审计 1        : K线 25000 + 缺失 8102 = 33102,预期开盘数 33102 -> 通过
审核 1        : 预期开盘数 33102,审核区间内的网格开盘数 33102 -> 通过(5 个符号通过,0 个未通过)
审计 2        : C1 0 + C2 0 + C3 85 + C4 0 + C5 0 + C6 0 = 85,发现项总数 85 -> 通过
审核 2        : 提交至报告的发现项 85,发现项文件中的行数 85,被守护程序丢弃的 0 -> 通过

输入

输入 默认 功能说明
符号:空 = 图表符号,* = 市场观察,否则为以 , 或 ; 分隔的列表 空 终端不认识的符号会被跳过,仅生成一条常规级别的日志行,且完全不会生成计数行,因此重新计数时,绝不会将K线数据与未进行任何测量的行配对。
要审核的时间周期(0 = 当前图表周期) 当前 列表中的任意时间周期。网格检查在D1及以上时间周期会自动关闭,因为此时开盘价不在固定的秒网格上;而缺口检查在MN1时间周期会自动关闭,因为此时两个开盘价之间的距离并非常数。
每个符号需审核的K线数量(已收盘K线,按最新优先排序) 5000 仅限已收盘K线。根据定义,正在形成的K线会发生变化,因此会被报告为市场缺陷,而非历史数据缺陷。
C1:检查OHLC一致性 true 最高价 < 最低价,开盘价或收盘价超出该K线自身价格范围,或四种价格中的任意一种等于或低于零。每个K线针对每个违规条件记录一项检测结果。
C2:检查K线开盘时间(顺序、重复、网格) true 相邻两根K线的时间未递增,或开盘时间不是周期数的整数倍。
C3:根据报价时段检查缺失的K线 true 生成标题数据的检查。该检查需要该符号的交易时段表;若无该表,缺口将被报告为“未分类”而非“已解释”。
C4:统计空栏(无报价)和平移栏 true tick_volume == 0,且开盘价 == 高价 == 低价 == 收盘价,且该时段内存在成交量。
C5:从M1重新构建每个K线并进行比较 true 这是一项耗时的检查,值得提醒:在 M15 时间框架下,处理 5,000 根 K 线时,五个符号大约需要一秒钟;但在 W1 时间框架下,处理 55 年的历史数据时,每四根 K 线需要一次 M1 请求,处理四个符号耗时超过七分钟,其中几乎全部时间都花在终端自身的历史数据请求上。 在首次处理长期历史数据时,请将其关闭。
C5:忽略不超过此点数的偏差 0.0 针对较高时间周期采用四舍五入的经纪商,此处为容差值。0 表示报告所有差异。
C6:标记点差超过此值的K线(0 = 关闭) 0 统计超过限值的K线数量。无论是否设置限值,系统都会报告零点差计数、最大点差和平均点差。
交易日志:每次检查打印的示例结果 5 每张检查单中完整打印的实际行数,以便日志中显示缺陷本身,而不仅仅是其数量。
每项检测结果生成一行CSV数据 true 缺陷文件:每个缺陷占一行并包含工位时间,以便对报告进行核查,而非仅凭信任。
同时导出每个经过审核的生产批次(以便进行独立重新计数) false 将条形数据完全按终端输出时的原样写入,并附带会话表,这正是实现独立重新计数的关键。 关闭此功能将删除先前运行的转储数据,每个文件包含一行日志:一个 5 000 根K线的转储数据紧邻一条 500 根K线的计数行,这正是该工具旨在捕获的“无声错误”。
在图表上绘制结果表 true 在非可视化测试器中,该选项会通过生成日志行来自动关闭,而非导致测试失败。
面板角落 左上角 表格的锚点角。
面板字号 8 表格宽度超过单个图表标签所能显示的范围,因此被绘制为多个标签列;在较小的图表上,请减小该数值。
面板 X 偏移量,px 10 位置。
面板 Y 偏移量,px 18 位置。
每 N 分钟重新审核一次(0 = 仅审核一次) 0 用于在图表上保留该设置。它使用终端自身的时钟,因此该设置在策略测试器中的行为也相同。

报告

该工具测量的所有数据将作为一个数据块写入日志,相同的数值也会导出到CSV文件中。下文是上表中运行结果的该数据块原文,其中按符号细分的部分仅显示了XAUUSD——其余四个符号重复相同的十行内容。

=== 历史数据完整性审计器 ============================================ 符号:5(市场观察) 周期:M15 每个符号的K线数:5000(已收盘K线,最新在前) 检查项: C1 基于 C2 基于 C3 基于 C4 基于 C5 基于 C6 限值 0 点 C5 容差:0.00 点 每项检查的日志示例数:5 刷新频率:一次 文件前缀: HistoryIntegrityAuditor\MarketWatch_M15_62879570657522_*.csv 5个符号中的第1个:XAUUSD 5个符号中的第2个:EURUSD 5个符号中的第3个:BTCUSD 5个符号中的第4个: GBPUSD 第 5 个(共 5 个)符号:USDJPY =================================================================== HistoryIntegrityAuditor:第 1 次通过,针对 5 个符号,M15 周期,服务器时间 2026.10.02 08:07:11 HistoryIntegrityAuditor: C3_GAP 示例 1/5:XAUUSD M15 K线 2026.07.17 21:00:00 缺口类型=已解释 in_session=0 196 [... 同一检查的示例 2 至 5 ...] === 历史数据完整性审计器 - 第 1 轮结果 ======== 符号 K线数 网格% 交易时段% OHLC 时间 缺口 交易时段内 空缺 平盘 M1异常 最高点 XAUUSD 5000 68.10 99.80 0 0 55 10 0 0 0 - EURUSD 5000 72.25 100.00 0 0 10 0 0 0 0 - BTCUSD 5000 100.00 100.00 0 0 0 0 0 0 0 - GBPUSD 5000 72.25 100.00 0 0 10 0 0 0 0 - USDJPY 5000 72.25 100.00 0 0 10 0 0 0 0 - XAUUSD M15:2026年7月17日 20:30:00 至 2026年10月2日 07:45:00 期间的5000根K线, 76.47天,10个交易时段,点值0.001,0个开盘价落后于服务器时间 XAUUSD M15:报价时段 周日 22:01-24:00 | 周一 00:00-20:58, 22:00-24:00 | 周二 00:00-20:58,22:00-24:00 | 周三 00:00-20:58, 22:00-24:00 | 周四 00:00-20:58, 22:00-24:00 | 周五 00:00-20:58 XAUUSD M15: 网格开仓点 7342 = 5000 个K线 + 缺失的 2342 个,身份验证通过,网格覆盖率 68.10%,交易时段覆盖率 99.80% XAUUSD M15: C1开启,总计0(高<低 0,开盘>高 0,开盘<低 0,收盘>高 0,收盘<低 0,非正值 0) XAUUSD M15: C2 启用,总计 0(未上升 0,脱离网格 0),非整数周期的步长 0 XAUUSD M15:C3 启用,缺口 55(已解释 54,未解释 1,未分类 0), 缺失 2342,交易时段内 10,未分类 0,最大缺口出现在 2026.07.17 20:45:00 之后 196 个时段处 XAUUSD M15: C4开启,空缺0,持平0 XAUUSD M15:C5开启,M1覆盖范围为2026年06月23日03:04:00至2026年10月02日08:07:00, 对比5000,不匹配0,窗口为空0,超出覆盖范围0,最大偏差0.0000点 XAUUSD M15: C6限价关闭,点差为零 0,高于限价 -,最大值 238 点,均值 175.1568 点 XAUUSD M15:该符号的检测结果 55 [... EURUSD、BTCUSD、GBPUSD 和 USDJPY 的前十行结果相同 ...] 符号: 已审核5个,跳过0个 总计:K线25000根,缺失8102根,处于交易时段内10根,发现项85 审核1:K线25000根 + 缺失8102根 = 33102根,预期开仓数33102 -> 通过 审核 1:预期开仓数 33102,审核区间内的网格开仓数 33102 -> 通过(5 个符号通过,0 个未通过) 审核 2: C1 0 + C2 0 + C3 85 + C4 0 + C5 0 + C6 0 = 85,问题总数 85 -> 通过 审计 2:提交至报告的问题数 85,问题文件中的行数 85,被守护程序过滤掉的 0 -> 正常 文件概览:HistoryIntegrityAuditor\MarketWatch_M15_62879570657522_overview.csv(5 行) 文件发现项: HistoryIntegrityAuditor\MarketWatch_M15_62879570657522_findings.csv(85 行)文件摘要:5 个文件,5 行;会话 5 个文件,35 行; K线 5 个文件,25000 行 文件模式:HistoryIntegrityAuditor\MarketWatch_M15_62879570657522_<symbol>_{summary,sessions,bars}.csv 面板:1452 x 294 像素,16 个标签,最宽行 119 个字符 ===================================================================

注意 SprHi——在表格中,以及“limit”——在 C6 行。点差限制为 0,这意味着检查已关闭,因此该列显示为连字符而非零。 该工具将此规则应用于结果表的每一列以及每个符号行中的每个数据点:未运行检查的列显示“-”,运行检查且未发现缺失值的列显示“0”,且这两者绝不会显示相同的字符。 这比表面看起来更重要——如果间隙检查被关闭,按“柱数 / (柱数 + 缺失数)”计算的覆盖率将显示为确凿的100.00%。

运行后会在 MQL5\Files\HistoryIntegrityAuditor\ 目录下生成五个文件:

  • <前缀>_overview.csv — 列表中的每个符号占一行,包括无法审计的符号及其状态。
  • <前缀>_findings.csv — 每行对应一个缺陷:符号;周期;检查项;K线索引;K线时间;字段;详细信息;值。
  • <前缀>_<符号>_summary.csv — 某个符号的所有计数器数据,共 62 列,包括算术恒等式。
  • <前缀>_<符号>_sessions.csv — 该符号的报价会话,按经纪商申报的数据呈现,这是决定是否解释跳空的输入依据。
  • <前缀>_<符号>_bars.csv — 可选,包含终端提供的原始经审计K线数据。

后两个文件使得报告能够通过本工具以外的其他方式进行核查,这也是上一节的主题。前缀包含符号标签、时间周期和图表 ID,因此两个图表不会相互覆盖对方的证据,且测试运行会将数据写入代理自身的沙盒中,而非覆盖实时运行的文件。

使用方法

  1. 将其附加到您实际进行测试的符号和时间周期的图表上,将K线数量设置为至少涵盖回测所用的范围,然后阅读日志。
  2. 首先查看“会话覆盖率”和“会话缺失” 两项指标。这两个数值决定了您的回测是在真实市场环境中运行,还是仅基于市场模型进行的。
  3. 按“bar_time”字段中的小时对结果文件的“C3_GAP”行进行排序。若缺口集中在一天中的某个特定小时,通常是服务器或交易时段问题;若缺口分布均匀,通常是数据下载不完整所致。
  4. 在交易终端的“符号”对话框中点击“刷新”(或删除历史数据并让其重新下载),然后再次运行审计。两次运行结果之间的差异,代表的是交易终端本地缺失的数据,而非经纪商端缺失的数据。
  5. 为您的EA进行交易的时间段开启M1交叉核对功能。如果刷新历史数据后仍存在不匹配情况,则值得向经纪商询问:这意味着其自身的两个数据序列之间存在不一致。
  6. 在更换经纪商、服务器或任何与历史数据获取方式相关的设置后,请重新运行审计。数据质量是特定终端在特定时间下的属性,而非交易品种的属性。

限制条件,直白地说

  • 它审计的是您的交易终端所保存 的历史数据,即您的测试所使用的历史数据——而非经纪商服务器可能仍在发送的任何数据。刷新历史数据可能会改变此处的每一个数值,而上述第4步的存在正是出于这个原因。
  • 会话表所指出的缺口仍可能是真实的缺失,因为会话表同时也代表了经纪商的声明。该工具同时显示这两个数值,以便将两种说法进行比较,而非混为一谈。
  • M1交叉核对仅对M1历史数据覆盖的范围有效。按设计,它对更早的K线保持沉默,且其跳过的窗口数量会显示在已比较的数量旁边。
  • Tick数据未经过审计。基于真实Tick数据的回测拥有第二套数据集,该数据集本身存在缺陷,而本工具不会对其进行分析。
  • 本工具仅提供报告,不进行修复。此处没有任何操作会写入历史数据,且任何发现本身均不能证明经纪商存在过错——终端离线一小时产生的缺失K线与数据源中断时产生的缺失K线完全相同。
  • 无交易功能、无DLL、无网络访问、无外部文件:它仅读取K线数据,并将CSV文件写入MQL5\Files目录。

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

Mirror Hedge EA (Same terminal and account only) Mirror Hedge EA (Same terminal and account only)

根据魔术号,镜像同一对冲账户中由另一个EA开仓、修改和平仓的交易。默认情况下,它会反转交易方向(买入↔卖出,止损↔止盈),因此您可以使用真实的点差、滑点和成交情况对策略的反向操作进行回测。

Alpha Engine: Intrinsic-Time Coastline Trader Alpha Engine: Intrinsic-Time Coastline Trader

奥尔森团队的Alpha Engine的移植版本:八个限价交易代理在对冲账户上交易内在时间的趋势反转。它们在价格超调时加仓,并在趋势反转获利时减仓。

WaveMaster Pro EA WaveMaster Pro EA

WaveMaster示波器的信号驱动型自动化功能。 WaveMaster示波器的自动化执行引擎。可实时读取信号缓冲区。内置全面的风险管理、追踪和平仓功能。

Closed Trades Exporter MAE MFE Closed Trades Exporter MAE MFE

该功能将已平仓交易导出为CSV文件,其中包含基于M1历史数据计算的“最大不利波动”(MAE)和“最大有利波动”(MFE)值(以点数和金额为单位),以及每笔交易所捕捉到的可用波动比例。