速查手冊:TA-Lib 超過150種量化技術指標計算全解 - 1. Overlap Studies(重疊指標)
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(數學運算符)
Overlap Studies(重疊指標)
1. 移動平均類指標
SMA (Simple Moving Average)
簡單移動平均線
-
作用:通過算術平均平滑價格波動,識別趨勢方向。
-
計算方法:
SMA ( N ) = ∑ i = 1 N Close i N \text{SMA}(N) = \frac{\sum_{i=1}^{N} \text{Close}_i}{N} SMA(N)=N∑i=1N?Closei?? -
參數:
timeperiod=20
計算移動平均的周期(例如 20 日)。 -
使用場景:判斷支撐/阻力位,趨勢確認。
-
示例代碼:
sma = talib.SMA(close, timeperiod=20)
EMA (Exponential Moving Average)
指數移動平均線
-
作用:對近期價格賦予更高權重,反應更快。
-
計算方法:
EMA ( N ) t = α ? Close ? t + ( 1 ? α ) ? EMA ? t ? 1 \text{EMA}(N)_t = \alpha \cdot \text{Close}*t + (1-\alpha) \cdot \text{EMA}*{t-1} EMA(N)t?=α?Close?t+(1?α)?EMA?t?1( α = 2 N + 1 \alpha = \frac{2}{N+1} α=N+12?) -
參數:
timeperiod=20
指數平滑的周期。 -
使用場景:短期趨勢跟蹤,日內交易。
-
示例代碼:
ema = talib.EMA(close, timeperiod=20)
WMA (Weighted Moving Average)
加權移動平均線
-
作用:按時間線性遞減權重,強調近期價格。
-
計算方法:
WMA ( N ) = ∑ i = 1 N ( N ? i + 1 ) ? Close ? i ∑ ? i = 1 N ( N ? i + 1 ) \text{WMA}(N) = \frac{\sum_{i=1}^{N} (N-i+1) \cdot \text{Close}*i}{\sum*{i=1}^{N} (N-i+1)} WMA(N)=∑?i=1N(N?i+1)∑i=1N?(N?i+1)?Close?i? -
參數:
timeperiod=20
加權平均的周期。 -
使用場景:快速捕捉價格拐點。
-
示例代碼:
wma = talib.WMA(close, timeperiod=20)
DEMA (Double Exponential Moving Average)
雙指數移動平均線
-
作用:雙重平滑減少傳統EMA滯后性。
-
計算方法:
DEMA = 2 ? EMA ( N ) ? EMA ( EMA ( N ) ) \text{DEMA} = 2 \cdot \text{EMA}(N) - \text{EMA}(\text{EMA}(N)) DEMA=2?EMA(N)?EMA(EMA(N)) -
參數:
timeperiod=20
雙重指數平滑的周期。 -
使用場景:高頻交易或波動市場。
-
示例代碼:
dema = talib.DEMA(close, timeperiod=20)
TEMA (Triple Exponential Moving Average)
三重指數移動平均線
-
作用:三重平滑進一步減少噪音。
-
計算方法:對EMA進行三次平滑。
-
參數:
timeperiod=20
三重指數平滑的周期。 -
使用場景:中長期趨勢過濾。
-
示例代碼:
tema = talib.TEMA(close, timeperiod=20)
TRIMA (Triangular Moving Average)
三角形移動平均線
-
作用:權重呈三角形分布,平衡平滑性與響應速度。
-
計算方法:雙次平滑的SMA。
-
參數:
timeperiod=20
雙次平滑的周期。 -
使用場景:震蕩市趨勢識別。
-
示例代碼:
trima = talib.TRIMA(close, timeperiod=20)
KAMA (Kaufman Adaptive Moving Average)
自適應移動平均線
-
作用:根據波動率動態調整平滑周期。
-
計算方法:
- 效率比率(ER)= 價格變化 / 波動累積值
- 平滑系數 α = [ E R ? ( f a s t e s t ? s l o w e s t ) + s l o w e s t ] 2 \alpha = [ER \cdot (fastest - slowest) + slowest]^2 α=[ER?(fastest?slowest)+slowest]2
- KAMA = 當前價格 ? α \cdot \alpha ?α + 前一日KAMA ? ( 1 ? α ) \cdot (1-\alpha) ?(1?α)
-
參數:
timeperiod=30
-
使用場景:趨勢與震蕩交替市場。
-
示例代碼:
kama = talib.KAMA(close, timeperiod=30)
MAMA (MESA Adaptive Moving Average)
MESA自適應移動平均線
-
作用:基于希爾伯特變換的自適應移動平均。
-
計算方法:通過頻率調整快速響應趨勢變化。
-
參數:fastlimit=0.5 快速平滑系數上限(范圍 0.010.99),slowlimit=0.05 慢速平滑系數下限(范圍 0.010.99)。
-
使用場景:捕捉非線性趨勢。
-
示例代碼:
mama, fama = talib.MAMA(close, fastlimit=0.5, slowlimit=0.05)
T3 (Triple Exponential Moving Average with Volume Factor)
包含體積因子的三重指數移動平均線
-
作用:三重指數平滑結合體積因子。
-
計算方法:復雜的三次平滑公式。
-
參數:timeperiod=5 三重平滑的周期,vfactor=0.7 體積因子,控制平滑強度(0~1)。
-
使用場景:剔除短期噪音。
-
示例代碼:
t3 = talib.T3(close, timeperiod=5, vfactor=0.7)
2. 布林帶類指標
BBANDS (Bollinger Bands)
布林帶
-
作用:量化價格波動范圍,識別超買超賣。
-
計算方法:
- 中軌 = SMA(N)
- 上軌 = 中軌 + k ? 標準差 ( N ) k \cdot \text{標準差}(N) k?標準差(N)
- 下軌 = 中軌 - k ? 標準差 ( N ) k \cdot \text{標準差}(N) k?標準差(N)
-
參數:timeperiod=20 中軌(SMA)的周期,bdevup=2 上軌標準差倍數(例如 +2σ),nbdevdn=2 下軌標準差倍數(例如 -2σ)。
-
使用場景:價格突破上下軌時反轉信號。
-
示例代碼:
upper, middle, lower = talib.BBANDS(close, timeperiod=20, nbdevup=2, nbdevdn=2)
3. 其他重疊指標
HT_TRENDLINE (Hilbert Transform Trendline)
希爾伯特變換趨勢線
-
作用:生成平滑趨勢線,過濾市場噪音。
-
計算方法:基于希爾伯特變換的相位調整。
-
參數:無需周期參數。
-
使用場景:長期趨勢方向識別。
-
示例代碼:
ht_trend = talib.HT_TRENDLINE(close)
MIDPOINT
中點
-
作用:計算N日內價格中點。
-
計算方法:中點 = 最高價?+?最低價 2 \frac{\text{最高價 + 最低價}}{2} 2最高價?+?最低價?(N日窗口)。
-
參數:
timeperiod=14
計算中點價格的周期。 -
使用場景:動態支撐/阻力參考。
-
示例代碼:
midpoint = talib.MIDPOINT(close, timeperiod=14)
MIDPRICE
中位價格
-
作用:計算N日內最高價與最低價平均值。
-
計算方法:中點價 = N日最高價?+?N日最低價 2 \frac{\text{N日最高價 + N日最低價}}{2} 2N日最高價?+?N日最低價?。
-
參數:
timeperiod=14
計算中點價(最高價與最低價均值)的周期。 -
使用場景:簡化價格波動分析。
-
示例代碼:
midprice = talib.MIDPRICE(high, low, timeperiod=14)
SAR (Parabolic SAR)
拋物線轉向 SAR
-
作用:跟蹤趨勢反轉點,提供止損參考。
-
計算方法:
- 上升趨勢中,SAR點隨時間加速上移;
- 下降趨勢中,SAR點隨時間加速下移。
-
參數:acceleration=0.02 初始加速因子(步長),maximum=0.2 加速因子的上限值。
-
使用場景:趨勢反轉預警。
-
示例代碼:
sar = talib.SAR(high, low, acceleration=0.02, maximum=0.2)
SAREXT (Parabolic SAR Extended)
擴展拋物線轉向 SAR
-
作用:SAR的擴展版本,支持更多參數調整。
-
計算方法:改進的加速因子邏輯。
-
參數:start=0.02 初始加速因子,increment=0.02 每次加速的增量,maximum=0.2 加速因子上限。
-
使用場景:復雜趨勢環境下的止損優化。
-
示例代碼:
sar_ext = talib.SAREXT(high, low, start=0.02, increment=0.02, maximum=0.2)
4. 使用建議
- 組合策略:
SMA + BBANDS
:判斷趨勢方向與波動區間。EMA + SAR
:跟蹤趨勢并設置動態止損。
- 參數調優:
- 根據資產特性調整周期(如加密貨幣用 14 日,股票用 20 日)。
- 避免過度擬合:
- 回測時需驗證指標在多種市場環境(趨勢、震蕩)下的有效性。
風險提示與免責聲明
本文內容基于公開信息研究整理,不構成任何形式的投資建議。歷史表現不應作為未來收益保證,市場存在不可預見的波動風險。投資者需結合自身財務狀況及風險承受能力獨立決策,并自行承擔交易結果。作者及發布方不對任何依據本文操作導致的損失承擔法律責任。市場有風險,投資須謹慎。