速查手册: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=1NClosei -
参数:
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 日)。
- 避免过度拟合:
- 回测时需验证指标在多种市场环境(趋势、震荡)下的有效性。
风险提示与免责声明
本文内容基于公开信息研究整理,不构成任何形式的投资建议。历史表现不应作为未来收益保证,市场存在不可预见的波动风险。投资者需结合自身财务状况及风险承受能力独立决策,并自行承担交易结果。作者及发布方不对任何依据本文操作导致的损失承担法律责任。市场有风险,投资须谨慎。