mcpField
C
charting

charting

github.com/starchild-ai-agentデータ・データベース304.4k 回インストール6 日前に更新
リポジトリ

charting について

chartingは、価格推移、テクニカル指標、資産比較を確認するための市場データ可視化スキルです。単体で実行できるPythonスクリプトとテンプレートを使い、暗号資産、株式、為替、コモディティのデータを取得してチャートを作成します。

主な機能

  1. 01単体実行できるPythonチャートスクリプト
  2. 02ローソク足と指標のテンプレート
  3. 03資産比較チャート
  4. 04期間に応じた間隔選択
  5. 05ダークテーマのPNG出力

活用シーン

  1. 01暗号資産の価格推移を確認
  2. 02トレンドとモメンタム指標を分析
  3. 03複数資産のパフォーマンスを比較

インストール

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

$npx skills add https://github.com/starchild-ai-agent/official-skills --skill charting

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

scripts/
chart_comparison_template.py
chart_stock_template.py
chart_template.py
chart_with_indicators.py

詳細

チャート作成

⚠️ 重要: データツールを呼び出さないでください

チャートを作成する際は、price_chart、get_coin_ohlc_range_by_id、twelvedata_time_series、またはその他の市場データツールを絶対に呼び出さないでください。チャートスクリプトは内部的にデータを取得します。これらのツールを呼び出すと、78KB 以上の不要なデータでコンテキストが溢れてしまいます。

ワークフロー (4 ステップ):

  1. skills/charting/scripts/ からテンプレートを読み込む
  2. スクリプトを scripts/ に書き込む
  3. bash でスクリプトを実行する
  4. 出力された PNG に対して read_file を呼び出し、Markdown の画像構文を使って表示する: ![Chart description](output/filename.png)

TradingView 品質のローソク足チャートを生成します。ダークテーマ、クリーンなレイアウト、プロフェッショナルな配色です。すべてのチャートはスタンドアロンの Python スクリプトであり、内部インポートはありません。

追加ルール:

  • チャートスクリプトはワークスペースで実行され、core からインポートすることはできません。proxied_get() ではなく、requests ライブラリを直接使用してください。
  • テンプレートにはプロキシの自動設定が含まれています。PROXY_HOST 環境変数が存在する場合、スクリプトは HTTP_PROXY/HTTPS_PROXY を自動的に設定します。

ツール: write_file、bash、read_file

どのチャートをいつ使うか

シンプルな価格推移 → インジケーターなしのローソク足。「BTC の今月の値動きを見せて」に適しています。 トレンド分析 → EMA/SMA オーバーレイを追加。「ETH は上昇トレンドにある?」に適しています。 モメンタムの確認 → RSI または MACD をサブプロットとして追加。「SOL は買われすぎ?」に適しています。 完全なテクニカルビュー → ローソク足 + ボリンジャーバンド + RSI + MACD。「BTC の全体像を見せて」に適しています。 出来高分析 → market_chart エンドポイントからの別途取得が必要です (OHLC エンドポイントには出来高がありません)。 資産比較 → 2 つの資産を比較する折れ線グラフ (BTC 対 Gold、ETH 対 S&P500 など)。正規化またはパーセンテージベースの比較には比較テンプレートを使用してください。

チャートの作成方法

skills/charting/scripts/ 内のテンプレートスクリプトを読み込んでカスタマイズします:

  • chart_template.py — TradingView スタイルのベースラインローソク足チャート (CoinGecko 経由の暗号資産)
  • chart_with_indicators.py — RSI、MACD、ボリンジャーバンド、EMA/SMA の例 (CoinGecko 経由の暗号資産)
  • chart_stock_template.py — Twelve Data API を使用した株式/為替チャート
  • chart_comparison_template.py — 2 つの資産を比較 (暗号資産対コモディティ、株式対暗号資産など)

該当するテンプレートを scripts/ にコピーし、設定セクション (コイン、日数、インジケーター) をカスタマイズして実行します。

テンプレートは、リトライロジックとエラー処理を備えたすべてのデータ取得を内部的に処理します。

注: これらのテンプレートは市場データの可視化 (価格チャート、インジケーター) 用です。バックテスト結果のチャート (エクイティカーブ、ドローダウン、パフォーマンスダッシュボード) については、バックテストスクリプトに直接 matplotlib のチャート作成を追加してください。データはすでに存在するため、再取得したり別ファイルを作成したりする必要はありません。

TradingView カラーパレット

要素色Hex
上昇ローソク足ティール#26a69a
下降ローソク足赤#ef5350
背景ダーク#131722
グリッド控えめな点線#1e222d
テキスト / 軸ライトグレー#d1d4dc
MA ライン青 / オレンジ#2196f3 / #ff9800
RSI ライン紫#b39ddb
MACD ライン青#2196f3
シグナルラインオレンジ#ff9800

ユーザーが要求しない限り、このパレットから逸脱しないでください。

データソース API

CoinGecko (暗号資産のみ)

エンドポイント: https://pro-api.coingecko.com/api/v3/coins/{coin_id}/ohlc/range 認証: ヘッダー x-cg-pro-api-key: {COINGECKO_API_KEY} 用途: BTC、ETH、SOL、およびすべての暗号資産

例:

url = f"https://pro-api.coingecko.com/api/v3/coins/{COIN_ID}/ohlc/range"
params = {"vs_currency": "usd", "from": from_ts, "to": now, "interval": "daily"}
headers = {"x-cg-pro-api-key": os.getenv("COINGECKO_API_KEY")}
resp = requests.get(url, params=params, headers=headers)
raw = resp.json()  # [[timestamp_ms, open, high, low, close], ...]
Twelve Data(株式、為替、コモディティ)

エンドポイント: https://api.twelvedata.com/time_series 認証: クエリパラメータ apikey={TWELVEDATA_API_KEY} 用途: 株式(AAPL、MSFT)、為替(EUR/USD)、コモディティ(金は XAU/USD)

一般的なシンボル:

  • 株式: AAPL、MSFT、GOOGL、TSLA、SPY
  • 為替: EUR/USD、GBP/JPY、USD/CHF
  • コモディティ: XAU/USD(金)、XAG/USD(銀)、CL/USD(原油)

インターバル: 1min、5min、15min、30min、1h、4h、1day、1week、1month

例:

url = "https://api.twelvedata.com/time_series"
params = {
    "symbol": "XAU/USD",  # Gold spot price
    "interval": "1day",
    "outputsize": 90,  # Number of candles
    "apikey": os.getenv("TWELVEDATA_API_KEY")
}
resp = requests.get(url, params=params)
data = resp.json()
# data["values"] = [{"datetime": "2024-01-01", "open": "2050.00", "high": "2060.00", ...}, ...]

重要: Twelve Data はデータを逆時系列順(新しい順)で返します。DataFrame を作成する前に必ずリストを反転してください:

values = data["values"][::-1]  # Reverse to oldest-first

インターバル選択戦略

テンプレートは、視覚的な品質を維持しながらデータ量を最小限に抑えるために、最適なインターバルを自動選択するようになりました:

期間範囲自動選択されるインターバル理由
31日以下時間足短期分析向けの高い粒度
32~365日日足十分な詳細と、より少ないデータ量
365日超日足長期トレンドには日足が最適

オーバーライド: 自動選択を上書きするには、設定で INTERVAL = "daily" または INTERVAL = "hourly" を設定します。

主な注意点

  • savefig の facecolor: savefig で facecolor='#131722' と edgecolor='#131722' を必ず設定してください。設定しないと、保存された PNG は白背景に戻ってしまいます。
  • タイトルの余白: タイトルの先頭に \n を付けて、上端からの余白を追加します。
  • returnfig=True: プロット後のカスタマイズ(価格のフォーマット、注釈)が必要な場合に使用します。これを使用する場合は、fig.savefig() を手動で呼び出してください — savefig を mpf.plot() に渡さないでください。
  • OHLC に出来高はない: CoinGecko の OHLC エンドポイントは [timestamp_ms, open, high, low, close] のみを返します。volume=False を使用するか、出来高は coin_chart エンドポイントから別途取得してください。
  • パネル比率: インジケーターのサブプロットを追加する際は panel_ratios を設定します。例えば、ローソク足 + 出来高 + インジケーター1つの場合は (4, 1, 2)、インジケーター2つの場合は (5, 1, 2, 2) です。
  • 図のサイズ: デフォルトは (14, 8) です。サブプロットを追加する際は (14, 10) または (14, 12) に増やしてください。

ルール

  • パスはワークスペースからの相対パスです。 workspace/scripts/foo.py ではなく、scripts/foo.py に書き込んでください。bash の CWD はすでにワークスペースです。
  • 常に output/ ディレクトリに保存してください。 os.makedirs("output", exist_ok=True) を使用します。
  • 常に bash("python3 scripts/<name>.py") でスクリプトを実行し、動作を確認してください。
  • 常に生成された PNG に対して read_file を呼び出し、その後 Markdown の画像構文で表示してください: ![Chart](output/filename.png)
  • スクリプトはスタンドアロンでなければなりません。 requests + os.getenv() を使用してください。内部インポートや dotenv は使用しないでください。
  • 重要: チャートスクリプトでは proxied_get() を使用しないでください。 チャートスクリプトはスタンドアロンでワークスペース内で実行されるため、core.http_client からインポートできません。常に requests.get() と requests.post() を直接使用してください。これは、これらのスクリプトがメインの Star Child プロセスの外部で実行されるため、PLATFORM.md のプロキシルールの例外となります。テンプレートは正しいパターンを示しています。
  • 環境変数は継承されます。 os.getenv("COINGECKO_API_KEY") は直接動作します。
  • ユーザーがライトテーマを要求しない限り、デフォルトはダークテーマです。
  • ファイル名はチャートを説明するものにしてください。 例: btc_30d_candles.png、eth_7d_rsi_macd.png。
  • データソース: 暗号資産(BTC、ETH など)には CoinGecko API を使用してください。株式、為替、コモディティ(AAPL、EUR/USD、金は XAU/USD)には Twelve Data API を使用してください。API を混在させないでください — スクリプトは1つのデータソースに集中させてください。
  • 何を測定しているかを考えてください: チャートを作成する前に、自問してください:「ユーザーはどのような問いに答えようとしているのか?」正規化されたチャート(すべて100から開始)は相対的なトレンドを示しますが、実際の上昇幅を隠してしまいます。ユーザーが「どちらがより上昇したか」を知りたい場合や投資パフォーマンスを比較している場合は、見た目が似た線ではなく、実際の倍率(例: 50倍 vs 10倍)が必要です。

トラブルシューティング

401 Unauthorized エラー

テンプレートは PROXY_HOST/PROXY_PORT 環境変数からプロキシを自動構成します。401 エラーが発生する場合:

環境を確認:

bash("env | grep -E 'PROXY|REQUESTS_CA'")

想定される変数:

  • PROXY_HOST / PROXY_PORT - プロキシアドレス (テンプレートはこれらを使用して HTTP_PROXY/HTTPS_PROXY を設定します)
  • REQUESTS_CA_BUNDLE - SSL 用のプロキシ CA 証明書
  • COINGECKO_API_KEY / TWELVEDATA_API_KEY - プロキシ環境では偽の値でも構いません

変数が存在しない場合、これはスクリプトの問題ではなく環境構成の問題です。

コメント