速查手册:TA-Lib 超过150种量化技术指标计算全解 - 2. Momentum Indicators(动量指标)
速查手册:TA-Lib 超过150种量化技术指标计算全解 - 2. Momentum Indicators(动量指标)
TA-Lib(Technical Analysis Library)是广泛使用的金融技术分析库,实现了超过150种技术指标计算函数,适用于股票、期货等金融数据的技术分析,帮助用户进行量化研究和交易策略开发。
文中内容仅限技术学习与代码实践参考,市场存在不确定性,技术分析需谨慎验证,不构成任何投资建议。适合量化新手建立系统认知,为策略开发打下基础。
目录
- Overlap Studies(重叠指标)
- Momentum Indicators(动量指标)
- Volume Indicators(成交量指标)
- Volatility Indicators(波动率指标)
- Cycle Indicators(周期指标)
- Price Transform(价格变换)
- Pattern Recognition(模式识别)
- Statistic Functions(统计函数)
- Math Transform(数学变换)
- Math Operators(数学运算符)
Momentum Indicators(动量指标)
1. 经典动量指标
RSI (Relative Strength Index)
相对强弱指数
-
作用:衡量价格变化速度,识别超买(>70)或超卖(<30)。
-
计算方法:
RSI = 100 − 100 1 + 平均涨幅 平均跌幅 \text{RSI} = 100 - \frac{100}{1 + \frac{\text{平均涨幅}}{\text{平均跌幅}}} RSI=100−1+平均跌幅平均涨幅100(默认 14 日)。 -
参数:
timeperiod=14
-
使用场景:
- 背离信号:价格新高但 RSI 未新高 → 潜在反转。
- 超买/超卖区域结合趋势方向使用(如上升趋势中超卖更可信)。
-
示例代码:
rsi = talib.RSI(close, timeperiod=14)
MACD (Moving Average Convergence Divergence)
移动平均收敛/发散指标
-
作用:捕捉趋势变化与动量方向。
-
计算方法:
- MACD 线 = EMA(12) - EMA(26)
- 信号线 = MACD 线的 EMA(9)
- 柱状图 = MACD 线 - 信号线
-
参数:
fastperiod=12
,slowperiod=26
,signalperiod=9
-
使用场景:
- 金叉(MACD 线上穿信号线):买入信号。
- 死叉(MACD 线下穿信号线):卖出信号。
-
示例代码:
macd, signal, hist = talib.MACD(close, fastperiod=12, slowperiod=26, signalperiod=9)
STOCH (Stochastic Oscillator)
随机振荡器
-
作用:比较收盘价与近期价格范围,识别反转点。
-
计算方法:
- %K = 当前收盘价 - N日最低价 N日最高价 - N日最低价 × 100 \frac{\text{当前收盘价 - N日最低价}}{\text{N日最高价 - N日最低价}} \times 100 N日最高价 - N日最低价当前收盘价 - N日最低价×100
- %D = %K 的 M 日移动平均(默认 3 日)。
-
参数:
fastk_period=5
,slowk_period=3
,slowd_period=3
-
使用场景:
- 超买区(>80)死叉(%K 下穿 %D):卖出信号。
- 超卖区(<20)金叉(%K 上穿 %D):买入信号。
-
示例代码:
slowk, slowd = talib.STOCH(high, low, close, fastk_period=5, slowk_period=3, slowd_period=3)
STOCHF (Fast Stochastic Oscillator)
快速随机振荡器
-
作用:快速随机指标,减少平滑步骤。
-
计算方法:直接计算 %K 和 %D 的快速版本。
-
参数:
fastk_period=5
,fastd_period=3
-
使用场景:短期高频交易。
-
示例代码:
fastk, fastd = talib.STOCHF(high, low, close, fastk_period=5, fastd_period=3)
STOCHRSI (Stochastic RSI)
RSI随机振荡器
-
作用:在 RSI 基础上计算随机值,增强灵敏度。
-
计算方法:对 RSI 值应用随机公式。
-
参数:
timeperiod=14
,fastk_period=5
,fastd_period=3
-
使用场景:捕捉 RSI 的超买超卖拐点。
-
示例代码:
stochrsi_k, stochrsi_d = talib.STOCHRSI(close, timeperiod=14, fastk_period=5, fastd_period=3)
2. 趋势强度指标
ADX (Average Directional Index)
平均趋向指数
-
作用:量化趋势强度(非方向),值越大趋势越强。
-
计算方法:
- 计算 +DI(正向动向)和 -DI(负向动向)。
- ADX = DX(动向指数)的 N 日平滑平均(默认 14 日)。
-
参数:
timeperiod=14
-
使用场景:
- ADX > 25:趋势明显,适合趋势跟踪策略。
- ADX < 20:市场震荡,避免趋势类策略。
-
示例代码:
adx = talib.ADX(high, low, close, timeperiod=14)
ADXR (Average Directional Movement Rating)
平均趋向运动评分
-
作用:ADX 的平滑版本,减少短期波动干扰。
-
计算方法:ADXR = ADX ∗ t + ADX ∗ t − N 2 \frac{\text{ADX}*t + \text{ADX}*{t-N}}{2} 2ADX∗t+ADX∗t−N(默认 N=14)。
-
参数:
timeperiod=14
-
使用场景:确认趋势持续性。
-
示例代码:
adxr = talib.ADXR(high, low, close, timeperiod=14)
3. 价格动量指标
CCI (Commodity Channel Index)
商品通道指数
-
作用:判断资产价格是否偏离统计常态。
-
计算方法:
CCI = 价格 - 典型价格均值 0.015 ⋅ 平均绝对偏差 \text{CCI} = \frac{\text{价格 - 典型价格均值}}{0.015 \cdot \text{平均绝对偏差}} CCI=0.015⋅平均绝对偏差价格 - 典型价格均值
(典型价 = 高 + 低 + 收 3 \frac{\text{高 + 低 + 收}}{3} 3高 + 低 + 收) -
参数:
timeperiod=14
-
使用场景:
- CCI > 100:超买;CCI < -100:超卖。
-
示例代码:
cci = talib.CCI(high, low, close, timeperiod=14)
WILLR (Williams %R)
威廉指标
-
作用:类似随机指标,但刻度反向(0 至 -100)。
-
计算方法:
% R = N日最高价 - 收盘价 N日最高价 - N日最低价 × − 100 \%R = \frac{\text{N日最高价 - 收盘价}}{\text{N日最高价 - N日最低价}} \times -100 %R=N日最高价 - N日最低价N日最高价 - 收盘价×−100 -
参数:
timeperiod=14
-
使用场景:
- 超卖(< -80)可能反弹,超买(> -20)可能回调。
-
示例代码:
willr = talib.WILLR(high, low, close, timeperiod=14)
CMO (Chande Momentum Oscillator)
Chande动量摆动指标
-
作用:基于绝对涨跌幅的动量指标,减少方向性偏差。
-
计算方法:
CMO = 总涨幅 - 总跌幅 总涨幅 + 总跌幅 × 100 \text{CMO} = \frac{\text{总涨幅 - 总跌幅}}{\text{总涨幅 + 总跌幅}} \times 100 CMO=总涨幅 + 总跌幅总涨幅 - 总跌幅×100(默认 14 日)。 -
参数:
timeperiod=14
-
使用场景:类似 RSI,但更敏感。
-
示例代码:
cmo = talib.CMO(close, timeperiod=14)
ROC (Rate of Change)
变动率指标
-
作用:计算价格变化率。
-
计算方法:
ROC = 当前收盘价 - N日前收盘价 N日前收盘价 × 100 \text{ROC} = \frac{\text{当前收盘价 - N日前收盘价}}{\text{N日前收盘价}} \times 100 ROC=N日前收盘价当前收盘价 - N日前收盘价×100 -
参数:
timeperiod=10
-
使用场景:捕捉价格加速或减速。
-
示例代码:
roc = talib.ROC(close, timeperiod=10)
4. 方向动量指标
AROON
阿隆指标
-
作用:衡量趋势方向和强度。
-
计算方法:
- Aroon Up = N − 距离最近N日内最高价的天数 N × 100 \frac{N - \text{距离最近N日内最高价的天数}}{N} \times 100 NN−距离最近N日内最高价的天数×100
- Aroon Down = N − 距离最近N日内最低价的天数 N × 100 \frac{N - \text{距离最近N日内最低价的天数}}{N} \times 100 NN−距离最近N日内最低价的天数×100
-
参数:
timeperiod=14
-
使用场景:
- Aroon Up > Aroon Down:上升趋势;反之下降趋势。
-
示例代码:
aroon_down, aroon_up = talib.AROON(high, low, timeperiod=14)
AROONOSC (Aroon Oscillator)
阿隆振荡器
-
作用:Aroon Up 与 Aroon Down 的差值。
-
计算方法:
AROONOSC = Aroon Up − Aroon Down \text{AROONOSC} = \text{Aroon Up} - \text{Aroon Down} AROONOSC=Aroon Up−Aroon Down -
参数:
timeperiod=14
-
使用场景:
- 值 > 0:上升动量占优;值 < 0:下降动量占优。
-
示例代码:
aroon_osc = talib.AROONOSC(high, low, timeperiod=14)
5. 其他动量指标
BOP (Balance of Power)
动力平衡指标
-
作用:衡量买方与卖方压力。
-
计算方法:
BOP = 收盘价 - 开盘价 最高价 - 最低价 \text{BOP} = \frac{\text{收盘价 - 开盘价}}{\text{最高价 - 最低价}} BOP=最高价 - 最低价收盘价 - 开盘价 -
参数:无需周期参数。
-
使用场景:
- BOP > 0:买方主导;BOP < 0:卖方主导。
-
示例代码:
bop = talib.BOP(open, high, low, close)
MFI (Money Flow Index)
资金流量指数
-
作用:结合价格和成交量的动量指标。
-
计算方法:类似 RSI,但引入成交量加权。
-
参数:
timeperiod=14
-
使用场景:
- MFI > 80:超买;MFI < 20:超卖。
-
示例代码:
mfi = talib.MFI(high, low, close, volume, timeperiod=14)
TRIX (Triple Exponential Average)
三重指数平均线
-
作用:三重平滑价格变化率,过滤短期波动。
-
计算方法:对价格进行三次指数平滑后计算变化率。
-
参数:
timeperiod=30
-
使用场景:捕捉中长期趋势变化。
-
示例代码:
trix = talib.TRIX(close, timeperiod=30)
6. 使用建议
- 组合策略:
RSI + MACD
:RSI 确认超买/超卖,MACD 触发交易信号。ADX + SAR
:ADX 判断趋势强度,SAR 提供动态止损点。
- 参数调优:
- 震荡市缩短周期(如 RSI 用 7 日),趋势市延长周期(如 ADX 用 20 日)。
- 验证信号:
- 结合成交量(如 MFI)或波动率(如 ATR)过滤虚假信号。
风险提示与免责声明
本文内容基于公开信息研究整理,不构成任何形式的投资建议。历史表现不应作为未来收益保证,市场存在不可预见的波动风险。投资者需结合自身财务状况及风险承受能力独立决策,并自行承担交易结果。作者及发布方不对任何依据本文操作导致的损失承担法律责任。市场有风险,投资须谨慎。