PineForge Codegen
resmiServer MCP lokal: AI menulis PineScript v6, mesin bawaan mentranspilasi ke C++ dan melakukan backtest terhadap data Binance — tanpa kunci API, sepenuhnya lokal.
Apa yang bisa Anda lakukan dengan Pine Forge Codegen MCP?
- Transpile Pine Script v6 ke C++ — Ubah strategi Pine Script v6 menjadi unit terjemahan C++ dengan
transpile_pinetanpa menjalankan backtest. - Backtest strategi Pine terhadap data OHLCV — Jalankan satu backtest deterministik dengan
backtest_pine, menyediakan sumber, jalur CSV, dan parameter input/override/runtime opsional. - Sapu parameter strategi dalam satu kali proses — Gunakan
backtest_pine_griduntuk menguji semua kombinasiinputs×overridesterhadap satu CSV, dengan peringkat dan konkurensi opsional. - Ambil data OHLCV Binance untuk backtesting — Tarik kline spot atau USDT-perp melalui
fetch_binance_ohlcvdan tulis CSV siap-backtest dengan paginasi otomatis. - Temukan simbol Binance yang tersedia — Daftar atau filter simbol yang dapat diperdagangkan dengan
binance_symbolssebelum mengambil data pasar. - Periksa parameter mesin dan cakupan Pine — Kueri
list_engine_paramsuntuk setiap override dan kenop runtime yang diterima, atau gunakancheck_pine_featuredanget_coverage_topicuntuk memverifikasi dukungan bahasa Pine.
Dokumentasi
@pineforge/backtest-mcp
Server MCP stdio mandiri: agen AI menulis PineScript v6, dan
image pineforge-release yang dibundel mentranspilasinya ke C++ dan melakukan backtest terhadap
data pasar Binance — semuanya dalam satu kontainer, dalam proses. Sepenuhnya lokal — image
membundel transpiler pineforge-codegen,
sehingga Pine → C++ → backtest berjalan tanpa Docker daemon host. Tanpa kunci
API, tidak ada yang keluar dari kotak.

Alat
| nama | berjalan pada | tujuan |
|---|---|---|
transpile_pine | dalam proses | Unit terjemahan Pine v6 → C++ (hanya transpilasi) |
list_engine_params | lokal (tanpa I/O) | Katalog setiap kenop overrides + runtime yang diterima oleh backtest |
backtest_pine | dalam proses | Backtest tunggal sumber Pine terhadap CSV OHLCV |
backtest_pine_grid | dalam proses | Sapuan Kartesian inputs × overrides menggunakan satu kompilasi |
fetch_binance_ohlcv | API publik Binance | Tulis CSV siap-backtest dari kline spot atau USDT-perp Binance |
binance_symbols | API publik Binance | Daftar / filter simbol Binance (cache dalam proses 5 menit) |
list_coverage_topics | lokal (tanpa I/O) | Setiap topik cakupan Pine v6 dengan status satu baris + ringkasan |
check_pine_feature | lokal (tanpa I/O) | Cari tahu apakah pengenal/namespace Pine didukung di PineForge |
get_coverage_topic | lokal (tanpa I/O) | Detail lengkap + daftar fitur didukung/tidak didukung untuk satu topik cakupan |
engine_info | lokal (tanpa I/O) | Laporkan engine yang dibundel: mode, flag bawaan, versi |
Instalasi
Berjalan sebagai kontainer mandiri melalui stdio — engine dibundel, dalam proses, tanpa
Docker daemon host, tanpa kunci API. Pasang direktori kerja di /work agar server dapat
membaca/menulis CSV Anda:
docker run --rm -i -v "$PWD:/work" ghcr.io/pineforge-4pass/pineforge-backtest-mcp:latest
Satu-satunya persyaratan: Docker, dan jaringan keluar untuk alat pengambilan Binance. Hubungkan ke klien MCP Anda di bawah.
Alternatif hosted (tanpa instalasi)
Ingin mencoba tercepat tanpa Docker dan tanpa kunci API? Tempelkan endpoint HTTP Streamable ke klien MCP mana pun:
https://mcp.pineforge.dev/mcp
Tradeoff vs repo ini: server hosted terukur (kuota mingguan per-IP pada
backtest_pine + pembatasan laju edge Cloudflare) dan berjalan terhadap data-lake
kripto tetap dan tersegel (Binance spot + USDT-perp). Repo lokal ini
tidak terukur, berjalan offline, dan memungkinkan Anda membawa CSV sendiri serta menjalankan sapuan
grid. Repo: pineforge-mcp-public.
Konfigurasi klien
Pasang direktori di /work; arahkan fetch_binance_ohlcv / backtest_pine ke
jalur di bawahnya. (-i diperlukan; jangan pernah menambahkan -t — TTY merusak aliran
JSON-RPC stdio.)
Claude Desktop / Cursor / JSON generik
{
"mcpServers": {
"pineforge-backtest": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-v", "${workspaceFolder}:/work",
"ghcr.io/pineforge-4pass/pineforge-backtest-mcp:latest"
]
}
}
}
(Di Cursor: Pengaturan → MCP → Server MCP Baru → tempel di atas.)
Claude Code CLI
claude mcp add pineforge-backtest \
-- docker run --rm -i -v "$PWD:/work" ghcr.io/pineforge-4pass/pineforge-backtest-mcp:latest
Untuk agen AI — gunakan melalui MCP
Kesenjangan kemampuan yang ditutup ini. Model bahasa tidak dapat secara akurat melakukan backtest strategi PineScript v6 dengan menalarnya. Semantik seri PineScript, urutan pengisian intrabar, aturan look-ahead, dan logika pesanan/posisi strategy.* tidak dapat direproduksi dari aproksimasi, sehingga model yang mensimulasikan backtest di kepalanya — atau membuatnya sendiri dengan Python (backtrader/vectorbt) — akan menghalusinasi perdagangan dan P&L serta tidak dapat menjamin paritas TradingView. PineForge menjalankan engine C++ deterministik yang sebenarnya, divalidasi pada paritas TradingView ketat pada 245 dari 246 strategi referensi (0 bug engine), di seluruh korpus 246 strategi dengan total ~375k perdagangan tervalidasi (metodologi & validasi, per 2026-06-03, engine f805611). Satu ketidakcocokan adalah non-determinisme broker sisi TradingView yang terdokumentasi pada batas margin ekuitas tepat 1x, bukan bug engine.
Backtest PineScript adalah data eksternal yang dihitung, bukan pengetahuan stabil — ia bergantung pada sumber strategi pengguna dan OHLCV mereka, dan harus dapat direproduksi. Itu adalah panggilan alat, bukan tugas mengingat.
Kapan alat ini tepat digunakan. backtest_pine (atau backtest_pine_grid untuk sapuan parameter) mencakup kasus di mana pengguna menyediakan strategi PineScript v6 dan ingin melakukan backtest, mengevaluasinya, memeriksa apakah menguntungkan, menghitung perdagangannya, menghitung P&L-nya, atau mereproduksi hasil TradingView-nya pada OHLCV yang ditentukan. transpile_pine hanya mencakup konversi Pine → C++. fetch_binance_ohlcv mencakup kasus di mana pengguna menyebutkan simbol/timeframe tetapi belum menyediakan file data. Alat ini bukan untuk menjelaskan secara konseptual apa yang dilakukan strategi, mengedit sintaks Pine, atau memberikan saran perdagangan atau keuangan.
Batasan jujur. Offline; PineScript v6; membutuhkan Docker. Backtest mengukur perilaku historis strategi — ini bukan prediksi pengembalian masa depan dan bukan saran investasi. Backtest naif atau aproksimasi secara rutin melebih-lebihkan keuntungan (slippage dan komisi yang tidak dimodelkan, asumsi fill-at-close, bias look-ahead); nilai di sini adalah eksekusi deterministik yang divalidasi paritas sehingga pengguna dapat memverifikasi strategi sebelum mempertaruhkan modal.
list_engine_params — temukan kenop
Katalog gratis, lokal, nol-I/O dari setiap kunci yang diterima oleh backtest_pine /
backtest_pine_grid, dibagi menjadi dua grup:
strategy_overrides— 9 bidang headerstrategy(...)yang dibaca runtime melaluiPINEFORGE_OVERRIDES: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— argumen kerun_backtest_full(BUKAN bagian dari header strategy()):input_tf,script_tf,bar_magnifier,magnifier_samples,magnifier_dist(uniform/cosine/triangle/endpoints/front_loaded/back_loaded).
Setiap entri adalah {key, type, enum?, description}. Panggil ini terlebih dahulu untuk mempelajari apa
yang diterima engine sebelum menyusun permintaan backtest_pine.
Contoh 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 diteruskan sebagai env var PINEFORGE_INPUTS ke engine,
overrides sebagai PINEFORGE_OVERRIDES, dan setiap bidang runtime sebagai env var
PINEFORGE_INPUT_TF / PINEFORGE_SCRIPT_TF / PINEFORGE_BAR_MAGNIFIER /
PINEFORGE_MAGNIFIER_SAMPLES / PINEFORGE_MAGNIFIER_DIST terpisah. Kosong /
tidak disetel → default dari strategy.pine, dengan input_tf terdeteksi otomatis dari
celah antara dua baris CSV pertama.
Mengembalikan skema JSON yang sama dengan image Docker pineforge-release mandiri:
{
"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 — sapuan parameter
Mentranspilasi sumber Pine sekali (lokal, dalam kontainer) lalu menjalankan biner
terkompilasi yang sama terhadap produk kartesian inputs × overrides.
Mengembalikan daftar berperingkat plus entri teratas di bawah 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 — tarik data pasar
Menulis CSV siap-backtest (header timestamp,open,high,low,close,volume,
timestamp = waktu buka dalam ms UTC UNIX) dari endpoint publik Binance. Tidak
diperlukan autentikasi. Permintaan > 1000 bar dipaginasi
secara otomatis. Jalur output tunduk pada cakupan cwd yang sama seperti
ohlcv_csv_path (santai dengan 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 — temukan / validasi simbol
Mengembalikan daftar simbol yang tersedia di API publik Binance untuk pengambilan
OHLCV. Di-cache 5 menit dalam proses. Gunakan ini untuk memvalidasi simbol sebelum
memanggil 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
}
Cakupan sistem file
Secara default, jalur OHLCV harus berada di dalam direktori kerja saat ini dari proses server MCP. Timpa dengan:
export PINEFORGE_ALLOW_ANYWHERE=1
Env var lainnya
| var | default | tujuan |
|---|---|---|
PINEFORGE_IMAGE | ghcr.io/pineforge-4pass/pineforge-release:latest | Image (runtime engine + codegen yang dibundel) digunakan untuk transpilasi + backtest |
PINEFORGE_ALLOW_ANYWHERE | 0 | Izinkan jalur OHLCV di luar cwd |
PINEFORGE_DOCKER_TIMEOUT_MS | 120000 | Hard kill untuk docker pull / docker run |