PineForge Codegen

resmi

Server 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_pine tanpa 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_grid untuk menguji semua kombinasi inputs × overrides terhadap satu CSV, dengan peringkat dan konkurensi opsional.
  • Ambil data OHLCV Binance untuk backtesting — Tarik kline spot atau USDT-perp melalui fetch_binance_ohlcv dan tulis CSV siap-backtest dengan paginasi otomatis.
  • Temukan simbol Binance yang tersedia — Daftar atau filter simbol yang dapat diperdagangkan dengan binance_symbols sebelum mengambil data pasar.
  • Periksa parameter mesin dan cakupan Pine — Kueri list_engine_params untuk setiap override dan kenop runtime yang diterima, atau gunakan check_pine_feature dan get_coverage_topic untuk 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.

pineforge-backtest-mcp MCP server

demo

Alat

namaberjalan padatujuan
transpile_pinedalam prosesUnit terjemahan Pine v6 → C++ (hanya transpilasi)
list_engine_paramslokal (tanpa I/O)Katalog setiap kenop overrides + runtime yang diterima oleh backtest
backtest_pinedalam prosesBacktest tunggal sumber Pine terhadap CSV OHLCV
backtest_pine_griddalam prosesSapuan Kartesian inputs × overrides menggunakan satu kompilasi
fetch_binance_ohlcvAPI publik BinanceTulis CSV siap-backtest dari kline spot atau USDT-perp Binance
binance_symbolsAPI publik BinanceDaftar / filter simbol Binance (cache dalam proses 5 menit)
list_coverage_topicslokal (tanpa I/O)Setiap topik cakupan Pine v6 dengan status satu baris + ringkasan
check_pine_featurelokal (tanpa I/O)Cari tahu apakah pengenal/namespace Pine didukung di PineForge
get_coverage_topiclokal (tanpa I/O)Detail lengkap + daftar fitur didukung/tidak didukung untuk satu topik cakupan
engine_infolokal (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 header strategy(...) yang dibaca runtime melalui PINEFORGE_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 ke run_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

vardefaulttujuan
PINEFORGE_IMAGEghcr.io/pineforge-4pass/pineforge-release:latestImage (runtime engine + codegen yang dibundel) digunakan untuk transpilasi + backtest
PINEFORGE_ALLOW_ANYWHERE0Izinkan jalur OHLCV di luar cwd
PINEFORGE_DOCKER_TIMEOUT_MS120000Hard kill untuk docker pull / docker run