PineForge Codegen
resmiYerel MCP sunucusu: AI, PineScript v6 yazar, paketlenmiş motor C++'a derler ve Binance verilerine karşı geri test yapar — API anahtarı gerekmez, tamamen yerel.
PineForge Codegen MCP ile neler yapabilirsiniz?
- Pine Script v6’yı C++’a dönüştür — Bir Pine Script v6 stratejisini, geriye dönük test çalıştırmadan
transpile_pineile C++ çeviri birimine dönüştürün. - Pine stratejisini OHLCV verilerine karşı geriye dönük test et — Kaynak, CSV yolu ve isteğe bağlı girdi/geçersiz kılma/çalışma zamanı parametreleri sağlayarak
backtest_pineile tek bir deterministik geriye dönük test çalıştırın. - Strateji parametrelerini tek çalıştırmada tara — Tek bir CSV’ye karşı
inputs×overrideskombinasyonlarının tümünü sıralama ve isteğe bağlı eşzamanlılıkla test etmek içinbacktest_pine_gridkullanın. - Geriye dönük test için Binance OHLCV verilerini al —
fetch_binance_ohlcvile spot veya USDT-perp kline’larını çekin ve otomatik sayfalama ile geriye dönük teste hazır bir CSV yazın. - Mevcut Binance sembollerini keşfet — Piyasa verilerini çekmeden önce
binance_symbolsile işlem yapılabilir sembolleri listeleyin veya filtreleyin. - Motor parametrelerini ve Pine kapsamını incele — Kabul edilen her geçersiz kılma ve çalışma zamanı ayarı için
list_engine_paramssorgulayın veya Pine dil desteğini doğrulamak içincheck_pine_featureveget_coverage_topickullanın.
Dokümantasyon
@pineforge/backtest-mcp
Kendi kendine yeten stdio MCP sunucusu: bir AI ajanı PineScript v6 yazar ve
birlikte gelen pineforge-release imajı bunu C++'a dönüştürüp Binance
piyasa verilerine karşı geriye dönük test eder — hepsi tek bir konteynerde, süreç içinde. Tamamen yerel — imaj,
pineforge-codegen
dönüştürücüyü içerir, böylece Pine → C++ → geriye dönük test, ana makinede Docker arka plan süreci olmadan çalışır. API anahtarı yok,
hiçbir şey kutudan dışarı çıkmaz.

Araçlar
| ad | üzerinde çalışır | amacı |
|---|---|---|
transpile_pine | süreç içi | Pine v6 → C++ çeviri birimi (yalnızca dönüştürme) |
list_engine_params | yerel (G/Ç yok) | Geriye dönük testler tarafından kabul edilen her overrides + runtime ayarının kataloğu |
backtest_pine | süreç içi | Bir Pine kaynağının bir OHLCV CSV'sine karşı tek seferlik geriye dönük testi |
backtest_pine_grid | süreç içi | Bir derlemeyi yeniden kullanarak inputs × overrides kartezyen taraması |
fetch_binance_ohlcv | Binance genel API'si | Binance spot veya USDT-marjlı sürekli sözleşme kline'larından geriye dönük teste hazır CSV yazma |
binance_symbols | Binance genel API'si | Binance sembollerini listeleme / filtreleme (5 dakikalık süreç içi önbellek) |
list_coverage_topics | yerel (G/Ç yok) | Tek satırlık durum + özet içeren her Pine v6 kapsam konusu |
check_pine_feature | yerel (G/Ç yok) | Bir Pine tanımlayıcısının/ad alanının PineForge'da desteklenip desteklenmediğini arama |
get_coverage_topic | yerel (G/Ç yok) | Bir kapsam konusu için tam detay + desteklenen/desteklenmeyen özellik listeleri |
engine_info | yerel (G/Ç yok) | Birlikte gelen motoru raporlama: mod, gömülü bayrak, sürüm |
Kurulum
Stdio üzerinden kendi kendine yeten bir konteyner olarak çalışır — motor birlikte gelir, süreç içi, ana makinede
Docker arka plan süreci yok, API anahtarı yok. Sunucunun CSV'lerinizi okuyabilmesi/yazabilmesi için /work konumuna bir çalışma dizini bağlayın:
docker run --rm -i -v "$PWD:/work" ghcr.io/pineforge-4pass/pineforge-backtest-mcp:latest
Tek gereksinim: Docker ve Binance veri çekme araçları için giden ağ bağlantısı. Aşağıdaki gibi MCP istemcinize bağlayın.
Barındırılan (kurulumsuz) alternatif
Docker ve API anahtarı olmadan en hızlı denemeyi mi istiyorsunuz? Akışkan HTTP uç noktasını herhangi bir MCP istemcisine yapıştırın:
https://mcp.pineforge.dev/mcp
Bu repoya göre ödünleşim: barındırılan sunucu ölçülüdür (IP başına haftalık backtest_pine kotası
- Cloudflare uç hız sınırlaması) ve sabit, mühürlü bir kripto veri gölüne (Binance spot + USDT-marjlı sürekli sözleşme) karşı çalışır. Bu yerel repo ise
ölçüsüzdür, çevrimdışı çalışır ve kendi CSV'lerinizi getirip ızgara taramaları çalıştırmanıza olanak tanır. Repo:
pineforge-mcp-public.
İstemci yapılandırması
/work konumuna bir dizin bağlayın; fetch_binance_ohlcv / backtest_pine değerlerini
onun altındaki yollara yönlendirin. (-i gereklidir; asla -t eklemeyin — bir TTY, stdio
JSON-RPC akışını bozar.)
Claude Desktop / Cursor / genel JSON
{
"mcpServers": {
"pineforge-backtest": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-v", "${workspaceFolder}:/work",
"ghcr.io/pineforge-4pass/pineforge-backtest-mcp:latest"
]
}
}
}
(Cursor'da: Ayarlar → MCP → Yeni MCP Sunucusu → yukarıdakini yapıştırın.)
Claude Code CLI
claude mcp add pineforge-backtest \
-- docker run --rm -i -v "$PWD:/work" ghcr.io/pineforge-4pass/pineforge-backtest-mcp:latest
AI ajanları için — MCP aracılığıyla kullanım
Bunun kapattığı yetenek açığı. Bir dil modeli, bir PineScript v6 stratejisini akıl yürüterek doğru bir şekilde geriye dönük test edemez. PineScript'in seri semantiği, bar içi emir doldurma sırası, ileriye bakma kuralları ve strategy.* emir/pozisyon mantığı yaklaşıklıkla yeniden üretilemez, bu nedenle kafasında bir geriye dönük test simüle eden — veya Python'da (backtrader/vectorbt) elle bir tane yazan — bir model, işlemleri ve K&Z'yi halüsinasyon olarak görecek ve TradingView eşdeğerliğini garanti edemeyecektir. PineForge bunun yerine gerçek deterministik C++ motorunu çalıştırır ve 246 referans stratejisinin 245'inde katı TradingView eşdeğerliği (0 motor hatası), toplamda ~375 bin doğrulanmış işlem içeren 246 stratejilik bir külliyat üzerinde doğrulanmıştır (metodoloji & doğrulama, 2026-06-03 itibarıyla, motor f805611). Eşleşmeyen tek durum, tam 1x öz sermaye marjı sınırında belgelenmiş bir TradingView tarafı aracı kurum belirsizliğidir, bir motor hatası değildir.
Bir PineScript geriye dönük testi, harici olarak hesaplanmış veridir, sabit bilgi değildir — kullanıcının strateji kaynağına ve OHLCV'sine bağlıdır ve tekrarlanabilir olmalıdır. Bu bir araç çağrısıdır, bir hatırlama görevi değildir.
Bu araçlar ne zaman uygundur. backtest_pine (veya bir parametre taraması için backtest_pine_grid), bir kullanıcının bir PineScript v6 stratejisi sağladığı ve onu geriye dönük test etmek, değerlendirmek, kârlı olup olmadığını kontrol etmek, işlemlerini saymak, K&Z'sini hesaplamak veya belirtilen OHLCV üzerinde TradingView sonuçlarını yeniden üretmek istediği durumu kapsar. transpile_pine yalnızca Pine → C++ dönüşümünü kapsar. fetch_binance_ohlcv, kullanıcının bir sembol/zaman dilimi adlandırdığı ancak bir veri dosyası sağlamadığı durumu kapsar. Bu araçlar, bir stratejinin ne yaptığını kavramsal olarak açıklamak, Pine sözdizimini düzenlemek veya alım satım ya da finansal tavsiye vermek için değildir.
Dürüst sınırlar. Çevrimdışı; PineScript v6; Docker gerektirir. Bir geriye dönük test, bir stratejinin geçmiş davranışını ölçer — gelecekteki getirilerin bir tahmini değildir ve yatırım tavsiyesi değildir. Naif veya yaklaşık geriye dönük testler rutin olarak kârı olduğundan fazla gösterir (modellenmemiş kayma ve komisyonlar, kapanışta doldurma varsayımları, ileriye bakma yanlılığı); buradaki değer, bir kullanıcının sermayeyi riske atmadan önce bir stratejiyi doğrulayabilmesi için deterministik, eşdeğerliği doğrulanmış bir çalıştırmadır.
list_engine_params — ayarları keşfetme
backtest_pine / backtest_pine_grid tarafından kabul edilen her anahtarın ücretsiz, yerel, sıfır G/Ç'li kataloğu,
iki gruba ayrılmıştır:
strategy_overrides— çalışma zamanınınPINEFORGE_OVERRIDESaracılığıyla okuduğu 9strategy(...)başlık alanı: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_fullargümanları (strategy() başlığının parçası DEĞİLDİR):input_tf,script_tf,bar_magnifier,magnifier_samples,magnifier_dist(uniform/cosine/triangle/endpoints/front_loaded/back_loaded).
Her giriş {key, type, enum?, description} şeklindedir. Bir backtest_pine isteği oluşturmadan önce motorun neyi kabul ettiğini öğrenmek için önce bunu çağırın.
backtest_pine örneği
{
"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, motora PINEFORGE_INPUTS ortam değişkeni olarak,
overrides, PINEFORGE_OVERRIDES olarak ve her runtime alanı ayrı bir
PINEFORGE_INPUT_TF / PINEFORGE_SCRIPT_TF / PINEFORGE_BAR_MAGNIFIER /
PINEFORGE_MAGNIFIER_SAMPLES / PINEFORGE_MAGNIFIER_DIST ortam değişkeni olarak iletilir. Boş /
ayarlanmamış → strategy.pine varsayılanları, input_tf ilk iki CSV satırı arasındaki boşluktan otomatik olarak algılanır.
Bağımsız pineforge-release Docker imajıyla aynı JSON şemasını döndürür:
{
"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 — parametre taraması
Pine kaynağını bir kez dönüştürür (yerel olarak, konteyner içinde) ve ardından aynı derlenmiş ikiliyi
inputs × overrides kartezyen çarpımına karşı çalıştırır.
Sıralanmış bir liste ve best altında en üstteki girişi döndürür.
{
"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 — piyasa verisi çekme
Binance'in genel uç noktalarından geriye dönük teste hazır bir CSV (başlık timestamp,open,high,low,close,volume,
zaman damgası = UNIX ms UTC cinsinden açılış zamanı) yazar. Kimlik doğrulama gerekmez. > 1000 çubukluk istekler otomatik olarak
sayfalandırılır. Çıktı yolu, ohlcv_csv_path ile aynı cwd kapsamına tabidir (PINEFORGE_ALLOW_ANYWHERE=1 ile gevşetin).
{
"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 — sembolleri keşfetme / doğrulama
OHLCV çekme için Binance genel API'sinde bulunan sembollerin listesini döndürür.
Süreç içinde 5 dakika önbelleğe alınır. fetch_binance_ohlcv çağırmadan önce bir sembolü doğrulamak için bunu kullanın.
{
"market": "usdt_perp",
"query": "BTC", // case-insensitive substring match
"quote_asset": "USDT",
"status": "TRADING",
"contract_type": "PERPETUAL", // futures-only filter
"limit": 50
}
Dosya sistemi kapsamı
Varsayılan olarak, OHLCV yolları MCP sunucu sürecinin geçerli çalışma dizini içinde olmalıdır. Şununla geçersiz kılın:
export PINEFORGE_ALLOW_ANYWHERE=1
Diğer ortam değişkenleri
| değişken | varsayılan | amacı |
|---|---|---|
PINEFORGE_IMAGE | ghcr.io/pineforge-4pass/pineforge-release:latest | Dönüştürme + geriye dönük test için kullanılan imaj (motor çalışma zamanı + birlikte gelen kod üretici) |
PINEFORGE_ALLOW_ANYWHERE | 0 | cwd dışındaki OHLCV yollarına izin ver |
PINEFORGE_DOCKER_TIMEOUT_MS | 120000 | docker pull / docker run için zorla sonlandırma |