波动挤压动量指标(TTM Squeeze)—— 预判行情“爆破点”
英文名称:Squeeze(TTM Squeeze) 中文命名:波动挤压动量指标 核心理念:当布林带(BB)完全收缩到肯特纳通道(KC)内部时,市场处于“低压锅”状态;一旦布林带重新张开并脱离 KC,往往伴随一波方向性极强的行情。
一、指标原理速览
- 布林带:以收盘价为中心,用标准差刻画波动区间;带宽越窄,说明波动率越低。
- 肯特纳通道:以均价为中心,用平均真实波幅(ATR 或 TR)衡量日内波动。
-
Squeeze 判断
- SQZ_ON = 1:BB 完全被 KC“套住”,波动率极低 → 蓄势阶段
- SQZ_OFF = 1:BB 再度张开并突破 KC → 释放阶段(即将爆发)
- SQZ_NO = 1:布林带与肯特纳通道相互交错,市场“正常呼吸”
John Carter 在《Mastering the Trade》中指出:“真正的行情始于沉默。” Squeeze 正是捕捉这段“沉默”结束的工具。
二、pandas_ta 调用方法
import pandas_ta as ta
import yfinance as yf
import pandas as pd
# ① 下载示例:BTC
btc = yf.download("BTC-USD", start="2023-01-01", end="2024-01-01")
# ② 计算 Squeeze(默认:BB 20,2;KC 20,1.5;Momentum 12,6)
sqz = ta.squeeze(btc["High"], btc["Low"], btc["Close"])
# ③ 合并查看
btc = pd.concat([btc, sqz], axis=1)
print(btc.tail())
三、返回 4 列字段中文释义
字段名 | 中文名称 | 解释 |
---|---|---|
SQZ_20_2.0_20_1.5 | 挤压动量值 | 先以 12 期动量,再 6 期平滑;正值多头,负值空头,绝对值越大动能越强。 |
SQZ_ON | 挤压启动 | 值为 1 时,BB 完全落入 KC —— 低波动蓄势。 |
SQZ_OFF | 挤压释放 | 值为 1 时,BB 脱离 KC —— 行情即将爆发。 |
SQZ_NO | 非挤压状态 | 两通道未完全重叠,市场正常波动。 |
同一根 K 线只会满足其中一个状态列为 1,其余为 0。
四、信号组合与交易逻辑
1. 多头爆发行情
- SQZ_ON=1 连续出现 ≥ 3 根 K 线(盘整蓄势);
- SQZ_OFF=1 且 动量值(SQZ_…)由负转正并持续放大;
- 价格放量突破关键阻力或均线上拐。 → 开多,止损放在盘整区下沿或 ATR × 1.5。
2. 空头爆发行情
- SQZ_ON 持续;
- SQZ_OFF=1 且动量值由正转负、快速下沉;
- 价格跌破支撑,均线死叉。 → 做空/平多。
3. 震荡过滤
若 SQZ_NO=1 且动量柱极度收敛(接近 0),则为“舒张”区,趋势信号可靠性降低,可减少交易频率。
五、实战案例:比特币日线
日期 | SQZ_ON | SQZ_OFF | 动量 | 走势结果 |
---|---|---|---|---|
2023‑06‑18 \~ 06‑25 | 1 | 0 | 接近 0 | 8 日窄幅横盘 |
2023‑06‑26 | 0 | 1 | 由 -0.15→ +0.40 | 启动上涨,10 日后涨 22% |
2023‑11‑10 \~ 11‑15 | 1 | 0 | 正值缩小 | 上涨停滞,价格震荡 |
2023‑11‑16 | 0 | 1 | +0.35→ -0.30 | 随后 7 日下跌 12% |
观察:在两轮大行情的起爆点,均出现“连列 SQZ_ON → SQZ_OFF + 动量翻向”组合,验证了 Squeeze 的前瞻性。
六、优势与局限
优势 | 局限 |
---|---|
预判“沉默 → 爆发”拐点,领先于均线系统 | 动量与方向需结合其他指标确认,否则易被假突破误导 |
适用于股票、期货、加密货币等波动性市场 | 参数(KC scalar、Mom length)需因市场波动特性调优 |
简洁、可视化直观(布林带与 KC 重叠) | 在极端单边趋势中很少回到 SQZ_ON,难以连续加仓 |
七、结语:让“沉默的市场”说话
波动挤压动量指标(Squeeze) 并非预测价格方向,而是告诉你:“时机到了,方向将由动量决定。”
借助 pandas_ta
,我们可快速量化 Squeeze 信号,将其与 MACD、RSI、ATR 配合,打造一套“发现‑确认‑执行”三段式交易系统。