大家好,今天我们来聊聊ZigZag信号灯指标,这个工具在MetaTrader 4平台上非常实用。
这个指标会在每个ZigZag转折点上标记一个信号灯(我们通常称之为信号灯),并支持四种不同的ZigZag评估长度。这意味着ZigZag不会在图表上直接绘制线条,而只是标记出转折点的位置。
这个算法相对简单,源自于“!!!-MT4 SEMAFOR”中的一个帖子,实现方法包括“DetectNewSwing”、“LoadIndiBuffers”和“SetSwingBarValues”。原版在策略测试器中无法运行(我认为它只能在历史数据上正确显示标记),而我们这个版本在策略测试器中表现良好。
我相信这个实现的算法基本上忠于原版,标记的位置也与原版相符,尽管可能存在一些小瑕疵。如果需要的话,还可以在这些函数中实现更复杂的算法。
标记的显示方式如下:
- 一级标记:用小白点表示
- 二级标记:在白点周围添加红色圆圈
- 三级标记:在白点和红圈周围添加黄色圆圈
- 四级标记:在所有标记周围添加绿色圆圈

用户可以自定义长度,默认设置如下:
- extern int Level_1_Length = 21; // ZigZag 1检测长度
- extern int Level_2_Length = 40; // ZigZag 2检测长度
- extern int Level_3_Length = 60; // ZigZag 3检测长度
- extern int Level_4_Length = 72; // ZigZag 4检测长度
此外,我们还添加了两个控制按钮,一个用于开关显示标记的价格值,另一个用于清除或重新显示所有指标标记。只需点击这两个文本对象即可在开和关之间切换。

我认为我在代码的结构和注释上做得还不错,方便对代码感兴趣的朋友了解。

评论 0