PineForge Codegen
公式ローカルMCPサーバー:AIがPineScript v6を記述し、バンドルされたエンジンがC++にトランスパイルしてBinanceデータでバックテストを実行 — APIキー不要、完全ローカル。
PineForge Codegen MCPで何ができますか?
- Pine Script v6 を C++ にトランスパイル —
transpile_pineを使用して、バックテストを実行せずに Pine Script v6 のストラテジーを C++ 翻訳ユニットに変換します。 - Pine ストラテジーを OHLCV データに対してバックテスト —
backtest_pineを使用して、ソース、CSV パス、およびオプションの input/override/runtime パラメータを指定し、単一の決定論的バックテストを実行します。 - 1回の実行でストラテジーパラメータをスイープ —
backtest_pine_gridを使用して、単一の CSV に対してinputs×overridesのすべての組み合わせをテストし、ランキングとオプションの並行処理を提供します。 - バックテスト用の Binance OHLCV データを取得 —
fetch_binance_ohlcvを介してスポットまたは USDT 無期限先物の klines を取得し、自動ページネーションでバックテスト対応の CSV を書き込みます。 - 利用可能な Binance シンボルを検出 — マーケットデータを取得する前に、
binance_symbolsを使用して取引可能なシンボルを一覧表示またはフィルタリングします。 - エンジンパラメータと Pine のカバレッジを検査 —
list_engine_paramsをクエリして受け入れ可能なすべての override と runtime ノブを確認するか、check_pine_featureとget_coverage_topicを使用して Pine 言語のサポートを検証します。
ドキュメント
@pineforge/backtest-mcp
自己完結型の標準入出力 MCP サーバー: AI エージェントが PineScript v6 を作成し、同梱の pineforge-release イメージがそれを C++ にトランスパイルし、Binance の市場データに対してバックテストを実行します — すべて単一のコンテナ内で、インプロセスで行われます。完全にローカル — イメージには pineforge-codegen トランスパイラが同梱されているため、Pine → C++ → バックテストがホストの Docker デーモンなしで実行されます。API キー不要、データは外部に一切送信されません。

ツール
| 名前 | 実行環境 | 目的 |
|---|---|---|
transpile_pine | インプロセス | Pine v6 → C++ 翻訳単位 (トランスパイルのみ) |
list_engine_params | ローカル (I/O なし) | バックテストが受け付けるすべての overrides と runtime の設定項目のカタログ |
backtest_pine | インプロセス | OHLCV CSV に対する Pine ソースの単一バックテスト |
backtest_pine_grid | インプロセス | 1 回のコンパイルを再利用した inputs × overrides の直積スイープ |
fetch_binance_ohlcv | Binance 公開 API | Binance 現物または USDT 無期限ローソク足からバックテスト用 CSV を作成 |
binance_symbols | Binance 公開 API | Binance シンボルの一覧 / フィルタリング (5 分間のインプロセスキャッシュ) |
list_coverage_topics | ローカル (I/O なし) | すべての Pine v6 カバレッジトピックと 1 行のステータス + 概要 |
check_pine_feature | ローカル (I/O なし) | Pine の識別子/名前空間が PineForge でサポートされているかどうかの確認 |
get_coverage_topic | ローカル (I/O なし) | 1 つのカバレッジトピックの詳細とサポート/非サポート機能リスト |
engine_info | ローカル (I/O なし) | 同梱エンジンのレポート: モード、組み込みフラグ、バージョン |
インストール
標準入出力経由で自己完結型コンテナとして実行 — エンジン同梱、インプロセス、ホスト Docker デーモン不要、API キー不要。サーバーが CSV を読み書きできるように、作業ディレクトリを /work にマウントします:
docker run --rm -i -v "$PWD:/work" ghcr.io/pineforge-4pass/pineforge-backtest-mcp:latest
必要なのは Docker と、Binance 取得ツール用のアウトバウンドネットワークのみです。 以下のように MCP クライアントに接続します。
ホスト型 (インストール不要) の代替手段
Docker も API キーも不要で、最速で試したいですか?Streamable HTTP エンドポイントを任意の MCP クライアントに貼り付けてください:
https://mcp.pineforge.dev/mcp
このリポジトリとのトレードオフ: ホスト型サーバーは従量制 (backtest_pine の IP ごとの週間クォータ + Cloudflare エッジレート制限) で、固定された封印済みの暗号データレイク (Binance 現物 + USDT 無期限) に対して実行されます。このローカルリポジトリは従量制ではなく、オフラインで実行でき、独自の CSV を持ち込んでグリッドスイープを実行できます。リポジトリ: pineforge-mcp-public。
クライアント設定
ディレクトリを /work にマウントします。fetch_binance_ohlcv / backtest_pine はその下のパスを指すようにします。(-i は必須です。-t は絶対に追加しないでください — TTY は標準入出力の JSON-RPC ストリームを破損させます。)
Claude Desktop / Cursor / 汎用 JSON
{
"mcpServers": {
"pineforge-backtest": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-v", "${workspaceFolder}:/work",
"ghcr.io/pineforge-4pass/pineforge-backtest-mcp:latest"
]
}
}
}
(Cursor の場合: 設定 → MCP → 新しい MCP サーバー → 上記を貼り付け。)
Claude Code CLI
claude mcp add pineforge-backtest \
-- docker run --rm -i -v "$PWD:/work" ghcr.io/pineforge-4pass/pineforge-backtest-mcp:latest
AI エージェント向け — MCP 経由での使用
これが埋める機能ギャップ。 言語モデルは、PineScript v6 戦略について推論するだけでは正確にバックテストできません。PineScript の系列セマンティクス、バー内約定順序、先読みルール、strategy.* の注文/ポジションロジックは近似からは再現できないため、モデルが頭の中でバックテストをシミュレートしたり、Python (backtrader/vectorbt) で手動で作成したりすると、トレードと損益を幻覚し、TradingView との同等性を保証できません。PineForge は代わりに実際の決定論的 C++ エンジンを実行し、246 のリファレンス戦略のうち 245 で厳密な TradingView 同等性 (エンジンバグ 0)、246 戦略コーパス全体で約 375k の検証済みトレード で検証されています (方法論と検証、2026-06-03 時点、エンジン f805611)。一致しない 1 つは、エンジンのバグではなく、正確に 1 倍の証拠金境界での TradingView 側のブローカーの非決定性が文書化されたものです。
PineScript バックテストは計算された外部データであり、安定した知識ではありません — ユーザーの戦略ソースと OHLCV に依存し、再現可能でなければなりません。これは想起タスクではなく、ツール呼び出しです。
これらのツールが適切な場合。 backtest_pine (またはパラメータースイープ用の backtest_pine_grid) は、ユーザーが PineScript v6 戦略を提供し、それをバックテスト、評価、収益性の確認、トレード数のカウント、損益の計算、または指定された OHLCV での TradingView 結果の再現を希望する場合をカバーします。transpile_pine は Pine → C++ 変換のみをカバーします。fetch_binance_ohlcv は、ユーザーがシンボル/時間枠を指定したがデータファイルを提供していない場合をカバーします。これらのツールは、戦略の概念的な説明、Pine 構文の編集、または取引や財務のアドバイスを提供するためのものではありません。
正直な限界。 オフライン、PineScript v6、Docker が必要。バックテストは戦略の過去の振る舞いを測定するものであり、将来のリターンの予測や投資アドバイスではありません。単純または近似されたバックテストは、しばしば利益を過大評価します (モデル化されていないスリッページと手数料、終値約定の仮定、先読みバイアス)。ここでの価値は、ユーザーが資本をリスクにさらす前に戦略を検証できるように、決定論的で同等性が検証された実行を提供することです。
list_engine_params — 設定項目の発見
backtest_pine / backtest_pine_grid が受け付けるすべてのキーの無料、ローカル、ゼロ I/O のカタログ。2 つのグループに分かれています:
strategy_overrides— ランタイムがPINEFORGE_OVERRIDES経由で読み取る 9 つのstrategy(...)ヘッダーフィールド:initial_capital、pyramiding、slippage、commission_value、commission_type(percent/cash_per_order/cash_per_contract)、default_qty_value、default_qty_type(fixed/percent_of_equity/cash)、process_orders_on_close、close_entries_rule(ANY/FIFO)。runtime_args—run_backtest_fullへの引数 (strategy() ヘッダーの一部ではない):input_tf、script_tf、bar_magnifier、magnifier_samples、magnifier_dist(uniform/cosine/triangle/endpoints/front_loaded/back_loaded)。
各エントリは {key, type, enum?, description} です。backtest_pine リクエストを作成する前に、まずこれを呼び出してエンジンが何を受け付けるかを学習してください。
backtest_pine の例
{
"source": "//@version=6\nstrategy(\"sma cross\")\n...",
"ohlcv_csv_path": "./btcusdt_15m_7d.csv",
// Optional: override Pine input.*() values without touching the source.
// Keys = the second arg of input.*(...) (e.g. "Fast Length").
"inputs": { "Fast Length": 8, "Slow Length": 21 },
// Optional: override strategy(...) header fields. Each key is typed —
// call list_engine_params for the catalog.
"overrides": {
"initial_capital": 100000,
"default_qty_type": "percent_of_equity",
"default_qty_value": 10,
"commission_type": "percent",
"commission_value": 0.04,
"slippage": 2,
"pyramiding": 0,
"process_orders_on_close": true,
"close_entries_rule": "ANY"
},
// Optional: engine runtime args (NOT strategy() header). Use script_tf
// to aggregate the input CSV into a coarser strategy timeframe — the
// engine REJECTS script_tf finer than input_tf with a structured error
// ({"engine":"pineforge","error":"..."}, exit code 1).
"runtime": {
"input_tf": "15",
"script_tf": "60",
"bar_magnifier": true,
"magnifier_samples": 8,
"magnifier_dist": "endpoints"
}
}
inputs は PINEFORGE_INPUTS 環境変数としてエンジンに転送され、overrides は PINEFORGE_OVERRIDES として、各 runtime フィールドは個別の PINEFORGE_INPUT_TF / PINEFORGE_SCRIPT_TF / PINEFORGE_BAR_MAGNIFIER / PINEFORGE_MAGNIFIER_SAMPLES / PINEFORGE_MAGNIFIER_DIST 環境変数として転送されます。空/未設定 → strategy.pine からのデフォルト値。input_tf は最初の 2 つの CSV 行の間隔から自動検出されます。
スタンドアロンの pineforge-release Docker イメージと同じ JSON スキーマを返します:
{
"engine": "pineforge",
"summary": { "total_trades": 49, "net_pnl": -190.85, ... },
"applied_inputs": { "Fast Length": "8", "Slow Length": "21" },
"applied_overrides": { "default_qty_value": "5" },
"trades": [ ... ],
"elapsed_seconds": 0.0042,
"_meta": { "strategy_cpp_bytes": 5079, "image": "ghcr.io/.../pineforge-release:latest" }
}
backtest_pine_grid — パラメータースイープ
Pine ソースを1 回 (ローカル、コンテナ内) トランスパイルし、同じコンパイル済みバイナリを inputs × overrides の直積に対して実行します。ランク付けされたリストと best の下の最上位エントリを返します。
{
"source": "//@version=6\nstrategy(\"macd\")\n...",
"ohlcv_csv_path": "./btcusdt_15m_7d.csv",
// Each axis is {key: list-of-values}. All combinations are tried.
"inputs": {
"Fast Length": [8, 12, 19],
"Slow Length": [21, 26, 39]
},
"overrides": {
"default_qty_value": [1, 5],
"commission_value": [0.04]
},
// Optional knobs:
"fixed_inputs": { "Source": "close" }, // applied to every combo
"fixed_overrides": {}, // typed strategy() overrides
"runtime": { "input_tf": "15", // engine runtime args, fixed
"script_tf": "60" }, // across the sweep
"max_combinations": 64, // hard cap
"concurrency": 2, // parallel docker runs
"include_trades": false, // omit per-trade lists
"sort_by": "net_pnl" // ranking metric
}
fetch_binance_ohlcv — 市場データの取得
Binance の公開エンドポイントからバックテスト用 CSV (ヘッダー timestamp,open,high,low,close,volume、タイムスタンプ = UNIX ミリ秒 UTC での始値時刻) を作成します。認証不要。1000 本を超えるリクエストは自動的にページ分割されます。出力パスは ohlcv_csv_path と同じ cwd スコープの対象です (PINEFORGE_ALLOW_ANYWHERE=1 で緩和)。
{
"symbol": "BTCUSDT",
"interval": "15m", // 1s, 1m, 3m, 5m, 15m, 30m, 1h, 2h, 4h, 6h, 8h, 12h, 1d, 3d, 1w, 1M
"market": "spot", // or "usdt_perp" for USDT-margined perpetual futures
"limit": 672, // total bars; > 1000 paginates
"output_path": "./btcusdt_15m_7d.csv"
// Optional: "start_time" / "end_time" in UNIX ms UTC.
}
binance_symbols — シンボルの発見 / 検証
OHLCV 取得のために Binance 公開 API で利用可能なシンボルのリストを返します。5 分間インプロセスでキャッシュされます。fetch_binance_ohlcv を呼び出す前にシンボルを検証するために使用します。
{
"market": "usdt_perp",
"query": "BTC", // case-insensitive substring match
"quote_asset": "USDT",
"status": "TRADING",
"contract_type": "PERPETUAL", // futures-only filter
"limit": 50
}
ファイルシステムのスコープ
デフォルトでは、OHLCV パスは MCP サーバープロセスの現在の作業ディレクトリ内にある必要があります。以下で上書きします:
export PINEFORGE_ALLOW_ANYWHERE=1
その他の環境変数
| 変数 | デフォルト | 目的 |
|---|---|---|
PINEFORGE_IMAGE | ghcr.io/pineforge-4pass/pineforge-release:latest | トランスパイル + バックテストに使用されるイメージ (エンジンランタイム + 同梱コード生成) |
PINEFORGE_ALLOW_ANYWHERE | 0 | cwd 外の OHLCV パスを許可 |
PINEFORGE_DOCKER_TIMEOUT_MS | 120000 | docker pull / docker run の強制終了 |