PineForge Codegen
आधिकारिकस्थानीय MCP सर्वर: AI PineScript v6 लिखता है, बंडल इंजन C++ में ट्रांसपाइल करता है और Binance डेटा के विरुद्ध बैकटेस्ट करता है — कोई API कुंजी नहीं, पूरी तरह से स्थानीय।
PineForge Codegen MCP के साथ आप क्या कर सकते हैं?
- Pine Script v6 को C++ में ट्रांसपाइल करें — बैकटेस्ट चलाए बिना
transpile_pineके साथ Pine Script v6 रणनीति को C++ ट्रांसलेशन यूनिट में बदलें। - OHLCV डेटा के विरुद्ध Pine रणनीति का बैकटेस्ट करें —
backtest_pineके साथ एक नियतात्मक बैकटेस्ट चलाएं, जिसमें स्रोत, CSV पथ और वैकल्पिक इनपुट/ओवरराइड/रनटाइम पैरामीटर प्रदान करें। - एक रन में रणनीति पैरामीटर स्वीप करें — एकल CSV के विरुद्ध
inputs×overridesके सभी संयोजनों का परीक्षण करने के लिएbacktest_pine_gridका उपयोग करें, जिसमें रैंकिंग और वैकल्पिक समवर्तीता शामिल हो। - बैकटेस्टिंग के लिए Binance OHLCV डेटा प्राप्त करें —
fetch_binance_ohlcvके माध्यम से स्पॉट या USDT-पर्प क्लाइन खींचें और स्वचालित पेजिनेशन के साथ बैकटेस्ट-तैयार CSV लिखें। - उपलब्ध Binance प्रतीक खोजें — बाजार डेटा प्राप्त करने से पहले
binance_symbolsके साथ ट्रेड करने योग्य प्रतीकों को सूचीबद्ध या फ़िल्टर करें। - इंजन पैरामीटर और Pine कवरेज का निरीक्षण करें — प्रत्येक स्वीकृत ओवरराइड और रनटाइम नॉब के लिए
list_engine_paramsक्वेरी करें, या Pine भाषा समर्थन सत्यापित करने के लिएcheck_pine_featureऔरget_coverage_topicका उपयोग करें।
दस्तावेज़
@pineforge/backtest-mcp
स्व-निहित stdio 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 | इन-प्रोसेस | एक संकलन का पुन: उपयोग करते हुए inputs × overrides का कार्टेशियन स्वीप |
fetch_binance_ohlcv | Binance सार्वजनिक API | Binance स्पॉट या USDT-पर्प क्लाइन से बैकटेस्ट-तैयार CSV लिखें |
binance_symbols | Binance सार्वजनिक API | Binance प्रतीकों को सूचीबद्ध / फ़िल्टर करें (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-backtest-mcp:latest
केवल आवश्यकता: Docker, और Binance फ़ेच उपकरणों के लिए आउटबाउंड नेटवर्क। इसे नीचे अपने MCP क्लाइंट में वायर करें।
होस्टेड (नो-इंस्टॉल) विकल्प
बिना Docker और बिना API कुंजी के सबसे तेज़ प्रयास चाहते हैं? स्ट्रीमेबल 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 stdio
JSON-RPC स्ट्रीम को दूषित करता है।)
Claude डेस्कटॉप / 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 कोड 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) में हाथ से एक रोल करता है — ट्रेडों और P&L को मतिभ्रम करेगा और TradingView समता की गारंटी नहीं दे सकता। PineForge इसके बजाय वास्तविक नियतात्मक C++ इंजन चलाता है, 246 में से 245 संदर्भ रणनीतियों पर सख्त TradingView समता (0 इंजन बग), कुल ~375k मान्य ट्रेडों वाले 246-रणनीति संग्रह में मान्य (कार्यप्रणाली और सत्यापन, 2026-06-03 तक, इंजन f805611)। एक गैर-मिलान सटीक 1x-इक्विटी मार्जिन सीमा पर एक प्रलेखित TradingView-पक्ष ब्रोकर गैर-नियतत्ववाद है, इंजन बग नहीं।
एक PineScript बैकटेस्ट बाहरी डेटा की गणना है, स्थिर ज्ञान नहीं — यह उपयोगकर्ता के रणनीति स्रोत और उनके OHLCV पर निर्भर करता है, और यह प्रतिलिपि प्रस्तुत करने योग्य होना चाहिए। यह एक उपकरण कॉल है, स्मरण कार्य नहीं।
जब ये उपकरण सही फिट हों। backtest_pine (या पैरामीटर स्वीप के लिए backtest_pine_grid) उस मामले को कवर करता है जहां एक उपयोगकर्ता PineScript v6 रणनीति प्रदान करता है और इसका बैकटेस्ट करना, इसका मूल्यांकन करना, जांचना कि क्या यह लाभदायक है, इसके ट्रेडों की गणना करना, इसके P&L की गणना करना, या निर्दिष्ट OHLCV पर इसके TradingView परिणामों को पुन: उत्पन्न करना चाहता है। transpile_pine केवल Pine → C++ रूपांतरण को कवर करता है। fetch_binance_ohlcv उस मामले को कवर करता है जहां उपयोगकर्ता एक प्रतीक/समय-सीमा का नाम देता है लेकिन उसने डेटा फ़ाइल की आपूर्ति नहीं की है। ये उपकरण वैचारिक रूप से यह समझाने के लिए नहीं हैं कि एक रणनीति क्या करती है, Pine सिंटैक्स संपादित करने, या ट्रेडिंग या वित्तीय सलाह देने के लिए नहीं हैं।
ईमानदार सीमाएं। ऑफ़लाइन; PineScript v6; Docker की आवश्यकता है। एक बैकटेस्ट एक रणनीति के ऐतिहासिक व्यवहार को मापता है — यह भविष्य के रिटर्न की भविष्यवाणी नहीं है और निवेश सलाह नहीं है। अनुभवहीन या अनुमानित बैकटेस्ट नियमित रूप से लाभ को बढ़ा-चढ़ाकर बताते हैं (अनमॉडल्ड स्लिपेज और कमीशन, फिल-एट-क्लोज धारणाएं, लुक-अहेड पूर्वाग्रह); यहां मूल्य एक नियतात्मक, समता-मान्य रन है ताकि उपयोगकर्ता पूंजी को जोखिम में डालने से पहले एक रणनीति को सत्यापित कर सके।
list_engine_params — नॉब खोजें
backtest_pine /
backtest_pine_grid द्वारा स्वीकार की जाने वाली प्रत्येक कुंजी की मुफ़्त, स्थानीय, शून्य-I/O सूची, दो समूहों में विभाजित:
strategy_overrides— 9strategy(...)हेडर फ़ील्ड जिन्हें रनटाइम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—run_backtest_fullके लिए तर्क (रणनीति() हेडर का हिस्सा नहीं):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 env var के रूप में अग्रेषित किया जाता है,
overrides को PINEFORGE_OVERRIDES के रूप में, और प्रत्येक runtime फ़ील्ड को एक अलग
PINEFORGE_INPUT_TF / PINEFORGE_SCRIPT_TF / PINEFORGE_BAR_MAGNIFIER /
PINEFORGE_MAGNIFIER_SAMPLES / PINEFORGE_MAGNIFIER_DIST env var के रूप में। खाली /
अनसेट → 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 — बाज़ार डेटा खींचें
Binance के सार्वजनिक एंडपॉइंट से एक बैकटेस्ट-तैयार CSV (हेडर timestamp,open,high,low,close,volume,
टाइमस्टैम्प = UNIX ms 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
अन्य env vars
| var | डिफ़ॉल्ट | उद्देश्य |
|---|---|---|
PINEFORGE_IMAGE | ghcr.io/pineforge-4pass/pineforge-release:latest | ट्रांसपाइल + बैकटेस्ट के लिए उपयोग की जाने वाली छवि (इंजन रनटाइम + बंडल कोडजेन) |
PINEFORGE_ALLOW_ANYWHERE | 0 | cwd के बाहर OHLCV पथों की अनुमति दें |
PINEFORGE_DOCKER_TIMEOUT_MS | 120000 | docker pull / docker run के लिए हार्ड किल |