mcpField
P
pinescript-to-python-translator

pinescript-to-python-translator

github.com/mphinance開発3296 回インストール2 日前に更新
リポジトリ

pinescript-to-python-translator について

pinescript-to-python-translatorは、TradingViewのPineScript戦略を、ヘッドレスバックテストや最適化向けのPythonコンポーネントに変換するスキルです。入力分類、インジケーターの変換、シグナルとOptuna探索空間を含む出力構成を扱います。

主な機能

  1. 01シグナル・リスク・表示用入力の分類
  2. 02Optuna向けパラメーター範囲の抽出
  3. 03テクニカル指標をPythonへ変換
  4. 04エントリーと決済条件のベクトル化
  5. 05リペイントとゼロ除算リスクの確認

活用シーン

  1. 01TradingViewのバックテストをPythonへ移行
  2. 02ウォークフォワード分析向けに戦略を準備
  3. 03Optunaのハイパーパラメーター探索空間を作成
  4. 04変換したシグナルのリペイントリスクを監査

インストール

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

$npx skills add https://github.com/mphinance/alpha-skills --skill pinescript-to-python-translator

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

同梱ファイルREADME.md

詳細

🌲 PineScript から Python へのトランスレーター

このスキルは、生の TradingView PineScript ファイル (.pine) を受け取り、それを Python ネイティブのコンポーネントへ厳密に分解し、ベクトル化や Optuna のようなツールを使って最適化できるようにするために設計されています。

このスキルを使う場面

TradingView エコシステムからヘッドレスな Python 環境へバックテストを移行したいときに、このスキルを使います。これは、TradingView では扱えないマルチフォールドのウォークフォワード分析 (WFA) やモンテカルロシミュレーションを実行するうえで極めて重要です。

ワークフロー

  1. 分解と分類 (IR の構築)

    • .pine スクリプトを解析して、input()、input.int()、input.float()、input.bool() を識別します。
    • パラメータを次の 3 つのバケットに分類します。
      • シグナル: エントリーを決定するパラメータ (例: length、crossover_threshold)。
      • リスク: エグジットを決定するパラメータ (例: stop_ticks、trail_offset)。
      • 表示: プロットや UI にのみ使用されるパラメータ (これらは破棄します)。
  2. 境界の抽出

    • すべてのシグナルおよびリスクのパラメータについて、指定があれば minval、maxval、step を抽出します。
    • これらを Optuna の試行サジェスチョン (例: trial.suggest_int('length', 10, 50)) の形式に整えます。
  3. ロジックの変換

    • PineScript のテクニカル分析関数 (ta.sma、ta.ema、ta.rsi) を、対応する pandas-ta または numpy の同等品へ変換します。
    • エントリーとエグジットの条件をベクトル化します。パス依存性が厳密に必要な場合を除き、行に対する標準的な for ループは使わないでください。可能な限り np.where と .shift() を使用してください。
  4. 堅牢化と監査

    • リペイントリスク: 現在 の未確定バーのデータに依存する箇所がないか、変換後のコードを走査します。シグナル生成には .shift(1) の使用を強制します。
    • ゼロ除算: すべての分母を np.maximum(denominator, 1e-8) でガードし、最適化中に NaN が爆発的に増えるのを防ぎます。

出力形式

出力は、次の内容を含む単一の Python ファイルであるべきです。

  1. パラメータの辞書に基づいてすべてのインジケーターを構築する extract_features(df, params) 関数。
  2. signal 列 (1 はロング、-1 はショート、0 はフラット) を作成する generate_signals(df) 関数。
  3. ハイパーパラメータの探索空間の辞書を返す get_optuna_space(trial) 関数。

コメント