金融, 动量

平滑动量复合SMI

SMI Ergodic Indicator

平滑动量复合指标(SMI Ergodic)— 精确捕捉趋势转折 英文名称:SMI Ergodic Indicator / Oscillator 中文命名:平滑动量复合指标 核心价值:在传统 TSI 双重动量 基础上引入信号线,让多空拐点更直观。 1 | …

平滑动量复合指标(SMI Ergodic)— 精确捕捉趋势转折

英文名称:SMI Ergodic Indicator / Oscillator 中文命名平滑动量复合指标 核心价值:在传统 TSI 双重动量 基础上引入信号线,让多空拐点更直观。


1 | 指标原理简述

SMI Ergodic Indicator 由 William Blau 提出,本质上是 TSI(True Strength Index) 的升级版:

组件 作用 公式概要
SMI 主线 双重 EMA 平滑后的价格动量 `SMI = EMA₂(EMA₁(ΔClose) / EMA₂(EMA₁( | ΔClose | ))) × 100`
信号线 对 SMI 再次 EMA 用于判断拐点、过滤噪声
SMI Oscillator SMI − 信号线 显示多空动能差值
  • > 0 = 多头动能主导
  • < 0 = 空头动能主导
  • 零轴穿越 = 趋势反转信号

2 | pandas_ta 一键计算

pandas_ta 已内置 smi()smo()(Oscillator):

import pandas as pd, pandas_ta as ta, yfinance as yf

# 下载示例数据 —— 比特币
btc = yf.download("BTC-USD", start="2023-01-01", end="2024-01-01")

# 计算 SMI(默认 25,13,2 周期)
btc[['SMI','SMIsig']] = ta.smi(btc['Close'])
btc['SMO'] = btc.ta.smo(btc['Close'])     # SMI Oscillator

print(btc[['Close','SMI','SMIsig','SMO']].tail())

返回字段

  • SMI:平滑动量复合主线
  • SMIsig:信号线
  • SMO:Oscillator,用来观察动能交叉

3 | 信号解读与交易逻辑

核心法则:零轴判多空;交叉判入场

  1. 多头启动

    • SMI 自下向上穿越 0 且上穿 SMIsig
    • 可配合放量、均线金叉确认
  2. 空头反转

    • SMI 下破 0 并跌破信号线
    • 适合平多或尝试空单
  3. 背离预警

    • 价格创新高而 SMI 不创新高 → 顶背离
    • 价格创新低而 SMI 不创新低 → 底背离
  4. Oscillator 用法

    • SMO 上穿 0 → 加仓多头
    • SMO 下穿 0 → 加仓空头
    • SMO 反复围绕 0 → 震荡过滤,避免频繁交易

4 | 实战案例:BTC 日线趋势捕捉

long_cond  = (btc['SMI'] > 0) & (btc['SMI'].shift(1) <= 0)
short_cond = (btc['SMI'] < 0) & (btc['SMI'].shift(1) >= 0)

signals = btc[long_cond | short_cond][['Close','SMI']]
print(signals.tail())
  • 2023‑10‑23SMI 上穿零轴 → 比特币随后八周上涨 26%
  • 2024‑03‑15SMI 下破零轴 → 出现 12% 调整窗口

5 | 优势与注意事项

优势

  • 双平滑 降低噪声,信号更干净
  • 信号线 提供二次确认,减少误判
  • 与 MACD、RSI 等指标组合,可形成多因子动量体系

注意

  • 过度平滑会带来轻微滞后,不适合超短线;
  • 行情极端震荡时,零轴反复穿越需结合布林带或 ATR 过滤

6 | 结语

平滑动量复合指标(SMI Ergodic) 兼顾趋势方向动能强度,在识别中期拐点、过滤随机噪声方面表现优异。借助 pandas_ta,你可以快速将 SMI 纳入量化框架,辅以回测与风控,构建更稳健的交易策略。

动能与趋势同在,行情自然清晰。 用 SMI,让交易决策更具“活力感”。