- 显示:
- 12
- 等级:
- 已发布:
-
需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务
几乎每个指标的描述中都包含“不重绘”这一短语。但几乎没有一个包含具体数值。这一短语本身不可能有误,因为它没有关联任何具体操作——无论是有过验证经验的开发者,还是从未验证过的开发者,写出的都是同样的句子。本脚本将该短语替换为具体数值。
不变量
一旦K线收盘并被处理完毕,该指标在其上绘制的任何对象都不得发生任何变化。既不能移动,也不能变色,不能更改文本,也不能消失。这是一个可能不成立的断言,正因如此,才值得进行测试。
方法
向自定义符号中注入一段真实历史数据的预热片段,通过模板附加您的指标,并记录其绘制的每个对象。随后追加更多K线,并强制图表进行完整重新计算,从而使指标在更长的历史数据上从头重建每个对象。 随后,在新的计算过程中,会查找前一次计算中位于已平仓K线上的每个对象,并逐项进行比较:两个锚定时间、两个锚定价格、颜色和文本。根据您的要求重复此过程,直至达到指定步骤数。
完全重建比增量 tick 测试更为严苛。 该指标必须利用不同的数组索引,从更长的历史数据中重现完全相同的图表,且完全不记得上次绘制的内容。这正是用户向后滚动足够远、促使交易终端加载更早K线时所触发的过程,也是基于K线索引(而非K线时间)命名的对象在此处出现问题的根源。
其关键所在
变化和消失分别计数,只有发生变化才意味着该说法不成立。大多数绘图指标在超过上限后会刻意清除旧对象,因此对象消失通常是您自己的 MaxObjects 或 HistoryBars 设置所致,而非程序缺陷。请取消这些限制后再运行。
未进行任何比较的运行将被报告为“INCONCLUSIVE”(结果不明确),绝不会被报告为“通过”。测试框架可能存在的最危险的缺陷,就是将空运行报告为成功,因为最终被引用的往往就是这个数字。
输出结果为位于 MQL5\Files 目录下的 CSV 文件,每行对应一个符号、时间周期和步骤,包含已比较、已更改和已消失的对象数量,以及第一个出现问题的对象。将 marks_compared 列的数值相加,即可得到可发布的数字——以及作为依据的文件。
用法
1. 将“前缀”(Prefix)设置为您的指标对象名称的前缀。在“排除”(Exclude)列表中列出所有按设计会发生变化的内容:例如每 tick 重新绘制的图例、倒计时器等。这些不属于标记。在此声明它们比默默过滤它们更为坦诚。
2. 将您的指标附加到一个已解除所有绘图限制的图表上,并将该图表保存为模板。然后将“模板”指向该模板。
3. 提高 SettleMs 值,直到首次遍历中的标记计数在多次运行之间不再变化。如果该值设置得太低,虽然不会产生错误,但会导致标记出现“幽灵般”的消失现象。
4. 故意制造一次故障:将一个对象偏移一个条形,并确认脚本会报告该故障并标注字段名称。从未出现过故障的测试套件尚不能作为证据。
它不会告诉你的内容
该指标是否准确,或者其信号是否有用。它只回答了一个狭义的问题,而这也是该答案唯一有价值的原因。
有两种看似测试实则不然的方法,此前都曾尝试过但已被放弃:策略测试器(Strategy Tester),在该环境中,MT4上的EA完全无法枚举由iCustom驱动的指标对象; 以及在实时图表上调整指标自身的HistoryBars输入参数——这虽然会改变循环的起始位置,但对rates_total及所有数组索引均无影响,因此该类本应捕获的错误从未被触发。
免费提供,无需署名。如果它在您的代码中发现了问题,我很乐意听听具体情况。

由MetaQuotes Ltd译自英文
原代码: https://www.mql5.com/en/code/76632
Sniper Gold Hybrid Recovery EA
XAUUSD M15 篮式反弹自动交易系统,具备自适应 ATR 间距、LL/LH 结构验证、动态 RSI 闸控、暴跌检测、新闻过滤以及智能交易修剪功能。
Volume Profile Levels Indicator
基于最近的回溯窗口构建水平成交量直方图,并使用标准的TPO/成交量价值区域扩展算法标记控制点(POC)和价值区域——而不仅仅是POC±固定偏移量。每出现一个新K线更新一次,以侧边栏形式显示在价格旁边。
Support Resistance zig zag based
基于锯齿线的支撑阻力指标是一款价格行为指标,旨在自动且动态地在图表上标注支撑位、阻力位及过渡区域(反转区)。该指标完全专注于清晰地映射价格结构,并突出显示关键反弹区域(SBR 和 RBS)。此外,它还包含一个交互式仪表盘,用于监控实时的市场走势。
离散
离散技术指标由价格和交易量的变化决定。