mcpField
T
twelvedata-api

twelvedata-api

github.com/adaptationioデータ・データベース48 回インストール
リポジトリ

twelvedata-api について

twelvedata-apiは、Twelve Data APIとPython SDKで金融市場データを取得するスキルです。価格、時系列、参照・ファンダメンタルデータ、テクニカル指標に加え、利用可能なリアルタイム配信を扱います。

主な機能

  1. 01リアルタイムの気配値と過去のOHLCV時系列
  2. 02株式、FX、暗号資産、ETF、指数のデータ
  3. 03ファンダメンタルと参照データのエンドポイント
  4. 04100種類以上のテクニカル指標
  5. 05複数シンボルの一括リクエスト
  6. 06WebSocketによる価格配信

活用シーン

  1. 01分析用の気配値や過去価格の取得
  2. 02証券間のファンダメンタル比較
  3. 03時系列データと組み合わせた指標計算
  4. 04リアルタイム価格更新の受信

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/adaptationio/skrillz --skill twelvedata-api

インストール後、Claude Code で/twelvedata-apiを入力して読み込まれたか確認します。

同梱ファイルreferences/ENDPOINTS.mdscripts/twelvedata_client.py

詳細

Twelve Data API 連携

株式、外国為替、暗号資産、ETF、指数、および100種類以上のテクニカル指標を提供する包括的な金融データ API です。優れた Python SDK にも対応しています。

クイックスタート

認証
# Environment variable (recommended)
export TWELVEDATA_API_KEY="your_api_key"

# Or in .env file
TWELVEDATA_API_KEY=your_api_key
基本的な使い方(Python)
import requests
import os

API_KEY = os.getenv("TWELVEDATA_API_KEY")
BASE_URL = "https://api.twelvedata.com"

def get_quote(symbol: str) -> dict:
    """Get real-time quote for a symbol."""
    response = requests.get(
        f"{BASE_URL}/quote",
        params={"symbol": symbol, "apikey": API_KEY}
    )
    return response.json()

# Example
quote = get_quote("AAPL")
print(f"AAPL: ${quote['close']} ({quote['percent_change']}%)")
公式 SDK の使用
from twelvedata import TDClient

td = TDClient(apikey="your_api_key")

# Get time series
ts = td.time_series(
    symbol="AAPL",
    interval="1day",
    outputsize=30
).as_pandas()

# Get quote
quote = td.quote(symbol="AAPL").as_json()

# Get with technical indicators
ts_with_indicators = td.time_series(
    symbol="AAPL",
    interval="1day",
    outputsize=50
).with_sma(time_period=20).with_rsi().as_pandas()

API エンドポイントリファレンス

コアデータ
エンドポイント説明クレジット
/quoteリアルタイムの気配値1
/price現在価格のみ1
/eod日末価格1
/time_series過去の OHLCV1
/exchange_rate通貨換算1
リファレンスデータ
エンドポイント説明クレジット
/symbol_search銘柄を検索1
/instrumentsすべての金融商品を一覧表示無料
/exchanges取引所を一覧表示無料
/instrument_type種類を一覧表示無料
/earliest_timestampデータ開始日無料
ファンダメンタルデータ
エンドポイント説明クレジット
/income_statement損益計算書100
/balance_sheet貸借対照表100
/cash_flowキャッシュフロー100
/earnings業績履歴100
/earnings_calendar今後の決算発表100
/dividends配当履歴1
/splits株式分割履歴1
/statistics主要統計100
/profile企業プロフィール100
テクニカル指標(100種類以上)

すべての指標は1クレジットで利用でき、time_series に含めることができます。

トレンド: SMA、EMA、WMA、DEMA、TEMA、KAMA、MAMA、T3、TRIMA、VWMA モメンタム: RSI、MACD、ストキャスティクス、Williams %R、ADX、CCI、MFI、ROC、AROON ボラティリティ: ボリンジャーバンド、ATR、ケルトナーチャネル、ドンチャン 出来高: OBV、AD、ADOSC、VWAP

レート制限

プラン呼び出し/分1日あたりWebSocket
無料8800トライアルのみ
Grow ($29)55-377無制限❌
Pro ($99)610-1597無制限✅
Enterprise ($329)2584+無制限✅

クレジットシステム:

  • 標準エンドポイント:銘柄あたり1クレジット
  • ファンダメンタルデータ:銘柄あたり100クレジット
  • バッチリクエスト:個別リクエストと同じコスト

よくあるタスク

タスク:Pandas で時系列データを取得する
from twelvedata import TDClient
import pandas as pd

td = TDClient(apikey=API_KEY)

def get_historical_data(symbol: str, days: int = 100) -> pd.DataFrame:
    """Get historical OHLCV data as DataFrame."""
    ts = td.time_series(
        symbol=symbol,
        interval="1day",
        outputsize=days
    )
    return ts.as_pandas()

# Example
df = get_historical_data("AAPL", 100)
print(df.head())
タスク:複数の指標を使ったテクニカル分析
def get_technical_analysis(symbol: str) -> pd.DataFrame:
    """Get price data with technical indicators."""
    ts = td.time_series(
        symbol=symbol,
        interval="1day",
        outputsize=100
    )

    # Chain indicators
    df = (ts
        .with_sma(time_period=20)
        .with_sma(time_period=50)
        .with_rsi(time_period=14)
        .with_macd()
        .with_bbands()
        .as_pandas()
    )

    return df

# Example
analysis = get_technical_analysis("AAPL")
タスク:複数の銘柄を取得する(バッチ)
def get_batch_quotes(symbols: list) -> dict:
    """Get quotes for multiple symbols efficiently."""
    symbol_str = ",".join(symbols)

    response = requests.get(
        f"{BASE_URL}/quote",
        params={
            "symbol": symbol_str,
            "apikey": API_KEY
        }
    )
    return response.json()

# Example: Up to 120 symbols per request
quotes = get_batch_quotes(["AAPL", "MSFT", "GOOGL", "AMZN"])
タスク:ファンダメンタルデータを取得する
def get_fundamentals(symbol: str) -> dict:
    """Get comprehensive fundamental data."""
    # Note: Each call costs 100 credits

    profile = requests.get(
        f"{BASE_URL}/profile",
        params={"symbol": symbol, "apikey": API_KEY}
    ).json()

    stats = requests.get(
        f"{BASE_URL}/statistics",
        params={"symbol": symbol, "apikey": API_KEY}
    ).json()

    return {
        "name": profile.get("name"),
        "sector": profile.get("sector"),
        "industry": profile.get("industry"),
        "market_cap": stats.get("statistics", {}).get("valuations_metrics", {}).get("market_capitalization"),
        "pe_ratio": stats.get("statistics", {}).get("valuations_metrics", {}).get("trailing_pe"),
        "dividend_yield": stats.get("statistics", {}).get("dividends_and_splits", {}).get("dividend_yield")
    }
タスク:外国為替レートを取得する
def get_forex_rate(from_currency: str, to_currency: str) -> dict:
    """Get currency exchange rate."""
    response = requests.get(
        f"{BASE_URL}/exchange_rate",
        params={
            "symbol": f"{from_currency}/{to_currency}",
            "apikey": API_KEY
        }
    )
    return response.json()

# Example
rate = get_forex_rate("USD", "EUR")
print(f"USD/EUR: {rate['rate']}")
タスク:暗号資産データを取得する
def get_crypto_price(symbol: str, exchange: str = "Binance") -> dict:
    """Get cryptocurrency price."""
    response = requests.get(
        f"{BASE_URL}/quote",
        params={
            "symbol": f"{symbol}/USD",
            "exchange": exchange,
            "apikey": API_KEY
        }
    )
    return response.json()

# Example
btc = get_crypto_price("BTC")
print(f"BTC: ${btc['close']}")
タスク:銘柄を検索する
def search_symbols(query: str, show_plan: bool = False) -> list:
    """Search for stock/crypto symbols."""
    params = {
        "symbol": query,
        "apikey": API_KEY
    }
    if show_plan:
        params["show_plan"] = "true"

    response = requests.get(f"{BASE_URL}/symbol_search", params=params)
    return response.json().get("data", [])

# Example
results = search_symbols("Apple")
for r in results[:5]:
    print(f"{r['symbol']}: {r['instrument_name']}")

WebSocket によるリアルタイムストリーミング

from twelvedata import TDClient

td = TDClient(apikey=API_KEY)

def on_event(event):
    """Handle real-time price updates."""
    print(f"{event['symbol']}: ${event['price']}")

# Create WebSocket (requires Pro plan)
ws = td.websocket(
    symbols=["AAPL", "MSFT", "GOOGL"],
    on_event=on_event
)

ws.connect()
ws.keep_alive()

エラー処理

def safe_api_call(endpoint: str, params: dict) -> dict:
    """Make API call with error handling."""
    params["apikey"] = API_KEY

    try:
        response = requests.get(f"{BASE_URL}/{endpoint}", params=params)
        data = response.json()

        # Check for API errors
        if "status" in data and data["status"] == "error":
            print(f"API Error: {data.get('message', 'Unknown error')}")
            return {}

        # Check remaining credits
        credits_used = response.headers.get("api-credits-used")
        credits_left = response.headers.get("api-credits-left")
        if credits_left:
            print(f"Credits remaining: {credits_left}")

        return data

    except Exception as e:
        print(f"Request error: {e}")
        return {}

無料機能とプレミアム機能

無料プランに含まれる機能
  • API 呼び出しは毎分8回、1日800回
  • 米国株、外国為替、暗号資産
  • 時系列データ(日末)
  • すべてのテクニカル指標
  • 基本的なリファレンスデータ
  • 日中足データの履歴は1~2年分
  • 日足データの履歴は30年以上分
プレミアムプランが必要な機能
  • より高いレート制限
  • 国際株(Grow 以上)
  • WebSocket ストリーミング(Pro 以上)
  • プレマーケット/アフターマーケットデータ(Pro 以上)
  • 取引時間の延長
  • 投資信託と ETF の内訳(Enterprise)
  • 1日あたりの制限なし

ベストプラクティス

  1. バッチリクエストを使う - 1回の呼び出しで最大120銘柄
  2. リファレンスデータをキャッシュする - 取引所や金融商品が変更されることはほとんどありません
  3. SDK の Pandas 出力を使う - データを簡単に操作できます
  4. 指標を連携させる - time_series に含めると、合計1クレジットです
  5. クレジットを確認する - レスポンスヘッダーを確認してください
  6. 適切な間隔を使う - 分析には1day、取引には1min

インストール

# Python SDK with all features
pip install twelvedata[matplotlib,plotly]

# Basic installation
pip install twelvedata

# For WebSocket
pip install websocket-client

関連スキル

  • finnhub-api - リアルタイムニュースに重点
  • alphavantage-api - 指標データの代替ソース
  • fmp-api - ファンダメンタル分析に重点

参考資料

コメント