ta-lib について
ta-libは、Pythonラッパーを備えたC製テクニカル分析ライブラリTA-Libを扱うスキルです。金融データ分析者や取引システム開発者向けに、NumPy配列から指標を計算し、ローソク足パターンを検出します。
主な機能
- 01150種類以上のテクニカル指標関数
- 0261種類のローソク足パターン検出
- 03NumPy配列向けのC計算
- 04関数APIと抽象API
- 05フォールバック付き指標スクリプト
活用シーン
- 01大規模なバックテストで指標を計算
- 02OHLCVデータからローソク足パターンを検出
- 03名前を指定して指標を動的に選択
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ agiprolabs/ claude-trading-skills --skill ta-libインストール後、Claude Code で/ta-libを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/candlestick_patterns.mdfunction_reference.mdscripts/compute_indicators.pypattern_scanner.py詳細
ta-lib — C 最適化テクニカル分析
TA-Lib(Technical Analysis Library)は、150 種類以上のテクニカル分析関数と 61 種類のローソク足パターン認識関数を提供する、Python ラッパー付きの C ライブラリです。パフォーマンスが重要なインジケーター計算における業界標準であり、pandas-ta や純粋な Python の代替ライブラリでは遅すぎる本番環境の取引システムで使用されています。
TA-Lib とは
TA-Lib は、金融市場データの分析用に C で開発されました。Python ラッパー(PyPI では TA-Lib、インポート名は talib)では、以下を利用できます。
- 150 種類以上のインジケーター関数:オーバーラップ、モメンタム、出来高、ボラティリティ、サイクル、数学の各カテゴリに対応
- 61 種類のローソク足パターン認識関数:利用可能なパターンライブラリの中で最も包括的
- C による高速計算:大規模なデータセットでは、純粋な Python による同等の処理より 10~100 倍高速
- 2 種類の 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-Lib | pandas-ta |
|---|---|---|
| 速度 | C 最適化により 10~100 倍高速 | 純粋な Python のため、大規模データでは低速 |
| ローソク足パターン | 61 種類の組み込みパターン | パターンのサポートは限定的 |
| インストール | C ライブラリが必要 | pip install のみ |
| API の形式 | NumPy 配列 | DataFrame の .ta アクセサー |
| インジケーター数 | 150 種類以上 | 130 種類以上 |
| ストリーミング | 単一値の更新が可能 | 系列全体を再計算 |
| 依存関係 | C ライブラリ + numpy | pandas のみ |
TA-Lib を使用する場合:
- 数百万本のバーを処理する場合、または大規模なバックテストを実行する場合
- ローソク足パターン認識が必要な場合(この分野では 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 など)と演算子(加算、減算、乗算、除算)です。直接使われることはほとんどありませんが、利用できます。
暗号資産市場での考慮事項
24 時間 365 日の市場
- 寄り付き・引けのギャップがある従来型市場向けに設計されたローソク足パターンは、連続取引市場である暗号資産市場では異なる動作をする場合があります
- ギャップを前提とするパターン(明けの明星、宵の明星)は、セッション間のギャップがないと信頼性が低くなります
- 実体の比率に基づくパターン(十字線、ハンマー、包み足)は、どの時間足でも引き続き有効です
時間枠の選択
- 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 トークンデータ
Solana トークンの OHLCV データで TA-Lib を使用する場合:
- 配列の dtype が
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 種類すべてのローソク足パターンをスキャン |