在股票的走势中,价格有时候会像在蓄力一样,走出一段越来越收敛的K线结构------我们把这种形态称为 三角收敛 ,也叫收敛三角形。它常常出现在趋势进行中的整理阶段,是非常典型也非常实用的一个形态。
三角收敛大致可以分为三种类型:
- 对称三角形
- 上升三角形
- 下降三角形

今天花姐就来带大家一一拆解,搞懂它们的结构、特征、以及怎么用在实战中!
一、对称三角形:整理型态的「中庸派」
对称三角形,就是两边高点和低点逐渐收敛,最终形成一个等腰三角形的走势结构。这种形态既可能出现在上涨趋势中,也可能出现在下跌趋势中,算是最中性的一个。
来看一个经典案例👇
我们用A、B、C、D、E点标注出了三角形的两边走势,上边的高点越来越低,下边的低点越来越高,价格在这个空间内来回震荡------这就是对称三角形的标准模样。
当价格在F点跌破下边支撑线后,就确认了方向,趋势延续为下跌,这里就是一个非常典型的下跌中继型的对称三角形。
当然了,如果这种形态出现在上涨趋势中,往上突破的概率也同样存在。关键点在于:等待突破!

二、上升三角形:多头强势进攻信号
上升三角形的特点很明显:
- 上边是一条水平阻力线,说明高点停在同一价位
- 下边是一条向上倾斜的支撑线,说明低点在不断抬高
这个形态本质上是买盘越来越积极,而卖盘在某个位置暂时形成阻力。一旦价格冲破了上边的压力线,往往会迎来一波上涨加速!
案例中我们可以看到:
- 虽然E点没有精准触碰到上边线,但不影响整体结构的成立(现实中完美结构不常见,不用太死板)
- 后续价格上破阻力线后,有一个 "回踩确认"动作,重新回到上边线获得支撑------这时候就是一个很好的介入点!
是不是有点像"突破+回踩"的双底逻辑?

三、下降三角形:空头压制力量显现
下降三角形的结构跟上升三角形刚好反过来:
- 下边是一条水平支撑线
- 上边是一条向下倾斜的压力线
这种形态说明卖压越来越重,多头逐渐无力,价格一次次冲高都遇阻,最终往下突破是大概率事件。
案例中,我们看到F点其实并没有碰到上边的压力线就提前掉头,说明空头非常强势。后续一旦跌破下边线,就会触发进一步下跌。

四、实战怎么用三角形?
三角收敛虽然是"整理型态",但 突破点就是机会点! 以下是几个实用技巧,建议收藏
交易策略总结:
- 价格触及上边→回落:短空机会
- 价格触及下边→反弹:短多机会
- 突破上边→跟进做多(上升、对称三角形常见)
- 跌破下边→跟进做空(下降、对称三角形常见)
归根结底,三角形就是支撑线和阻力线的博弈 ,只是结构更有规律一些。学会它,其实就学会了一种中继震荡中的趋势识别方法!
五、如何用Python量化
我的绘制思路是:提取一段K线的局部高点和低点,然后用线性回归或拟合画出上边线和下边线,最后将这些边线叠加到K线图上。
导入需要用到的库
python
import pandas as pd
import numpy as np
import mplfinance as mpf
from scipy.stats import linregress
import matplotlib.pyplot as plt
import akshare as ak
import matplotlib.font_manager as fm
获取股票的K线数据
这里我用的AKshare库,当然你也可以使用其它方式来获取行情数据
python
# 1. 获取K线数据
df = ak.stock_zh_a_daily(
symbol='sz002082',
start_date='20250101',
end_date='20250715'
)
提取局部高低点
这里我用固定窗口的方式找到了一段时间内K线的高低点,当然也可以借助缠论画线段的方式,线段的开始和结束就我们要的高低点:
python
def find_local_extrema(series, window=5, mode='max'):
idxs = []
for i in range(window, len(series) - window):
segment = series[i - window:i + window + 1]
if mode == 'max' and series[i] == max(segment):
idxs.append(i)
elif mode == 'min' and series[i] == min(segment):
idxs.append(i)
return idxs
回归拟合上边线和下边线
python
# 3. 线性回归拟合上下边界
x_high = np.array(high_idxs)
y_high = df['high'].iloc[x_high].values
slope_high, intercept_high, *_ = linregress(x_high, y_high)
x_low = np.array(low_idxs)
y_low = df['low'].iloc[x_low].values
slope_low, intercept_low, *_ = linregress(x_low, y_low)
判断是否满足三角收敛
python
# 4. 判断是否满足三角形形态
slope_thresh = 0.02 # 斜率绝对值小于该值视为"水平线"
triangle_type = "未形成三角形"
if slope_high < 0 and slope_low > 0:
triangle_type = "对称三角形"
elif abs(slope_high) < slope_thresh and slope_low > slope_thresh:
triangle_type = "上升三角形"
elif abs(slope_low) < slope_thresh and slope_high < -slope_thresh:
triangle_type = "下降三角形"
print("识别结果:", triangle_type)
绘制图形
python
# 5. 构造红色虚线作为addplot
x = np.arange(len(df))
upper_line = slope_high * x + intercept_high
lower_line = slope_low * x + intercept_low
apds = [
mpf.make_addplot(upper_line, color='red', linestyle='--'),
mpf.make_addplot(lower_line, color='red', linestyle='--')
]
# 6. 绘制蜡烛图 + 三角收敛线
# 手动指定 SimHei 字体路径(这个很关键!!!)
font_path = 'C:/Windows/Fonts/simhei.ttf' # Windows 路径
# 创建 font 对象
my_font = fm.FontProperties(fname=font_path)
font_name = my_font.get_name() # 一般是 'SimHei'
# 设置 matplotlib 全局字体
plt.rcParams['font.family'] = font_name
plt.rcParams['axes.unicode_minus'] = False
# 自定义 mplfinance 风格
my_style = mpf.make_mpf_style(base_mpf_style='yahoo', rc={'font.family': font_name})
title_text = f'K线三角形态识别:{triangle_type}'
# 示例绘图(df 和 apds 请换成你自己的数据)
mpf.plot(df,
type='candle',
style=my_style,
addplot=apds,
title=title_text,
ylabel='Price',
figsize=(12, 6))



写在最后
三角收敛这个形态,是我个人非常喜欢的一个整理结构。它逻辑清晰,适用于多种市场环境,配合量能或者突破K线做确认,胜率其实不低。
记住一句话:
三角形整理不是信号,突破才是信号!
喜欢这种系统讲解的朋友,欢迎在评论区告诉我你还想学哪种形态~也可以转发给朋友,咱们一起涨知识,一起抓大波段!
需要源码的可以加入花姐星球获取,解压密码112233 里面包括
- 通过AKshare直接绘制某个股票的三角收敛图源码
- 通过xtquant+miniQMT批量绘制全部A股的三角收敛图源码