量化指标解码11:挤压动量 - 捕捉低波动后的爆发行情

本文是《量化指标解码》系列的第11篇,我们将深入解码挤压动量(Squeeze Momentum)指标,从布林带与肯特纳通道的挤压判断到动量方向的精准捕捉,从状态标记的视觉化到背离信号的智能检测,让你掌握在市场低波动整理后捕捉突破行情的核心技术。

挤压动量效果图

写在前面

上一篇讲了斐波那契入场带,有读者私信说这个4层入场系统确实能避免追高,但遇到横盘整理突然爆发的行情总是抓不住节奏。

这个问题我也遇到过。横盘的时候不敢进,突破的时候又担心是假突破,等确认了趋势价格已经走了一大段。后来发现,关键是要在横盘时就做好准备,识别出"低波动整理"的状态,这样突破来临时才能反应够快。

挤压动量(Squeeze Momentum)就是专门干这个的。它通过布林带和肯特纳通道的对比,告诉你市场什么时候在"挤压"(低波动整理),什么时候在"释放"(波动扩大),再配合动量柱显示方向和强度,让你在整理末期就能提前布局。

挤压动量是什么?

挤压动量(Squeeze Momentum)的核心思想很简单:市场在低波动整理后,往往会有一次大的爆发性行情

这个指标做了两件事:

  1. 判断挤压状态:通过布林带和肯特纳通道的相对位置,识别市场是在整理还是在趋势中

  2. 显示动量方向:用柱状图展示价格动量的方向和强度,帮你判断突破后往哪个方向走

举个例子,市场横盘整理了两周,波动率越来越低,这时候挤压动量会显示金色的菱形标记,告诉你"正在挤压"。突然某天,波动率扩大,标记变成灰色十字,同时动量柱开始向上拉升,这就是做多的信号。

这个指标的精妙之处在于,它不是等突破发生后才提示你,而是在横盘时就明确标记出"准备阶段",让你有时间提前布局。

挤压动量的计算原理

挤压动量(Squeeze Momentum)的计算分为4个步骤,每一步都很关键。

第一步:计算布林带

布林带用来衡量价格的波动范围,基于标准差。

复制代码
def calculate_bollinger_bands(closes, length=20, mult=2.0):
    """计算布林带"""
    bb_upper, bb_basis, bb_lower = talib.BBANDS(
        closes,
        timeperiod=length,
        nbdevup=mult,
        nbdevdn=mult,
        matype=0  # SMA
    )
    return bb_upper, bb_basis, bb_lower

第二步:计算肯特纳通道

肯特纳通道用ATR(真实波幅)来衡量波动,比布林带更稳定。

复制代码
def calculate_keltner_channel(closes, highs, lows, length=20, mult=1.5, use_tr=True):
    """计算肯特纳通道"""
    kc_ma = talib.SMA(closes, length)

    if use_tr:
        ranges = talib.TRANGE(highs, lows, closes)
    else:
        ranges = highs - lows

    range_ma = talib.SMA(ranges, length)
    kc_upper = kc_ma + range_ma * mult
    kc_lower = kc_ma - range_ma * mult
    return kc_upper, kc_ma, kc_lower

第三步:判断挤压状态

对比布林带和肯特纳通道的位置关系。

复制代码
# 挤压状态:布林带完全在肯特纳通道内部
sqz_on = (bb_lower > kc_lower) & (bb_upper < kc_upper)

# 释放状态:布林带突破肯特纳通道
sqz_off = (bb_lower < kc_lower) & (bb_upper > kc_upper)

这一步是核心。当布林带收窄到肯特纳通道内部时,说明市场波动率极低,正在整理;当布林带突破肯特纳通道时,说明波动率扩大,趋势来了。

第四步:计算动量值

动量值告诉你突破后往哪个方向走。

复制代码
def calculate_momentum(closes, highs, lows, length=20):
    """计算动量值"""
    highest_high = talib.MAX(highs, length)
    lowest_low = talib.MIN(lows, length)
    avg_hl = (highest_high + lowest_low) / 2

    sma_close = talib.SMA(closes, length)
    avg_hlc = (avg_hl + sma_close) / 2

    source_minus_avg = closes - avg_hlc
    val = talib.LINEARREG(source_minus_avg, timeperiod=length)
    return val

这个计算方法用线性回归平滑了价格与均值的差值,让动量变化更清晰。

把这四步串起来,就得到了完整的挤压动量指标:

  • 金色菱形:挤压状态,低波动整理,准备突破

  • 灰色十字:释放状态,波动扩大,趋势进行中

  • 蓝色十字:中性状态,没有明确的挤压或释放

  • 动量柱:红色/绿色柱子显示动量方向和强度

挤压动量怎么用?

什么时候准备入场?

看到金色菱形标记时,就要开始关注了。这说明市场在横盘整理,波动率越来越低,随时可能突破。

这时候不要急着进场,而是观察动量柱的变化。如果动量柱开始从负值转正,或者从正值加速上涨,就是多头蓄力的信号。

什么时候确认入场?

当金色菱形变成灰色十字,同时动量柱方向明确时,就是入场时机。

  • 动量柱转正且加速向上:做多

  • 动量柱转负且加速向下:做空

这个时候市场已经从"挤压"变成"释放",波动率扩大,趋势开始。

什么时候考虑离场?

两种情况:

  1. 动量柱开始反向:比如你做多,动量柱从正值转负,说明多头动能衰竭

  2. 出现背离信号:价格创新高但动量创新低,这是典型的看跌背离

代码里实现了背离检测,会在动量柱上方/下方用圆形标记显示,这是重要的反转信号。

AI智能解读

系统会自动分析挤压动量(Squeeze Momentum)的状态,给出实时解读。

智能解读效果图

解读内容包括:

  • 挤压状态分析:进入挤压/持续挤压/突破挤压/趋势延续

  • 动量方向分析:动量转正/转负、多头动能加强/减弱、空头动能加强/减弱

  • 组合信号分析:强势突破/弱势突破/低波动整理

  • 背离信号提示:看涨背离/看跌背离,关注反转

这些解读会实时更新,帮你快速理解当前市场状态。比如你看到"突破挤压 - 趋势开始"配合"多头动能加强 - 持续看多",这就是明确的做多信号。

参数配置详解

挤压动量(Squeeze Momentum)有几个核心参数,理解它们对实战很重要。

参数配置界面

1. 布林带周期(默认20)

布林带的计算周期,影响对波动率的敏感度。

周期越短,对短期波动反应越快,但噪音也多;周期越长,信号更稳定,但滞后性强。

实战建议:日内交易用15-20,波段交易用20-30。

2. 布林带乘数(默认2.0)

控制布林带的宽度,乘数越大,带子越宽。

这个参数直接影响挤压信号的频率。乘数大了,布林带不容易被肯特纳通道"吃掉",挤压信号就少;乘数小了,挤压信号多但可靠性下降。

实战建议:保持默认2.0就好,不建议调整。

3. 肯特纳通道周期(默认20)

肯特纳通道的计算周期,通常和布林带保持一致。

实战建议:跟布林带周期保持同步,都用20或都用30。

4. 肯特纳通道乘数(默认1.5)

控制肯特纳通道的宽度。

这个参数越小,肯特纳通道越窄,越容易出现挤压信号。默认1.5是经过大量测试确定的最优值。

实战建议:1.5是经过市场验证的,不要轻易改。如果想增加挤压信号频率,可以小幅调到1.3-1.4,但要注意假信号增加。

5. 使用真实波幅(默认开启)

决定肯特纳通道是用ATR还是简单的高低价差。

开启后用ATR计算,通道更准确,能更好地反映市场真实波动;关闭后用简单高低价差,计算快但精度低。

实战建议:保持开启,ATR是更科学的波动率衡量方法。

6. 显示背离(默认开启)

是否显示价格与动量的背离信号。

背离是重要的反转信号,建议开启。如果觉得图表太乱,可以关闭,专注挤压和动量本身。

实战经验与避坑指南

第一,不是所有挤压都值得交易。挤压只是告诉你波动率低,不代表一定有趋势。要结合大周期判断,如果大周期在盘整,小周期的挤压突破往往是假突破。

第二,动量柱的颜色变化比绝对值更重要。不要等动量柱拉得很高才进场,关键是抓住颜色从深色变浅色、从负转正的时刻。

第三,背离信号要配合位置看。低位的看涨背离可靠,高位的看跌背离可靠。如果在中间位置出现背离,谨慎对待。

第四,挤压可能持续很久。别看到金色菱形就着急,市场可能横盘一个月。耐心等待灰色十字出现,确认释放开始。

就这几点。话不多,但都是实战踩坑总结出来的。

写在最后

到这里,挤压动量(Squeeze Momentum)的核心内容基本讲完了。从布林带与肯特纳通道的对比到动量方向的判断,从挤压状态的识别到背离信号的检测,最重要的是理解这个指标的本质:在市场低波动整理时提前预警,在突破开始时果断入场

不要指望这个指标能帮你抓住所有行情,它只能告诉你:什么时候市场在蓄力,什么时候爆发开始。真正的难点在于,挤压可能持续很久,也可能是假突破。

下一篇准备讲WaveTrend指标。说实话,挤压动量在捕捉突破行情方面很强,但在震荡行情中的表现不够精细。WaveTrend专门用来判断超买超卖和震荡行情的买卖点,它通过双线交叉和超买超卖区域,告诉你什么时候该进、什么时候该出。两个指标配合起来,一个管突破入场,一个管震荡交易,覆盖面会更全。

先写到这,有问题欢迎留言交流。


本文是《量化指标解码》系列的第11篇,ATMQuant量化交易系统已开源至GitHub:https://github.com/seasonstar/atmquant

挤压动量(Squeeze Momentum)增强版指标(含背离检测)为付费会员专享功能,加入知识星球即可获取完整源码和配置教程。

本文内容仅供学习交流,不构成任何投资建议。交易有风险,投资需谨慇。


加入「量策堂·AI算法指标策略」

想系统性掌握策略研发、指标可视化与回测优化?加入我的知识星球,获得持续、体系化的成长支持:


往期文章回顾

《量化指标解码》系列

《以AI量化为生》系列


相关标签:#量化交易 #技术指标 #挤压动量 #vnpy #Python

相关推荐
Aurora-silas1 小时前
Mac 本地运行 Hugging Face 大模型完全指南:PyTorch (MPS) vs Apple MLX
人工智能·pytorch·macos
机器不学习我也不学习2 小时前
人工智能综合项目开发14----技术文档撰写
人工智能
GISer_Jing2 小时前
SSE Conf大会分享支付宝xUI引擎:AI时代的多模态交互革命
前端·人工智能·交互
有一个好名字2 小时前
Spring AI ——Java开发者的AI集成神器
java·人工智能·spring
WordPress学习笔记2 小时前
专业建外贸网站公司推荐
大数据·前端·人工智能
p***95002 小时前
DeepSeek R1 简易指南:架构、本地部署和硬件要求
人工智能·架构
John_ToDebug2 小时前
AI时代的浏览器内核开发:从“渲染引擎”到“智能中枢”的范式革命
人工智能·chrome
Julian.zhou2 小时前
Anthropic破解长程任务难题:长期运行智能体的高效控制机制
大数据·人工智能
唯道行2 小时前
计算机图形学·19 Shadings in OpenGL
人工智能·算法·计算机视觉·几何学·计算机图形学·opengl