PineForge Codegen
官方本地 MCP 伺服器:AI 撰寫 PineScript v6,內建引擎編譯為 C++ 並針對 Binance 資料進行回測 — 無需 API 金鑰,完全本地運作。
你可以用 Pine Forge Codegen MCP 做什麼?
- Transpile PineScript v6 to C++ — 將 Pine v6 策略轉換為 C++ 翻譯單元,使用
transpile_pine以檢查生成的程式碼。 - Backtest a Pine strategy against OHLCV data — 使用
backtest_pine執行單一確定性回測,提供原始碼、CSV 路徑、可選的inputs、overrides和runtime參數。 - Sweep strategy parameters in one run — 使用
backtest_pine_grid測試inputs×overrides的所有組合,針對一個 CSV 進行測試,並重複使用單次編譯。 - Fetch Binance OHLCV data as a backtest-ready CSV — 使用
fetch_binance_ohlcv拉取現貨或 USDT 永續合約的 K 線資料,並將其寫入本地檔案以供立即使用。 - Discover available Binance symbols — 在獲取市場資料之前,使用
binance_symbols驗證或篩選可交易標的。 - Inspect engine parameters and Pine coverage — 透過
list_engine_params列出所有可接受的回測參數,並使用check_pine_feature或get_coverage_topic檢查 Pine v6 功能支援。
文件
@pineforge/codegen-mcp
自給自足的 stdio MCP 伺服器:AI 代理撰寫 PineScript v6,而內建的 pineforge-release 映像檔將其轉譯為 C++,並根據幣安市場資料進行回測——全部在一個容器內、同一個處理程序中完成。完全本地化——映像檔內建了 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 | 處理程序內 | 重複使用一次編譯結果,對 inputs × overrides 進行笛卡爾掃描 |
fetch_binance_ohlcv | 幣安公開 API | 從幣安現貨或 USDT 永續合約 K 線寫入可供回測的 CSV |
binance_symbols | 幣安公開 API | 列出 / 篩選幣安交易對(5 分鐘處理程序內快取) |
list_coverage_topics | 本地(無 I/O) | 每個 Pine v6 涵蓋主題,附帶一行狀態 + 摘要 |
check_pine_feature | 本地(無 I/O) | 查詢某個 Pine 識別字/命名空間在 PineForge 中是否受支援 |
get_coverage_topic | 本地(無 I/O) | 單一涵蓋主題的完整詳細資訊 + 受支援/不受支援的功能清單 |
engine_info | 本地(無 I/O) | 回報內建引擎:模式、內建旗標、版本 |
安裝
以自給自足的容器透過 stdio 執行——引擎內建、處理程序內、無需主機 Docker 守護程序、無需 API 金鑰。掛載一個工作目錄到 /work,以便伺服器能讀寫您的 CSV:
docker run --rm -i -v "$PWD:/work" ghcr.io/pineforge-4pass/pineforge-codegen-mcp:latest
唯一需求:Docker,以及供幣安擷取工具使用的對外網路。 將其連接到您下方的 MCP 客戶端。
託管(免安裝)替代方案
想以最快速度試用,無需 Docker 也無需 API 金鑰嗎?將 Streamable HTTP 端點貼到任何 MCP 客戶端:
https://mcp.pineforge.dev/mcp
與此儲存庫的取捨:託管伺服器是計量的(backtest_pine 上的每 IP 每週配額 + Cloudflare 邊緣速率限制),並針對固定的、密封的加密資料湖(幣安現貨 + USDT 永續合約)執行。此本地儲存庫則不計量、可離線執行,並讓您能自備 CSV 及執行網格掃描。儲存庫:pineforge-mcp-public。
客戶端設定
將目錄掛載到 /work;將 fetch_binance_ohlcv / backtest_pine 指向其下的路徑。(-i 為必要項;切勿添加 -t——TTY 會損壞 stdio JSON-RPC 串流。)
Claude Desktop / Cursor / 通用 JSON
{
"mcpServers": {
"pineforge-codegen": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-v", "${workspaceFolder}:/work",
"ghcr.io/pineforge-4pass/pineforge-codegen-mcp:latest"
]
}
}
}
(在 Cursor 中:設定 → MCP → 新增 MCP 伺服器 → 貼上上述內容。)
Claude Code CLI
claude mcp add pineforge-codegen \
-- docker run --rm -i -v "$PWD:/work" ghcr.io/pineforge-4pass/pineforge-codegen-mcp:latest
適用於 AI 代理——透過 MCP 使用
此功能填補的能力缺口。 語言模型無法透過推理來準確回測 PineScript v6 策略。PineScript 的序列語義、K 線內成交順序、前瞻規則以及 strategy.* 訂單/持倉邏輯無法透過近似模擬重現,因此,若模型在腦中模擬回測——或在 Python(backtrader/vectorbt)中手動編寫回測——將會產生幻覺交易和損益,且無法保證與 TradingView 的一致性。PineForge 改為執行實際的確定性 C++ 引擎,並在 246 個參考策略中的 245 個上經過嚴格的 TradingView 一致性驗證(0 個引擎錯誤),整個 246 策略語料庫共包含約 37.5 萬筆已驗證交易(方法論與驗證,截至 2026-06-03,引擎 f805611)。唯一一個不匹配的情況是已記錄的 TradingView 端經紀商在恰好 1 倍權益保證金邊界上的非確定性,並非引擎錯誤。
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——探索參數
免費、本地、零 I/O 的目錄,收錄 backtest_pine / backtest_pine_grid 接受的所有金鑰,分為兩組:
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 會根據 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 原始碼一次轉譯(本地、容器內),然後針對 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——擷取市場資料
從幣安的公開端點寫入可供回測的 CSV(標頭為 timestamp,open,high,low,close,volume,時間戳 = 以 UNIX 毫秒 UTC 表示的開盤時間)。無需驗證。超過 1000 根 K 線的請求會自動分頁。輸出路徑受與 ohlcv_csv_path 相同的工作目錄範圍限制(可透過 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——探索 / 驗證交易對
回傳幣安公開 API 上可用於 OHLCV 擷取的交易對清單。處理程序內快取 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 | 允許 OHLCV 路徑位於工作目錄之外 |
PINEFORGE_DOCKER_TIMEOUT_MS | 120000 | docker pull / docker run 的強制終止 |