深入解析ZigZag指标的工作原理
大家好,今天我们来聊聊ZigZag指标。乍一看,这个指标似乎是寻找市场顶部和底部的“圣杯”,对于像趋势跟随或摆动交易策略的交易者来说,具有极大的吸引力。很多新手可能会对它感到无比惊艳,认为只要依靠这个指标,就不会出错。然而,事实并非如此,因为这个指标存在一种叫做“重绘”的现象。也就是说,在实时的价格波动中,指标会根据新的价格数据调整最新的顶部或底部。当ZigZag指标的顶部或底部最终确定时,市场的当前情况早已发生变化,根本无法与最初标记的价格相符。
不过,这并不意味着这个指标毫无价值!相反,它可以有效地用于分析历史数据,并为多种策略创造良好的交易机会,但并不是大多数新手所想象的那样。关于如何有效使用这个指标的想法还有很多,我也欢迎大家在评论区分享自己的经验,不过这并不是本文的主要目的。
我想对原始的ZigZag代码进行改写,以便于阅读(至少对我来说更容易理解),更重要的是,视觉上展示出其内部运作机制,这些通常在原始指标中是看不到的(见下方图片)。以下是我改编的这个指标ZigZagExtras所展示的“扩展功能”列表:
- 图形上显示的线条展示了最高点和最低点,这是原始指标的“深度”参数之一。
- 除了当前和已确定的顶部及底部点外,还会显示过去曾被视为有效顶部或底部的强候选点。这些点用小的实心圆圈标记在高点(●)和低点(●)上。
- 可选,该指标还可以显示所有突破点,包括高于最高点(○)或低于最低点(○)的点,这些点通常被认为是ZigZag指标内部运作的潜在顶部和底部。通常,这些点最容易被“重绘”,随着当前价格的发展,新手往往会错误地认为这些是有效的当前顶部或底部,结果对他们的账户和心态造成了严重影响。
这段代码和额外的视觉提示,旨在帮助大家更好地理解这个指标的工作原理,同时也作为可能的信号,可以在多种策略中使用。这些信号可以用于快速的突破交易,或者作为回调前的预警,甚至还有许多其他用途,等待着大家去发掘。我相信大家会有很多想法,也希望愿意在这里与大家分享。
使用说明:
只需将该指标附加到图表上,并根据原始ZigZag指标设置参数。但请注意,参数的顺序有所不同,深度和回溯步长被放在一起,因为它们都是柱周期或计数。此外,偏差参数也可以设置为小数点后的PIP(适用于3/5位数的经纪商)。可选择设置布尔标志,以在图表上显示突破点。
您还可以启用高点和低点突破的警报,警报文本可配置,以便使用您自己的语言或词汇进行呈现。
版本更新日志
如果您发现任何错误或有任何建议,或者希望在未来版本中加入的“功能”,请随时告诉我。
- v1.5: 添加了严格编译模式的编译指令。
- v1.4: 修复了偶尔出现的“数组越界”错误。
- v1.3: 即使不显示突破点,也允许使用警报功能。
- v1.2: 在警报消息中显示符号和时间框架(周期),便于同时在多个图表上使用。
- v1.1: 允许在突破高点或低点时设置警报。还修复了一个错误,导致指标无法在新数据上更新。
指标示例视图(无突破点和有突破点):
请注意,我所有的CodeBase出版物的源代码现在也可以在MetaEditor的“公共项目”标签下找到,名称为“FMIC”。

