mcpField
T
ta-lib

ta-lib

github.com/agiprolabs数据与数据库456500 次安装8 周前更新
代码仓库

关于 ta-lib

ta-lib 是使用 TA-Lib 的技能;TA-Lib 是带 Python 封装的 C 技术分析库。它面向金融数据分析和交易系统开发,可处理 NumPy 数组并计算指标、识别蜡烛图形态。

主要功能

  1. 01150 多种技术指标函数
  2. 0261 种蜡烛图形态识别
  3. 03面向 NumPy 数组的 C 计算
  4. 04函数式与抽象式 API
  5. 05带回退逻辑的指标脚本

适用场景

  1. 01为大型回测计算指标
  2. 02扫描 OHLCV 数据中的蜡烛图形态
  3. 03按名称动态选择指标

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/agiprolabs/claude-trading-skills --skill ta-lib

安装后在 Claude Code 中输入/ta-lib确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
candlestick_patterns.md
function_reference.md
scripts/
compute_indicators.py
pattern_scanner.py

详细介绍

ta-lib — 经 C 优化的技术分析

TA-Lib(Technical Analysis Library)是一个 C 语言库,配有 Python 封装,提供 150 多种技术分析函数和 61 种蜡烛图形态识别函数。它是性能关键型指标计算的行业标准,应用于生产交易系统;在这些场景中,pandas-ta 或纯 Python 替代方案的速度太慢。

TA-Lib 是什么

TA-Lib 最初以 C 语言编写,用于分析金融市场数据。其 Python 封装(PyPI 上的 TA-Lib,导入时使用 talib)提供:

  • 150 多种指标函数,涵盖重叠、动量、成交量、波动率、周期和数学类别
  • 61 种蜡烛图形态识别函数——目前最全面的形态库
  • C 语言级别的计算速度——在大型数据集上,比纯 Python 同类实现快 10–100 倍
  • 两种 API:函数 API(直接传入数组)和抽象 API(传入数组字典)
  • 原生支持 NumPy——所有输入和输出都是 NumPy 数组

安装

TA-Lib 需要先安装底层 C 库:

# macOS
brew install ta-lib
uv pip install TA-Lib numpy pandas

# Ubuntu/Debian
sudo apt-get install -y ta-lib
uv pip install TA-Lib numpy pandas

# From source (any platform)
wget https://github.com/ta-lib/ta-lib/releases/download/v0.6.4/ta-lib-0.6.4-src.tar.gz
tar -xzf ta-lib-0.6.4-src.tar.gz
cd ta-lib-0.6.4
./configure --prefix=/usr/local
make && sudo make install
uv pip install TA-Lib numpy pandas

如果未安装 C 库,import talib 会因 ImportError 而失败。本技能中的脚本包含回退逻辑,可在未安装 TA-Lib 的环境中使用。

何时使用 TA-Lib,何时使用 pandas-ta

标准TA-Libpandas-ta
速度经 C 优化,快 10–100 倍纯 Python,在大型数据上较慢
蜡烛图形态内置 61 种形态形态支持有限
安装需要 C 库仅需 pip install
API 风格NumPy 数组DataFrame .ta 访问器
指标数量150 多种130 多种
流式处理可更新单个值需要重新计算整个序列
依赖项C 库 + numpy仅需 pandas

在以下情况使用 TA-Lib:

  • 处理数百万根 K 线,或大规模运行回测
  • 需要蜡烛图形态识别(TA-Lib 在这方面无可匹敌)
  • 构建对延迟有要求的生产流水线
  • 需要周期指标(希尔伯特变换系列)

在以下情况使用 pandas-ta:

  • 希望方便地原生使用 DataFrame
  • 安装简便性很重要(无需依赖 C 库)
  • 需要 TA-Lib 中没有的指标(pandas-ta 还提供了一些额外指标)

快速入门

import numpy as np
import talib

# Create sample data
close = np.random.randn(100).cumsum() + 50
high = close + np.abs(np.random.randn(100))
low = close - np.abs(np.random.randn(100))
open_ = close + np.random.randn(100) * 0.5
volume = np.random.randint(1000, 10000, 100).astype(float)

# Function API — pass arrays directly
rsi = talib.RSI(close, timeperiod=14)
macd, signal, hist = talib.MACD(close, fastperiod=12, slowperiod=26, signalperiod=9)
upper, middle, lower = talib.BBANDS(close, timeperiod=20, nbdevup=2, nbdevdn=2)
atr = talib.ATR(high, low, close, timeperiod=14)

# Candlestick patterns — return +100 (bullish), -100 (bearish), or 0
doji = talib.CDLDOJI(open_, high, low, close)
hammer = talib.CDLHAMMER(open_, high, low, close)
engulfing = talib.CDLENGULFING(open_, high, low, close)

函数 API 与抽象 API

函数 API(推荐)

直接使用 NumPy 数组调用函数:

import talib

rsi = talib.RSI(close, timeperiod=14)
sma = talib.SMA(close, timeperiod=20)
upper, mid, lower = talib.BBANDS(close)
抽象 API

传入数组字典,并按名称获取结果:

from talib import abstract

inputs = {"open": open_, "high": high, "low": low, "close": close, "volume": volume}

# Call by function name
rsi = abstract.RSI(inputs, timeperiod=14)
macd = abstract.MACD(inputs)  # returns (macd, signal, hist)

抽象 API 适用于动态选择指标(例如,遍历指标名称列表)。

函数组

TA-Lib 将函数划分为以下类别:

重叠研究

叠加在价格图表上的移动平均线和包络指标。

sma = talib.SMA(close, timeperiod=20)
ema = talib.EMA(close, timeperiod=12)
upper, mid, lower = talib.BBANDS(close, timeperiod=20, nbdevup=2, nbdevdn=2)
sar = talib.SAR(high, low, acceleration=0.02, maximum=0.2)
mama, fama = talib.MAMA(close, fastlimit=0.5, slowlimit=0.05)
动量指标

振荡指标和趋势强度指标。

rsi = talib.RSI(close, timeperiod=14)
macd, signal, hist = talib.MACD(close, fastperiod=12, slowperiod=26, signalperiod=9)
slowk, slowd = talib.STOCH(high, low, close)
cci = talib.CCI(high, low, close, timeperiod=14)
willr = talib.WILLR(high, low, close, timeperiod=14)
adx = talib.ADX(high, low, close, timeperiod=14)
mfi = talib.MFI(high, low, close, volume, timeperiod=14)
成交量指标

基于成交量的分析函数。

obv = talib.OBV(close, volume)
ad = talib.AD(high, low, close, volume)
adosc = talib.ADOSC(high, low, close, volume, fastperiod=3, slowperiod=10)
波动率指标

衡量价格变动幅度的指标。

atr = talib.ATR(high, low, close, timeperiod=14)
natr = talib.NATR(high, low, close, timeperiod=14)
trange = talib.TRANGE(high, low, close)
形态识别(蜡烛图)

用于检测蜡烛图形态的 61 个函数。所有函数都返回整数数组:

  • +100 = 检测到看涨形态
  • -100 = 检测到看跌形态
  • 0 = 未检测到形态
# Single patterns
doji = talib.CDLDOJI(open_, high, low, close)
hammer = talib.CDLHAMMER(open_, high, low, close)
engulfing = talib.CDLENGULFING(open_, high, low, close)

# Scan all 61 patterns at once
candle_names = talib.get_function_groups()["Pattern Recognition"]
for name in candle_names:
    func = getattr(talib, name)
    result = func(open_, high, low, close)
    hits = np.nonzero(result)[0]
    if len(hits) > 0:
        print(f"{name}: {len(hits)} detections")

完整的 61 种形态列表及其可靠性评级和对加密货币的适用性,请参阅 references/candlestick_patterns.md。

数学变换与数学运算符

对数组进行数学函数运算(sin、cos、ln 等)和运算符运算(add、sub、mult、div)。直接使用的情况较少,但这些函数和运算符均可用。

加密货币注意事项

24/7 市场
  • 为传统市场设计、依赖开盘价与收盘价跳空的蜡烛图形态,在加密货币的连续交易市场中可能表现不同
  • 基于跳空的形态(早晨之星、黄昏之星)在没有交易时段跳空的情况下可靠性较低
  • 实体比例形态(十字星、锤头线、吞没形态)在任何时间周期中仍然适用
时间范围选择
  • 1m-5m:形态信号噪声较多;请结合成交量确认
  • 15m-1h:适合高市值代币的日内信号
  • 4h-1d:形态识别最可靠
  • 提示:较高的时间范围产生的形态信号更少,但更可靠
NaN 处理

TA-Lib 会在每个指标的初始回溯周期返回 NaN。请始终对此进行处理:

rsi = talib.RSI(close, timeperiod=14)
# First 14 values will be NaN
valid_rsi = rsi[~np.isnan(rsi)]
Solana 代币数据

将 TA-Lib 用于 Solana 代币 OHLCV 数据时:

  • 确保数组的数据类型为 float64——TA-Lib 要求使用此类型
  • 传入 TA-Lib 前,按时间戳升序排序
  • 计算指标前,处理低流动性代币数据中的间隔
# Convert to float64 for TA-Lib compatibility
close = df["close"].values.astype(np.float64)
high = df["high"].values.astype(np.float64)
low = df["low"].values.astype(np.float64)

与其他技能集成

与 pandas-ta 集成

安装后,pandas-ta 可将 TA-Lib 用作后端,通过 pandas-ta API 实现 C 语言级别的运行速度:

import pandas_ta as ta
# pandas-ta auto-detects TA-Lib and uses it for supported indicators
# Set explicitly:
ta.Imports["talib"] = True  # Force TA-Lib backend
df.ta.rsi(length=14)  # Uses TA-Lib under the hood if available
与 vectorbt 集成

vectorbt 集成了 TA-Lib,可实现快速回测:

import vectorbt as vbt

# Use TA-Lib indicators in vectorbt
rsi = vbt.talib("RSI").run(close, timeperiod=14)
entries = rsi.real_crossed_below(30)
exits = rsi.real_crossed_above(70)
与 Birdeye/DexScreener 数据集成

从 API 技能获取 OHLCV 数据,然后使用 TA-Lib 处理:

# After fetching OHLCV from birdeye-api or dexscreener-api
close = np.array(ohlcv_data["close"], dtype=np.float64)
rsi = talib.RSI(close, timeperiod=14)

列出可用函数

import talib

# All function groups
groups = talib.get_function_groups()
for group, funcs in groups.items():
    print(f"{group}: {len(funcs)} functions")

# All function names
all_funcs = talib.get_functions()
print(f"Total: {len(all_funcs)} functions")

# Info about a specific function
info = talib.abstract.Function("RSI").info
print(info["display_name"], info["group"])

文件

文件描述
references/function_reference.md按类别列出最实用的函数,并提供语法和参数
references/candlestick_patterns.md按类型分组的全部 61 种蜡烛图形态及其可靠性评级
scripts/compute_indicators.py使用 TA-Lib/回退方案对比计算常见指标
scripts/pattern_scanner.py扫描 OHLCV 数据中的全部 61 种蜡烛图形态

评论

支持 Markdown