- Published on
Cup & Handle
- Authors

- Name
- CoresightQuant
NOTE
本文为公开交易策略的技战术复盘,聚焦方法逻辑、交易场景与风险边界。
策略解读
“杯柄形态”是技术分析中一个广为人知的经典图表结构,它通常被视为中期趋势延续或反转的前兆。传统上,交易者通过肉眼观察价格走势,寻找一个类似“茶杯”的圆弧底部,以及随后一个略微回撤的“杯柄”。然而,人眼识别往往带有主观性,不同分析师对同一段行情可能得出截然不同的结论。为了提升识别的一致性与可验证性,量化研究社区开始尝试把这种图形语言转化为可程序化执行的规则。
上面引用的策略,正是这种算法化尝试的一个缩影。该作者没有使用复杂的机器学习模型,也没有引入任何额外指标,而是纯粹基于价格结构本身:先找到一系列局部高点,然后通过几何与价格之间的关系,判断当前价格是否正在形成一个“杯柄”。这种思路简洁而优雅,它把“杯”和“柄”的定义拆解成可计算的逻辑步骤,使得我们能够用一种相对客观的方式,在历史数据中反复检验该形态的有效性。
本文的目的,不是简单翻译这段描述,而是深入剖析其背后的策略逻辑、交易哲学与实战意义。我们会先厘清几个关键术语,再逐步拆解识别流程,最后讨论这种算法化方法的长处、局限以及可能的改进方向。无论你是刚接触技术分析的新手,还是已经有一定经验的量化研究者,相信都能从中获得一些启发。
名词解释
为了让后续讨论更加顺畅,我们先解释以下几个核心术语。
-
杯柄形态(Cup & Handle)
一种经典的技术图表形态,形似一个带手柄的茶杯。杯部通常是 U 形或圆弧形的底部,代表价格在一段时间内先下跌、后逐步回升的过程;杯柄则是杯口右侧的一个向下小幅回撤,成交量通常萎缩。当价格放量突破杯柄的上沿时,被视为多头信号。 -
枢轴高点(Pivot High, ph)
在一个给定的周期内,某根 K 线的最高价高于其前后若干根 K 线的最高价,该高点即被视为一个枢轴高点。它是识别反转或支撑压力位的重要参考点。本例中,所有枢轴高点都存储在一个数组中,以便后续比较。 -
数组(Array)
计算机程序中的一种数据结构,用于按顺序存储多个数值。这里用来存放历史枢轴高点的价格值,使得程序能够快速访问并比较不同时间点上的高点。 -
测试线(Test Line)
在程序内部临时绘制的一条连接两个枢轴高点的直线。它的作用不是用于交易决策,而是用来检验价格走势是否符合“杯柄”的构造条件。执行完判断后,这条线会被删除,不会保留在图表上。 -
最大突破百分比(% Max Breaks)
一个可调参数,用于衡量收盘价向上穿越测试线的容忍度。如果允许的突破百分比为 0,那么任何一根 K 线的收盘价都不能越过测试线;如果允许一定的百分比,则即使有轻微突破,只要在阈值内,仍被视为有效形态。这一参数能够过滤掉一些偶然的毛刺,提高形态识别的灵活性。 -
圆弧曲线(Circle Shaped Lines)
指杯口的上沿与下沿两条边界线,它们模拟了杯子的轮廓。在程序化识别中,这些曲线通常由若干段连续的直线或插值点构成,用于可视化地标记出杯体的范围。 -
收盘价(Close)
每一根 K 线交易时间结束时的最后成交价格。收盘价是技术分析中最常用的价格,因为它反映了市场在该周期内的最终共识。本策略使用收盘价来判定是否突破测试线,而不是最高价或最低价,这是为了减少瞬间插针带来的误判。
策略思路讲解
这个策略的核心思想,是把“杯柄形态”的图形特征转化为一组可计算的结构条件。我们可以把它拆解为以下几个步骤来理解。
第一步:寻找枢轴高点。
程序首先扫描价格历史,识别出所有满足条件的局部高点。这些高点就像地形图上的山峰,为后续的比较提供了锚点。每个高点都有一个时间坐标和价格坐标,被依次放入数组中。这一步骤实际上是在对价格走势进行“降维”——把连续的 K 线序列转化为离散的转折点,使得形态分析变得更轻量。
第二步:比较新老高点。
当一个新的枢轴高点出现时,程序并不会立刻认为它有意义,而是会取出之前存储的历史高点,与最新高点进行配对比较。这里的关键是:一个杯柄形态通常需要两个明显的阶段性高点——左侧的杯口高点(左缘)和右侧的杯柄高点(右缘)。左侧高点往往出现在一轮上涨之后,随后价格开始回调形成杯部;右侧高点则出现在价格重新回升到接近左侧高点位置时,形成杯柄。因此,新老高点的比较,实际上是在寻找这两个关键节点的对应关系。
第三步:绘制临时测试线并验证。
程序在两个选定的高点之间画一条直线,这条线可以看作是一个动态的阻力位。随后,它检查这两个高点之间的所有 K 线收盘价,是否没有任何一根向上突破这条线。如果突破发生了,说明价格在杯部运行过程中出现了过强的反弹,破坏了“下跌—横盘—回升”的圆弧结构,此时该配对不成立。如果始终没有突破,那么这个配对就通过了第一重验证。
第四步:检查最大突破百分比。
价格数据有时会有轻微噪声,一根 K 线的收盘价可能刚好越过了测试线几个基点,但整体形态仍然像是一个杯柄。为了处理这种情况,策略引入了“最大突破百分比”参数。只要收盘价向上穿越测试线的幅度不超过这个百分比,就依然认为形态有效。这相当于给测试线加上了一个宽容的缓冲带。
第五步:绘制杯体上下沿。
当配对通过验证后,程序会以这两个高点为端点,描画出两条圆弧曲线,分别代表杯口的上沿和下沿。这样,交易者就能在图表上直观地看到被程序认可的杯柄区域。此时,策略并没有给出具体的买卖动作,而是完成了形态的“标记”工作。交易者可以在后续价格放量突破杯柄上沿时,手动结合其他条件入场。
从交易理念上看,这个策略体现了一种“先结构,后确认”的思路。它不预测未来,而是被动地识别已经形成的结构,然后等待市场的进一步确认。这种理念与许多经典趋势跟踪策略是一脉相承的:重要的不是抓住每一次机会,而是等待高概率的形态出现并做出应对。
优点
-
客观化识别,消除主观偏见
人工看图时,不同的人可能对“什么才算杯柄”有着截然不同的标准。而通过设定枢轴高点周期、测试线突破规则、最大突破百分比等参数,策略将形态识别变成了一个可重复、可回测的过程。任何人在同一参数下运行,都会得到完全相同的结果。 -
适应多周期与多品种
由于策略只使用价格数据,不依赖于基本面指标,因此它可以被应用到股票、期货、外汇、加密货币等多种交易品种上。同时,只要调整枢轴高点的周期参数,就能识别从分钟线到周线的不同级别的杯柄形态,具有很强的灵活性。 -
直接嵌入交易流程,降低情绪干扰
策略输出的是一个明确的结构标记,而不是含糊的“感觉要涨”。交易者可以基于这个标记设定条件单:当价格突破杯柄上沿时买入,或者把杯柄下沿作为止损参考。这种机械化执行方式有助于克服贪婪与恐惧。 -
逻辑透明,易于改进
相比黑箱式的神经网络,该策略的每一个判断步骤都清晰可见。研究者可以轻松地修改其中一个条件,比如把“收盘价不突破测试线”改为“最高价不突破”,或者把“最大突破百分比”从固定值改为动态值,从而观察不同规则对识别结果的影响。 -
可作为形态研究的基石
这个策略本身虽然简单,但它提供了一种模式化处理图表形态的范式。类似的思想可以被扩展到其他形态,如双重顶、头肩底、三角形等。只要把“寻找枢轴高点”替换为“寻找极值点”,再定义相应的连接与验证规则,就可以搭建一套完整的图形识别系统。
缺点
-
滞后性明显
形态识别需要等待足够的 K 线来确认枢轴高点,因此当策略发出“杯柄形成”的信号时,往往已经错过了最佳布局时机。突破确认通常需要价格已经上涨了一段距离,这会导致入场点位较差。 -
误判率不低
现实中,价格走势很少走出教科书般的标准杯柄。圆弧深度可能过于陡峭,杯柄部分可能省略,或者多个形态嵌套在一起。该策略基于严格的几何条件,很容易把一些相近但不是杯柄的结构也识别出来,从而产生大量无效信号。 -
参数敏感性高
枢轴高点周期、最大突破百分比、需要多少个历史高点进行比较等参数,都会显著影响识别结果。如果参数设置不当,要么过滤掉所有形态,要么把每一个小波动都看成杯柄。而这些参数通常需要针对不同市场、不同周期反复调试,缺乏自适应能力。 -
忽略成交量与市场背景
经典的杯柄形态非常强调成交量:杯柄应该缩量,突破应该放量。然而,这个策略只使用价格数据,完全忽略了成交量信息。这使得它在牛市中可能频繁发出信号,而在震荡市中则可能连续亏损,因为它无法判断拉升是否有资金参与。 -
缺乏止损与止盈规则
策略只负责“画杯子”,不负责“接杯子”。它没有告诉我们:如果突破后价格马上回落怎么办?杯子形成后会不会变成下跌中继?交易者必须自己设计额外的出场策略,否则很容易因为一笔失败交易而葬送之前所有的利润。
起源年份考证
这里需要强调的是,我们考证的是“杯柄形态”这一类技术分析方法的历史,而不是上述具体脚本的编写时间。根据公开的金融文献记录,这类方法的起源时间线大致如下:
- 20世纪初期至中期:道氏理论与图表技术逐渐发展,交易者开始观察价格走势中的重复性结构,但此时并没有正式的“杯柄”命名。
- 1960年代至1970年代:美国著名股票投资家威廉·欧奈尔(William J. O'Neil)在担任基金经理期间,通过对大量牛股的复盘研究,总结出了一套 CANSLIM 选股体系,其中明确提出了“带柄杯形”这一形态。他观察发现,许多大牛股在上涨初期都会形成一个类似杯子底部的调整结构,随后再以一个窄幅手柄作为最后的整理。
- 1988年:欧奈尔出版了他的代表作《笑傲股市》(How to Make Money in Stocks),书中首次系统性地向公众展示了杯柄形态的识别方法、成交量要求以及买入触发点。此后,该形态迅速被全球技术分析者接受并广泛使用,成为教科书级别的图表形态之一。
- 1990年代至2000年代:随着计算机技术的普及,一些交易软件开始内置对杯柄形态的自动识别功能,但受限于计算能力,当时的识别逻辑大多简单,且很少考虑多点结构验证。
- 2010年代至今:编程脚本语言的流行使得量化爱好者能够像本文描述的那样,用较少的代码实现复杂的形态识别逻辑。这种公开社区中的算法化实践,让经典形态获得了新的量化生命。
需要指出的是,欧奈尔本人并非“发明”了杯柄形态,而是系统地整理并验证了其统计有效性。因此,我们通常将1988年作为该类方法广为人知的起点,但在此之前,一定存在民间零散的使用经验。至于上述脚本的确切发布日期,由于我们无法获取其具体来源,因此不做考证。
改进建议
-
引入成交量过滤
在验证杯柄形成时,可以检查杯柄区域的成交量是否显著低于杯部左侧的均量水平,同时要求突破当日的成交量至少是过去5日均量的1.5倍。这样能够更贴近经典定义,筛选出更具资金认可度的突破信号。 -
动态调整枢轴高点的定义
目前,枢轴高点仅基于固定周期内的相对高度。我们可以改用分形波浪、ZigZag 指标或高低点的百分比过滤,让高点的选择更适应不同波动率的市场环境。例如,当波动率增大时,自动增大比较窗口,避免识别出过于密集的微小高点。 -
添加多时间框架共振
单一周期内的杯柄形态可靠性有限。我们可以把识别逻辑同时应用到日线、周线甚至月线上,只有当多个周期同时出现杯柄结构,或者大周期杯柄正在形成、小周期刚发生突破时,才发出入场信号。这种共振机制能够有效减少单一周期内的假突破。 -
结合趋势方向与均线系统
杯柄形态在上升趋势中作为中继形态的成功率较高,而在下降趋势中则可能是反转失败的陷阱。因此,可以在策略中加入一个简单的趋势过滤:只有当价格位于200日均线上方,或者长期均线呈多头排列时,才接受杯柄信号。这会大幅提升策略的胜率。 -
设定明确的离场规则
为策略补充动态止损与目标利润。例如,将止损位设在杯柄最低点(或杯体右缘最低价)下方一定倍数的最小波动单位(ATR);止盈则可以参考杯体的深度——从杯柄突破点逐级上涨,目标涨幅等于杯体高度的 1 到 2 倍。这样就能把形态识别转化为一个完整的交易系统。 -
使用机器学习的后过滤
虽然形态识别本身是规则化的,但我们可以把识别出的杯柄特征(如杯体深度、杯柄长度、突破时的涨速等)作为输入,交给一个简单的分类器(如逻辑回归、决策树)来学习历史样本中哪些杯柄最终带来了显著上涨。这样既保留了规则的透明性,又提高了自适应性。 -
进行样本外回测与蒙特卡洛模拟
在实盘前,应使用足够长的历史数据进行回测,并将样本随机切分为训练集与验证集,避免过拟合。还可以使用蒙特卡洛模拟,对价格序列进行随机重排,计算随机情况下出现“杯柄”并发生突破的频率,从而评估策略是否存在真实的统计优势。
总结
“杯柄形态”是技术分析中一颗璀璨的明珠,它承载着无数交易者对市场结构的观察与经验总结。而本文介绍的算法化识别方法,则以一种现代、严谨的视角重新诠释了这颗明珠。它把“寻找两个枢轴高点”、“测试线不被突破”、“容忍一定突破百分比”等具体步骤组合在一起,构建出一条从图形到规则的清晰路径。
当然,任何策略都不是圣杯。该算法最大的价值不在于它是否能准确预判每一次杯柄,而在于它为我们的思考提供了一个可打磨的框架。我们可以沿着这个框架加入成交量、趋势过滤、离场规则,甚至使用机器学习进行动态优化,从而一步步逼近真实市场的复杂行为。
正如原作者所说,这只是他个人对杯柄形态的一种“take”。在交易的世界里,没有唯一正确的答案。真正的智慧,在于理解各种方法的局限性,并找到最适合自己风格的那一片拼图。希望这篇文章能够为你带来一些启发,让你在未来的量化研究或手动交易中,也能拥有属于自己的“杯子”与“手柄”。