ta-lib-python函数API实战:SMA、MACD与RSI指标计算示例

【免费下载链接】ta-lib-python Python wrapper for TA-Lib (http://ta-lib.org/). 【免费下载链接】ta-lib-python 项目地址: https://gitcode.com/gh_mirrors/ta/ta-lib-python

引言:技术指标计算的痛点与解决方案

你是否还在为手动实现复杂的技术分析指标而烦恼?面对SMA(简单移动平均线)、MACD(指数移动平均收敛散度)和RSI(相对强弱指数)等常用指标,手动编码不仅耗时易错,还难以保证计算精度。本文将通过ta-lib-python库的实战示例,展示如何用简洁高效的API调用完成这些指标的计算,帮助量化分析师和交易系统开发者快速集成技术分析功能。

读完本文后,你将能够:

  • 理解ta-lib-python的核心API设计与调用规范
  • 掌握SMA、MACD和RSI指标的参数配置与计算方法
  • 处理实际金融数据中的NaN值和边界情况
  • 对比不同指标的计算结果与市场含义
  • 将技术指标计算集成到自己的交易系统中

环境准备与库安装

安装ta-lib-python

ta-lib-python是TA-Lib(Technical Analysis Library)的Python封装,提供了150多种技术分析指标的计算功能。在开始之前,需要先完成库的安装:

# 通过pip安装ta-lib-python
pip install ta-lib

# 如需源码编译安装(适用于特殊环境)
git clone https://gitcode.com/gh_mirrors/ta/ta-lib-python
cd ta-lib-python
python setup.py install

验证安装

安装完成后,可通过以下代码验证库是否正常工作:

import talib
import numpy as np

# 验证TA-Lib版本
print(f"ta-lib-python版本: {talib.__version__}")
print(f"TA-Lib核心版本: {talib.__ta_version__}")

# 测试基础功能
test_data = np.array([1.0, 2.0, 3.0, 4.0, 5.0], dtype=np.float64)
sma = talib.SMA(test_data, timeperiod=3)
print(f"测试数据SMA(3)结果: {sma}")  # 应输出 [nan nan 2. 3. 4.]

ta-lib-python核心API设计

函数分类体系

ta-lib-python将技术指标分为9个功能组,涵盖了从趋势分析到波动率测量的各类技术分析需求:

# 查看所有指标分类
print(talib.get_function_groups())

核心功能组包括:

  • Overlap Studies:重叠研究(如SMA、EMA、BBANDS)
  • Momentum Indicators:动量指标(如MACD、RSI、ADX)
  • Volatility Indicators:波动率指标(如ATR、NATR)
  • Volume Indicators:成交量指标(如AD、OBV)

通用API调用模式

ta-lib-python的函数调用遵循一致的模式,通常包括:

  • 输入数据(价格序列或其他指标数据)
  • 参数配置(时间周期、平滑类型等)
  • 返回结果(指标计算结果,可能是单个数组或元组)
# 通用API调用模板
result = talib.INDICATOR_NAME(input_data, parameter1=value1, parameter2=value2, ...)

对于需要多价格输入的指标(如需要高开低收数据),函数参数顺序通常为:high, low, closeopen, high, low, close

SMA(简单移动平均线)实战

SMA指标原理与参数

SMA(Simple Moving Average,简单移动平均线)是最基础的趋势指标,通过计算某段时间内收盘价的算术平均值来平滑价格波动。其数学公式为:

$$SMA_n = \frac{P_1 + P_2 + ... + P_n}{n}$$

其中,$P_i$ 为第i期的收盘价,n为时间周期。

ta-lib-python中SMA函数的定义为:

def SMA(real, timeperiod=30) -> numpy.ndarray

参数说明:

  • real:输入价格序列(通常为收盘价数组)
  • timeperiod:计算周期,默认30天

基础计算示例

import numpy as np
import talib

# 生成示例收盘价数据(10个交易日)
close_prices = np.array([
    100.0, 101.0, 102.0, 103.0, 104.0,
    105.0, 106.0, 107.0, 108.0, 109.0
], dtype=np.float64)

# 计算5日简单移动平均线
sma_5 = talib.SMA(close_prices, timeperiod=5)

print("收盘价数据:", close_prices)
print("5日SMA结果:", sma_5)

输出结果:

收盘价数据: [100. 101. 102. 103. 104. 105. 106. 107. 108. 109.]
5日SMA结果: [  nan   nan   nan   nan 102.  103.  104.  105.  106.  107. ]

处理实际数据中的NaN值

金融数据中常存在缺失值(NaN),ta-lib-python会自动处理这些情况:

# 包含NaN值的收盘价数据
close_with_nan = np.array([
    100.0, np.nan, 102.0, 103.0, np.nan,
    105.0, 106.0, np.nan, 108.0, 109.0
], dtype=np.float64)

# 计算5日SMA
sma_with_nan = talib.SMA(close_with_nan, timeperiod=5)
print("含NaN的收盘价数据:", close_with_nan)
print("NaN处理后的SMA结果:", sma_with_nan)

多周期SMA对比分析

在实际分析中,常需要对比不同周期的移动平均线:

# 生成30天的随机收盘价数据
np.random.seed(42)  # 设置随机种子,保证结果可复现
close_prices = np.cumsum(np.random.randn(30)) + 100  # 从100开始的随机游走

# 计算不同周期的SMA
sma_5 = talib.SMA(close_prices, timeperiod=5)
sma_10 = talib.SMA(close_prices, timeperiod=10)
sma_20 = talib.SMA(close_prices, timeperiod=20)

# 输出最后10个数据点进行对比
comparison = np.column_stack((close_prices[-10:], sma_5[-10:], sma_10[-10:], sma_20[-10:]))
print("收盘价 | SMA5 | SMA10 | SMA20")
print("-----------------------------")
for row in comparison:
    print(f"{row[0]:.2f} | {row[1]:.2f} | {row[2]:.2f} | {row[3]:.2f}")

MACD(指数移动平均收敛散度)实战

MACD指标原理与参数

MACD(Moving Average Convergence Divergence,指数移动平均收敛散度)是一种趋势跟踪动量指标,通过比较短期和长期指数移动平均线(EMA)来判断趋势强度和转折点。

MACD指标包含三个部分:

  • MACD线:12日EMA - 26日EMA
  • 信号线(Signal Line):MACD线的9日EMA
  • 直方图(Histogram):MACD线 - 信号线

ta-lib-python中MACD函数的定义为:

def MACD(real, fastperiod=12, slowperiod=26, signalperiod=9) -> tuple[numpy.ndarray, numpy.ndarray, numpy.ndarray]

参数说明:

  • real:输入价格序列(通常为收盘价数组)
  • fastperiod:快速EMA周期,默认12
  • slowperiod:慢速EMA周期,默认26
  • signalperiod:信号线周期,默认9

返回值:(macd, signal, histogram)的元组

基础计算示例

import numpy as np
import talib

# 生成30天的收盘价数据(模拟上涨趋势)
np.random.seed(42)
close_prices = np.cumsum(np.random.randn(30)*0.5 + 0.2) + 100  # 带正漂移的随机游走

# 计算MACD指标
macd, macd_signal, macd_hist = talib.MACD(close_prices)

# 输出结果的最后10行
print("日期 | MACD线 | 信号线 | 直方图")
print("------------------------------")
for i in range(-10, 0):
    print(f"{i+31:2d} | {macd[i]:.4f} | {macd_signal[i]:.4f} | {macd_hist[i]:.4f}")

MACD指标的市场含义解析

MACD指标各组成部分的市场含义:

  1. MACD线与信号线交叉

    • 当MACD线从下向上穿过信号线时,形成"金叉",通常视为买入信号
    • 当MACD线从上向下穿过信号线时,形成"死叉",通常视为卖出信号
  2. 直方图的变化

    • 直方图为正且扩大,表示上涨 momentum 增强
    • 直方图为负且扩大,表示下跌 momentum 增强
    • 直方图缩小,表示当前趋势可能减弱
# 识别MACD金叉和死叉信号
def detect_macd_crossovers(macd_line, signal_line):
    """检测MACD金叉和死叉信号"""
    signals = np.zeros(len(macd_line))  # 0:无信号, 1:金叉, -1:死叉
    
    # 遍历MACD线和信号线,跳过前33天(指标初始化阶段)
    for i in range(33, len(macd_line)-1):
        # 金叉:MACD线从下向上穿过信号线
        if macd_line[i-1] < signal_line[i-1] and macd_line[i] > signal_line[i]:
            signals[i] = 1
        # 死叉:MACD线从上向下穿过信号线
        elif macd_line[i-1] > signal_line[i-1] and macd_line[i] < signal_line[i]:
            signals[i] = -1
    
    return signals

# 检测信号
crossover_signals = detect_macd_crossovers(macd, macd_signal)

# 输出检测到的信号点
print("日期 | 信号类型")
print("------------")
for i in range(len(crossover_signals)):
    if crossover_signals[i] == 1:
        print(f"{i+1:2d} | 金叉(买入)")
    elif crossover_signals[i] == -1:
        print(f"{i+1:2d} | 死叉(卖出)")

参数优化与自定义配置

除了默认参数(12, 26, 9),还可以根据市场特性自定义MACD参数:

# 不同参数组合的MACD计算对比
macd_short, signal_short, hist_short = talib.MACD(close_prices, fastperiod=6, slowperiod=13, signalperiod=5)
macd_medium, signal_medium, hist_medium = talib.MACD(close_prices, fastperiod=12, slowperiod=26, signalperiod=9)
macd_long, signal_long, hist_long = talib.MACD(close_prices, fastperiod=19, slowperiod=39, signalperiod=9)

# 比较不同参数下的MACD值(最后一个数据点)
print("参数组合 | MACD值 | 信号线 | 直方图")
print("--------------------------------")
print(f"6,13,5  | {macd_short[-1]:.4f} | {signal_short[-1]:.4f} | {hist_short[-1]:.4f}")
print(f"12,26,9 | {macd_medium[-1]:.4f} | {signal_medium[-1]:.4f} | {hist_medium[-1]:.4f}")
print(f"19,39,9 | {macd_long[-1]:.4f} | {signal_long[-1]:.4f} | {hist_long[-1]:.4f}")

RSI(相对强弱指数)实战

RSI指标原理与参数

RSI(Relative Strength Index,相对强弱指数)是一种动量指标,通过比较一段时间内价格上涨和下跌的幅度来评估资产的超买和超卖状态。RSI的取值范围在0到100之间,通常:

  • RSI > 70 表示资产可能超买(Overbought)
  • RSI < 30 表示资产可能超卖(Oversold)

ta-lib-python中RSI函数的定义为:

def RSI(real, timeperiod=14) -> numpy.ndarray

参数说明:

  • real:输入价格序列(通常为收盘价数组)
  • timeperiod:计算周期,默认14天

基础计算示例

import numpy as np
import talib

# 生成包含上涨和下跌的价格序列
close_prices = np.array([
    45.25, 45.10, 45.30, 45.60, 45.75, 46.00, 45.80, 45.90, 46.20, 46.50,
    46.75, 47.00, 46.80, 46.60, 46.50, 46.30, 46.10, 45.90, 45.70, 45.50,
    45.30, 45.40, 45.60, 45.80, 46.00, 46.30, 46.60, 46.90, 47.20, 47.50
], dtype=np.float64)

# 计算14日RSI
rsi_14 = talib.RSI(close_prices, timeperiod=14)

# 输出RSI结果
print("日期 | 收盘价 | RSI(14)")
print("---------------------")
for i in range(len(close_prices)):
    if i >= 13:  # RSI需要14天数据才能计算出第一个值
        print(f"{i+1:2d} | {close_prices[i]:6.2f} | {rsi_14[i]:6.2f}")
    else:
        print(f"{i+1:2d} | {close_prices[i]:6.2f} |    NaN")

RSI超买超卖信号识别

# 识别RSI超买超卖信号
def detect_rsi_signals(rsi_values, overbought=70, oversold=30):
    """
    检测RSI超买超卖信号
    
    参数:
        rsi_values: RSI指标值数组
        overbought: 超买阈值,默认70
        oversold: 超卖阈值,默认30
        
    返回:
        signals: 信号数组,1=超卖(买入), -1=超买(卖出), 0=无信号
    """
    signals = np.zeros(len(rsi_values))
    
    for i in range(len(rsi_values)):
        if not np.isnan(rsi_values[i]):
            if rsi_values[i] < oversold:
                signals[i] = 1  # 超卖信号
            elif rsi_values[i] > overbought:
                signals[i] = -1  # 超买信号
    
    return signals

# 检测RSI信号
rsi_signals = detect_rsi_signals(rsi_14)

# 输出信号点
print("RSI信号检测结果:")
print("日期 | RSI值 | 信号类型")
print("---------------------")
for i in range(len(rsi_signals)):
    if rsi_signals[i] == 1:
        print(f"{i+1:2d} | {rsi_14[i]:6.2f} | 超卖(买入)")
    elif rsi_signals[i] == -1:
        print(f"{i+1:2d} | {rsi_14[i]:6.2f} | 超买(卖出)")

多周期RSI策略构建

结合不同周期的RSI可以提高信号质量:

# 计算不同周期的RSI
rsi_7 = talib.RSI(close_prices, timeperiod=7)   # 短期RSI
rsi_14 = talib.RSI(close_prices, timeperiod=14) # 中期RSI
rsi_21 = talib.RSI(close_prices, timeperiod=21) # 长期RSI

# 多周期RSI策略:当短期RSI超卖且中期RSI也处于低位时买入
def multi_timeframe_rsi_strategy(rsi_short, rsi_medium, rsi_long, 
                                short_os=30, medium_os=40, long_os=50):
    """多周期RSI策略信号生成"""
    signals = np.zeros(len(rsi_short))
    
    for i in range(len(rsi_short)):
        # 检查是否所有RSI值都有效(非NaN)
        if not (np.isnan(rsi_short[i]) or np.isnan(rsi_medium[i]) or np.isnan(rsi_long[i])):
            # 短期超卖,且中、长期RSI也处于低位
            if (rsi_short[i] < short_os and 
                rsi_medium[i] < medium_os and 
                rsi_long[i] < long_os):
                signals[i] = 1
                
            # 短期超买,且中、长期RSI也处于高位
            elif (rsi_short[i] > (100-short_os) and 
                  rsi_medium[i] > (100-medium_os) and 
                  rsi_long[i] > (100-long_os)):
                signals[i] = -1
                
    return signals

# 生成多周期RSI策略信号
multi_rsi_signals = multi_timeframe_rsi_strategy(rsi_7, rsi_14, rsi_21)

# 输出多周期RSI策略信号
print("多周期RSI策略信号:")
print("日期 | 短期RSI | 中期RSI | 长期RSI | 信号")
print("-------------------------------------")
for i in range(len(multi_rsi_signals)):
    if multi_rsi_signals[i] != 0:
        signal_type = "买入" if multi_rsi_signals[i] == 1 else "卖出"
        print(f"{i+1:2d} | {rsi_7[i]:8.2f} | {rsi_14[i]:8.2f} | {rsi_21[i]:8.2f} | {signal_type}")

指标组合应用:SMA+MACD+RSI交易策略

多指标组合策略设计

在实际交易系统中,通常会组合多个指标来过滤噪声,提高信号质量。下面我们构建一个结合SMA趋势、MACD动量和RSI超买超卖的综合策略:

# 综合交易策略信号生成
def combined_strategy(close_prices, fast_period=50, slow_period=200,
                     macd_fast=12, macd_slow=26, macd_signal=9,
                     rsi_period=14, rsi_os=30, rsi_ob=70):
    """
    综合交易策略:SMA趋势 + MACD动量 + RSI超买超卖
    
    买入条件:
    1. 短期SMA上穿长期SMA(均线金叉)
    2. MACD线在零轴上方或刚上穿零轴
    3. RSI处于超卖区域或刚刚脱离超卖区域
    
    卖出条件:
    1. 短期SMA下穿长期SMA(均线死叉)
    2. MACD线在零轴下方或刚下穿零轴
    3. RSI处于超买区域或刚刚脱离超买区域
    """
    # 计算各指标
    sma_fast = talib.SMA(close_prices, timeperiod=fast_period)
    sma_slow = talib.SMA(close_prices, timeperiod=slow_period)
    macd, macd_signal_line, _ = talib.MACD(close_prices, fastperiod=macd_fast, 
                                          slowperiod=macd_slow, signalperiod=macd_signal)
    rsi = talib.RSI(close_prices, timeperiod=rsi_period)
    
    signals = np.zeros(len(close_prices))
    
    # 遍历价格数据,生成信号
    for i in range(max(slow_period, macd_slow+macd_signal, rsi_period), len(close_prices)):
        # 检查买入条件
        buy_condition = (
            sma_fast[i] > sma_slow[i] and  # 短期均线上穿长期均线
            sma_fast[i-1] <= sma_slow[i-1] and
            macd[i] > macd_signal_line[i] and  # MACD金叉
            macd[i] > 0 and  # MACD在零轴上方
            rsi[i] > rsi_os and rsi[i-1] <= rsi_os  # RSI刚脱离超卖
        )
        
        # 检查卖出条件
        sell_condition = (
            sma_fast[i] < sma_slow[i] and  # 短期均线下穿长期均线
            sma_fast[i-1] >= sma_slow[i-1] and
            macd[i] < macd_signal_line[i] and  # MACD死叉
            macd[i] < 0 and  # MACD在零轴下方
            rsi[i] < rsi_ob and rsi[i-1] >= rsi_ob  # RSI刚脱离超买
        )
        
        if buy_condition:
            signals[i] = 1
        elif sell_condition:
            signals[i] = -1
    
    return signals, sma_fast, sma_slow, macd, macd_signal_line, rsi

# 生成示例数据(1年交易日数据)
np.random.seed(42)
days = 252  # 一年大约252个交易日
close_prices = np.cumsum(np.random.randn(days)*0.5 + 0.1) + 100  # 带正漂移的随机游走

# 生成综合策略信号
strategy_signals, sma_fast, sma_slow, macd, macd_signal_line, rsi = combined_strategy(close_prices)

# 输出策略信号
print("综合策略信号:")
print("日期 | 收盘价 | 信号类型")
print("---------------------")
for i in range(len(strategy_signals)):
    if strategy_signals[i] == 1:
        print(f"{i+1:3d} | {close_prices[i]:6.2f} | 买入")
    elif strategy_signals[i] == -1:
        print(f"{i+1:3d} | {close_prices[i]:6.2f} | 卖出")

策略回测与绩效评估

# 策略回测函数
def backtest_strategy(close_prices, signals, initial_capital=10000):
    """
    回测交易策略绩效
    
    参数:
        close_prices: 收盘价数组
        signals: 交易信号数组 (1=买入, -1=卖出, 0=无操作)
        initial_capital: 初始资金
        
    返回:
        回测结果字典,包含资产曲线、收益率等
    """
    portfolio = pd.DataFrame(index=range(len(close_prices)))
    portfolio['price'] = close_prices
    portfolio['signal'] = signals
    portfolio['positions'] = portfolio['signal'].cumsum()  # 持仓情况
    
    # 计算资产价值
    portfolio['cash'] = initial_capital - (portfolio['signal'] * portfolio['price']).cumsum()
    portfolio['holdings'] = portfolio['positions'] * portfolio['price']
    portfolio['total'] = portfolio['cash'] + portfolio['holdings']
    
    # 计算每日收益率
    portfolio['returns'] = portfolio['total'].pct_change()
    
    return portfolio

# 注意:上面的回测函数需要pandas库支持
# 实际使用时,需先安装pandas:pip install pandas
# 然后导入pandas:import pandas as pd

# 假设我们已经有了策略信号,可以这样调用:
# portfolio = backtest_strategy(close_prices, strategy_signals)
# print("策略最终资产价值:", portfolio['total'].iloc[-1])
# print("策略总收益率: {:.2%}".format(portfolio['total'].iloc[-1]/10000 - 1))

常见问题与解决方案

指标计算结果为NaN

问题:调用指标函数后返回全NaN或部分NaN结果。

解决方案

  1. 检查输入数据长度:大多数指标需要至少与计算周期相同长度的数据

    # 检查数据长度是否足够
    def check_data_length(indicator_name, data_length, timeperiod):
        min_lengths = {
            'SMA': timeperiod,
            'MACD': 33,  # 12+26-1 + 9
            'RSI': timeperiod + 1,
            'BBANDS': timeperiod + 20  # 包含标准差计算
        }
        required = min_lengths.get(indicator_name, timeperiod)
        return data_length >= required
    
  2. 检查输入数据类型:确保输入是numpy数组且类型为float64

    # 确保数据类型正确
    if close_prices.dtype != np.float64:
        close_prices = close_prices.astype(np.float64)
    
  3. 检查数据中是否有连续NaN:过多连续NaN会导致指标无法计算

    # 检查连续NaN的数量
    max_consecutive_nan = max(sum(1 for _ in group) for key, group in 
                             itertools.groupby(np.isnan(close_prices)) if key)
    

参数选择问题

问题:如何选择合适的指标参数(如RSI周期、MACD参数等)?

解决方案

  1. 了解参数的市场含义:短周期指标对价格变化更敏感,长周期指标更稳定
  2. 根据市场特性调整:波动率高的市场适合较长周期,波动率低的市场适合较短周期
  3. 避免过度优化:参数优化应基于理论依据,而非单纯拟合历史数据

与其他数据类型集成

ta-lib-python支持与pandas Series和DataFrame无缝集成:

import pandas as pd

# 创建pandas DataFrame
data = pd.DataFrame({
    'close': close_prices,
    'high': close_prices * (1 + np.random.rand(len(close_prices))*0.02),
    'low': close_prices * (1 - np.random.rand(len(close_prices))*0.02),
    'open': close_prices * (1 + np.random.rand(len(close_prices))*0.01 - 0.005)
})

# 直接对DataFrame列应用ta-lib函数
data['sma_50'] = talib.SMA(data['close'], timeperiod=50)
data['rsi_14'] = talib.RSI(data['close'], timeperiod=14)
data[['macd', 'macd_signal', 'macd_hist']] = talib.MACD(data['close'])

# 查看结果
print(data[['close', 'sma_50', 'rsi_14', 'macd', 'macd_signal', 'macd_hist']].tail(10))

总结与进阶方向

关键知识点回顾

本文详细介绍了ta-lib-python库中SMA、MACD和RSI三个核心技术指标的API调用方法和实战应用,包括:

  1. SMA指标:基础趋势分析工具,通过计算价格序列的移动平均值来识别趋势方向

    • 核心API:talib.SMA(real, timeperiod=30)
    • 关键应用:识别长期趋势、判断支撑阻力位
  2. MACD指标:动量与趋势结合的指标,通过不同周期EMA的差异来判断趋势强度

    • 核心API:talib.MACD(real, fastperiod=12, slowperiod=26, signalperiod=9)
    • 关键应用:识别趋势转折点、判断动量强度
  3. RSI指标:衡量价格变动速度和幅度的动量指标

    • 核心API:talib.RSI(real, timeperiod=14)
    • 关键应用:识别超买超卖状态、判断趋势衰竭

进阶学习方向

  1. 更多指标探索:ta-lib-python提供了150多种指标,如布林带(BBANDS)、ATR波动率、OBV能量潮等
  2. 指标组合策略:结合不同类型指标构建更稳健的交易系统
  3. 参数优化框架:使用网格搜索或遗传算法优化指标参数
  4. 实时计算与可视化:将指标计算集成到实时行情系统并可视化展示
  5. 量化交易系统:结合订单管理和风险管理,构建完整量化交易系统

通过掌握ta-lib-python的API使用方法,量化分析师和交易系统开发者可以快速实现复杂的技术分析功能,为交易决策提供数据支持。

代码资源与扩展阅读

完整示例代码

本文所有示例代码可通过以下方式获取:

git clone https://gitcode.com/gh_mirrors/ta/ta-lib-python
cd ta-lib-python/examples

官方文档与资源

  • ta-lib-python官方文档:库内包含的DEVELOPMENT和docs目录
  • TA-Lib核心算法文档:库内包含的README.md文件

实用工具函数

# 技术指标计算常用工具函数集合
import numpy as np
import talib

def calculate_all_indicators(close_prices, high_prices=None, low_prices=None):
    """计算常用技术指标的综合函数"""
    indicators = {}
    
    # 趋势指标
    indicators['sma_5'] = talib.SMA(close_prices, timeperiod=5)
    indicators['sma_20'] = talib.SMA(close_prices, timeperiod=20)
    indicators['sma_50'] = talib.SMA(close_prices, timeperiod=50)
    indicators['ema_12'] = talib.EMA(close_prices, timeperiod=12)
    indicators['ema_26'] = talib.EMA(close_prices, timeperiod=26)
    
    # 动量指标
    if high_prices is not None and low_prices is not None:
        indicators['rsi_14'] = talib.RSI(close_prices, timeperiod=14)
        indicators['adx_14'] = talib.ADX(high_prices, low_prices, close_prices, timeperiod=14)
        indicators['cci_14'] = talib.CCI(high_prices, low_prices, close_prices, timeperiod=14)
    
    # 波动指标
    indicators['macd'], indicators['macd_signal'], indicators['macd_hist'] = talib.MACD(close_prices)
    
    return indicators

掌握这些技术指标的计算与应用,将为你的量化分析和交易决策提供强大支持。持续学习并实践不同的指标组合策略,是提升量化交易能力的关键。

【免费下载链接】ta-lib-python Python wrapper for TA-Lib (http://ta-lib.org/). 【免费下载链接】ta-lib-python 项目地址: https://gitcode.com/gh_mirrors/ta/ta-lib-python

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐