- Published on
Zigzag
- Authors

- Name
- CoresightQuant
NOTE
本文为公开交易策略的技战术复盘,聚焦方法逻辑、交易场景与风险边界。
策略解读
在技术分析的世界里,Zigzag(之字形)指标是一个看似简单却又极具内涵的工具。它就像是给价格走势拍了一张“骨架X光片”,去掉了日常波动中的肌肉和脂肪,只留下最关键的骨骼结构——那些显著的波段高低点。本文所介绍的公开脚本,虽然以一个“库”的形式呈现,本质上是对Zigzag核心类型和基础操作的一种封装。原作者将其命名为“Zigzag”,并定义了与枢轴点(Pivot)相关的类型和方法,目的是为了让使用者能够更方便地获取和管理这些关键拐点。
Zigzag指标的核心思想是:市场并非线性运动,而是由一系列具有方向的波段构成的。每一个波段都有一个高点和一个低点,而Zigzag的任务就是识别出那些满足特定条件的波段转折点。它通过设定一个最小价格变动幅度(通常以百分比或ATR倍数表示),来过滤掉小于该幅度的价格波动。当价格相对前一个确认的转折点反向波动超过阈值时,新的转折点才被确认,并以此为基础继续寻找下一个转折点。
例如,假设我们设定一个5%的阈值。价格从100元上涨至106元,涨幅6%但尚未回调,此时不构成转折。随后价格跌回102元,下跌幅度为102/106 - 1 ≈ -3.8%,小于5%,仍不形成新的低点。直到价格跌至100.7元以下(较106元跌幅超过5%),此时103.5元这个次高点才被确认为一个转折高点。这个确认过程赋予了Zigzag延迟性,但也保证了其绘制出的结构具有统计意义。
在实际交易中,Zigzag的价值并不在于它本身能预测方向,而在于它提供了一种客观的、可复现的“市场结构语言”。借助它,交易者可以轻易地确定当前所处的趋势阶段,测量最近一波上涨或下跌的长度,进而为斐波那契回撤、趋势线突破、波浪理论计数等高级分析提供基准。
原作者在脚本中提到的“Pivot”对象,正是Zigzag输出的最基本的元素——每一个转折点都是一个枢轴点。它可能包含价格、时间、序号、类型(高点/低点)等属性。而“tostring”方法则是将这些属性序列化为可读文本的辅助功能,方便调试或数据导出。这提示我们,在构建自己的交易系统时,将关键结构数据对象化并标准化,是一个值得借鉴的工程思路。
名词解释
在深入策略之前,我们有必要先厘清几个关键术语。这些词语在Zigzag指标及其衍生应用中反复出现,理解它们有助于真正掌握这一工具的用法。
Zigzag指标:是一种连接价格序列中显著转折点的技术分析工具。它通过设定最小波动阈值,过滤掉不足以构成趋势反转的价格变化,以折线形式展示市场的核心波动结构。通常被用于识别趋势方向、测量回撤幅度以及辅助波动理论分析。
Pivot(枢轴点):在Zigzag语境中,枢轴点指的是被指标确认的价格局部顶点或底点。局部高点(高点Pivot)和局部低点(低点Pivot)依次连接,便形成了Zigzag折线。广义上,枢轴点也可以指技术分析中通过前一期高低点和收盘价计算出的预测支撑阻力位,但在本文中特指Zigzag产生的结构点。
摆动高低点(Swing High/Swing Low):摆动高点是某一周期内,左右两侧均有若干根K线低于它的那个高点;摆动低点则相反,左右两侧均有若干根K线高于它的低点。Zigzag本质上是对摆动高低点的一种“规模化”识别——只有幅度达到阈值,该摆动点才会被保留。
阈值(Threshold):Zigzag的核心参数,通常用百分比或固定价格单位表示。它决定了价格需要反向波动多少,前一个转折点才能被确认。阈值过小会导致Zigzag过于敏感,生成大量无意义的折线;阈值过大则会过滤掉重要转折,使结构过度简化。
重绘(Repaint):指指标在最新K线未走完或新转折未确认时,已经绘制出的线段会随之改变。对于部分Zigzag实现,当新的极值出现时,尚未确认的前一个转折点可能被移除或修改,这给实盘交易者带来不可忽视的延迟风险。标准Zigzag在转折点被确认后不再重绘,但在确认前,最新一段走势是“不完整”的。
回撤(Pullback/Retracement):在上涨趋势中,价格从高点回落至一定幅度的现象;在下跌趋势中,则表现为从低点反弹。Zigzag的波段高低点之间的垂直距离,常用于计算回撤比例(如50%、61.8%斐波那契回撤)。
ATR(Average True Range,平均真实波动幅度):一种衡量价格波动强度的指标,通过一段时间内K线真实波幅的平均数来估算。Zigzag的阈值可以用ATR的倍数来设定,从而让过滤标准适应市场波动率的变化。
策略思路讲解
从策略层面看,Zigzag不是为了提供交易信号而生的,它更像是一个“结构过滤器”。它的策略思路可以拆解为三个层次:识别结构、验证信号、辅助决策。
第一个层次,识别结构。Zigzag通过阈值设定,将价格走势划分为一系列波段。每一次折线的方向改变,都意味着市场在短期或中期内已经完成了从一只“推力”到另一只“推力”的换挡。交易者可以据此判断当前处于上升波段还是下降波段,以及这个波段的起点和终点在哪里。例如,当Zigzag线由上升转为下降时,说明市场已完成了一个上涨波段,并可能进入调整或反转阶段。
第二个层次,验证信号。Zigzag本身不发出买卖信号,但它可以作为其他信号的“确认器”。比如,均线金叉可能是一个做多信号,但如果此时Zigzag刚刚确认了一个下降波段尾声的低点,那么这个金叉的可靠性就会更高。同样,当价格突破了一条重要的趋势线,而Zigzag方向也同步反转,那就是一个高质量的突破确认。反过来,如果Zigzag仍然维持原趋势,任何逆势信号都应该降级处理。
第三个层次,辅助决策。Zigzag最经典的应用领域是波浪理论和斐波那契回调。艾略特波浪理论要求投资者识别推动浪和调整浪,而这正是Zigzag的拿手好戏。每一个Zigzag波段的长度和比例,可以对照斐波那契比率(如1.0、1.618、0.618)来预判下一波段的潜在目标。同时,通过连接最近的高点和低点,交易者可以绘制斐波那契回撤线,将38.2%、50%、61.8%等位置作为入市或止损的参考。
举一个实战中的简单用法:在上升趋势中,等待Zigzag确认一个回调低点,然后在该低点上方(如低点上浮一个很小的缓冲区)设置买入限价单,止损放在该低点之下。同时,利用前一个高点作为止盈目标。这种策略不需要预测趋势,只需要跟随结构,本质上是“趋势跟踪+波段操作”的结合。
值得注意的是,Zigzag的转折确认具有天然滞后性。当新低点出现时,已经比实际最低点多走了若干根K线。因此,许多策略会对最后一个未确认的转折点做“预估”处理,即假设当前价格即是新的极值,待确认后再修正。这样做可以减小滞后,但也引入了假设风险。
优点
第一,视觉清晰,去噪能力强。 Zigzag过滤掉了多数噪声波动,仅保留有意义的波段,使交易者能够一眼看清价格的主要运动方向。这种“化繁为简”的特质,尤其在日线图或周线图上十分直观,避免了线条纠缠的困扰。
第二,客观定义结构,避免主观判断。 没有Zigzag时,两个交易者可能对“当前是上涨趋势还是震荡”产生截然不同的看法。Zigzag通过明确的阈值规则,给出了可量化的结构判断,使分析结果具备唯一性和可回测性。
第三,支撑波浪理论等高级分析。 艾略特波浪理论的最大难点在于波浪划分,而Zigzag可以自动提供一组“已确认”的摆动点,作为波浪划分的客观起点。尽管并非完全匹配,但它缩小了主观猜测的范围,极大提高了数浪效率。
第四,适合作为多周期共振的参考基准。 由于Zigzag能够标识不同周期下的高点和低点,交易者可以对比月线、周线、日线上的波段结构,当多个周期同时出现方向一致的Zigzag拐点时,意味着大级别与小级别走势形成共振,交易胜率往往更高。
第五,良好的扩展性。 Zigzag的转折点数据可以作为许多衍生指标的基础输入,例如计算波段长度、测量回撤比例、绘制通道、计算走势斜率等。开源社区中大量基于Zigzag开发的自定义工具,印证了其作为底层结构库的价值。
缺点
第一,滞后性明显。 这是Zigzag最广为人知的弱点。转折点必须等到价格反向运行超过阈值后才能被确认,因此每一个拐点的确认都晚于实际拐点。在快速反转行情中,交易者可能会因等待确认而错过最佳入场点。
第二,参数选择敏感。 阈值的大小直接决定Zigzag的形态。阈值过小,折线过于琐碎,与原始走势几乎无异;阈值过大,又可能漏掉重要转折,导致结构失真。缺乏自适应能力使得它在不同波动特征的市场中需要频繁调整参数。
第三,忽略波段内部信息。 Zigzag只保留转折点的价格和时间,完全忽略了波段内部的价格行为,比如K线形态、成交量分布、动量变化等。这使得它在识别趋势衰竭、超买超卖等微观信号方面束手无策。
第四,在震荡市中表现不佳。 当市场处于横盘区间时,价格反复穿越阈值,Zigzag会产生频繁的折线反转,交易者如果据此操作,很容易被连续止损。此时Zigzag非但不能简化行情,反而制造了大量虚假结构。
第五,无法预测未来,本质上是确认性工具。 Zigzag只告诉我们已经发生了什么,而不能告诉我们接下来会发生什么。它是对历史的整理,而非对未来的预言。若交易者脱离其他分析工具而单独使用它,很难形成完整的交易决策。
起源年份考证
关于Zigzag指标的起源,我们无法精确考证到某一年或者某位具体的发明者。这主要是因为这类“连接显著高低点以观察趋势结构”的想法,早在现代图表技术分析萌芽时期就已存在。道氏理论中的“主要趋势与次级折返”概念,实际上就蕴含了通过波段高点与低点来定义趋势的思想,而道氏理论体系成形于20世纪初期。
到了20世纪50至60年代,随着计算机技术逐步进入金融分析领域,技术分析师开始尝试用程序自动识别价格走势中的拐点。早期的图表软件中,就出现了基于百分比滤波的“自动趋势线”算法,这可以看作Zigzag的雏形。1970年代,个人计算机和商业图表软件开始普及,许多软件将此类工具作为内置指标提供,“Zigzag”这一通俗名称也随之流行起来。1980年代,随着艾略特波浪理论重新被市场重视,Zigzag作为波浪划分的辅助工具得到了更广泛的应用。
因此,基于该策略类型,我们可以给出如下时间线:
- 20世纪初至1940年代:道氏理论确立了基于摆动高低点定义趋势的基本框架,为Zigzag的概念奠定了思想基础。
- 1950年代至1960年代:计算机辅助分析兴起,一些研究者尝试编写程序自动标记波峰波谷,但并未形成标准化指标。
- 1970年代:商业行情图表软件首先内置了功能类似Zigzag的指标,并使用了“Zigzag”这一形象名称,但具体作者无法考证。
- 1980年代至1990年代:Zigzag指标成为主流交易软件的标配,并与波浪理论、斐波那契分析深度绑定。
- 21世纪至今:随着开源交易社区的繁荣,Zigzag被以库、对象、函数等多种形式重新实现和扩展,本文所提的策略脚本正是这一演变的体现。
需要强调的是,上述时间线是对此类指标问世与流行趋势的考证结果,并非针对某一个特定代码版本或作者的确认。由于缺乏公开的原始专利或权威文献,严格意义上的精确起源年份仍然无法考证。
改进建议
尽管Zigzag存在诸多缺陷,但通过合理的改造和组合,我们能够显著提升其有效性。以下给出五条以上可供参考的改进方向。
第一,采用自适应阈值。 固定百分比在不同波动率环境下效果差异巨大。一种改进思路是将阈值设定为ATR的某一倍数,例如2倍ATR。这样当市场波动加剧时,阈值自动放大,过滤掉更多的噪声;当市场平静时,阈值缩小,捕捉到更精细的转折点。该改进保留了Zigzag的简洁性,同时增强了跨品种、跨时期的稳定性。
第二,利用分形指标辅助确认。 威尔斯·威尔德提出的分形指标(Fractals)在所有周期中都具有数学定义的拐点特征。我们可以将分形中位数与Zigzag的转折点进行比较,要求Zigzag确认的转折点同时被某种分形信号验证,从而降低参数敏感性和误报率。例如,仅在连续三根K线中出现“中间高点高于左右两点”的结构时,才允许将该点标记为潜在高点。
第三,多周期Zigzag共振。 单一周期的Zigzag容易受到局部波动干扰。我们可以同时计算周线、日线和小时线的Zigzag,要求三者均在相近的时间窗口内出现了方向一致的转折信号。多周期共振能过滤掉单周期下的偶然波动,提高结构信号的可靠度,当然也会降低交易频率。
第四,与均线趋势过滤器组合。 当价格位于长期均线之上时,Zigzag的低点信号被视为做多机会;当价格位于长期均线之下时,Zigzag的高点信号被视为做空机会。这样,Zigzag相当于提供了“结构入场点”,而均线提供了“趋势方向允许条件”,有效避开逆势操作。
第五,对未确认点进行动态预判。 为了解决滞后问题,可以在当前K线的最高价或最低价突破前一个波段极值时,立即以当前价格作为临时转折点,并设置追踪止损。一旦后续确认失败,则放弃该信号。这种“预判+确认”机制可以提前入场,但需要严格的资金管理来抵消潜在的假信号风险。
第六,将Zigzag波段特征纳入量化滤波器。 不仅记录转折点的位置,还记录每个波段的长度、斜率、时间跨度、涨跌幅。然后通过历史统计,筛选出与当前波段特征相似的历史片段,给出后续走势的概率分布。这种“模式匹配”式的改进将Zigzag从几何工具升级为统计模型。
第七,结合成交量加权阈值。 有些转折发生在放量区域,其市场意义远大于缩量区域。可以为每根K线的真实波幅乘以一个成交量权重,再用累计加权波幅判断转折。这样,高成交量下的价格突破更容易触发确认,而低成交量下的微小波动则被更高效地过滤。
总结
Zigzag指标,作为技术分析工具箱中一件别具一格的结构工具,其地位虽不像均线或MACD那样显赫,但它在市场结构解构、波浪划分和趋势识别方面所发挥的作用,至今难以被替代。它通过简单的阈值机制,将复杂的价格走势提炼为一条清晰明了的折线,帮助交易者从宏观视角审视市场。
然而,我们也必须清醒地认识到,Zigzag是一把双刃剑。它带来的简洁是以滞后为代价的,它的客观性是建立在参数选择这个主观前提之上的。正确使用Zigzag的关键,不在于追求完美的拐点,而在于理解它的局限,学会与其他工具配合。客观地讲,任何一种技术指标都无法单独稳定盈利,Zigzag的价值更多在于启发我们思考“结构”与“确认”这两个交易世界的永恒命题。
在实战中,我们应该根据自身的交易周期和风险偏好,选择合理的阈值类型(固定百分比、ATR倍数等),并始终坚持趋势过滤、资金管理和风险控制。如果把市场比作一棵枝繁叶茂的大树,那Zigzag便是那幅描绘枝干走向的简笔画。它不负责告诉你树叶怎样生长,却能让你看清整棵树的轮廓。理解了这一点,你才能真正驾驭Zigzag,而不是被它的滞后所左右。
最后,回到本文介绍的公开脚本。作者通过精心的类型封装和命名空间设计,为Zigzag的结构对象提供了一种标准化处理方式。这种工程化的思维值得每一位技术分析爱好者借鉴:将市场结构数据抽象成清晰、稳定的对象,再围绕该对象构建策略逻辑,既有利于代码复用,也便于回测和调试。即便你不在编程环境中使用它,这种“先定义结构,再制定对策”的逻辑,也同样是优秀交易系统设计的基本原则。