PineForge Codegen

आधिकारिक

स्थानीय MCP सर्वर: AI PineScript v6 लिखता है, बंडल इंजन C++ में ट्रांसपाइल करता है और Binance डेटा के विरुद्ध बैकटेस्ट करता है — कोई API कुंजी नहीं, पूरी तरह से स्थानीय।

Pine Forge Codegen MCP के साथ आप क्या कर सकते हैं?

  • Transpile PineScript v6 to C++transpile_pine का उपयोग करके Pine v6 रणनीति को C++ ट्रांसलेशन यूनिट में बदलें और जनरेट किए गए कोड का निरीक्षण करें।
  • Backtest a Pine strategy against OHLCV databacktest_pine के साथ एकल नियतात्मक बैकटेस्ट चलाएं, जिसमें स्रोत, CSV पथ, वैकल्पिक inputs, overrides, और runtime आर्गुमेंट्स प्रदान करें।
  • Sweep strategy parameters in one runbacktest_pine_grid का उपयोग करके CSV के विरुद्ध inputs × overrides के हर संयोजन का परीक्षण करें, एक ही कंपाइल का पुन: उपयोग करते हुए।
  • Fetch Binance OHLCV data as a backtest-ready CSVfetch_binance_ohlcv के साथ स्पॉट या USDT-पर्प klines प्राप्त करें और तत्काल उपयोग के लिए उन्हें स्थानीय फ़ाइल में लिखें।
  • Discover available Binance symbols — बाजार डेटा प्राप्त करने से पहले binance_symbols के साथ व्यापार योग्य प्रतीकों को मान्य या फ़िल्टर करें।
  • Inspect engine parameters and Pine coveragelist_engine_params के माध्यम से स्वीकृत प्रत्येक बैकटेस्ट नॉब को सूचीबद्ध करें और check_pine_feature या get_coverage_topic के साथ Pine v6 फीचर समर्थन की जांच करें।

दस्तावेज़

@pineforge/codegen-mcp

स्व-निहित stdio MCP सर्वर: एक AI एजेंट PineScript v6 लिखता है, और बंडल की गई pineforge-release छवि इसे C++ में ट्रांसपाइल करती है और Binance बाज़ार डेटा के विरुद्ध इसका बैकटेस्ट करती है — सब एक कंटेनर में, इन-प्रोसेस। पूरी तरह से स्थानीय — छवि pineforge-codegen ट्रांसपाइलर को बंडल करती है, इसलिए Pine → C++ → बैकटेस्ट बिना किसी होस्ट Docker डेमॉन के चलता है। कोई API कुंजी नहीं, कुछ भी बॉक्स से बाहर नहीं जाता।

pineforge-codegen-mcp MCP server

demo

उपकरण

नामपर चलता हैउद्देश्य
transpile_pineइन-प्रोसेसPine v6 → C++ अनुवाद इकाई (केवल-ट्रांसपाइल)
list_engine_paramsस्थानीय (कोई I/O नहीं)बैकटेस्ट द्वारा स्वीकार किए जाने वाले प्रत्येक overrides + runtime नॉब की सूची
backtest_pineइन-प्रोसेसOHLCV CSV के विरुद्ध एक Pine स्रोत का एकल बैकटेस्ट
backtest_pine_gridइन-प्रोसेसएक संकलन का पुन: उपयोग करते हुए inputs × overrides का कार्टेशियन स्वीप
fetch_binance_ohlcvBinance सार्वजनिक APIBinance स्पॉट या USDT-पर्प क्लाइन से बैकटेस्ट-तैयार CSV लिखें
binance_symbolsBinance सार्वजनिक APIBinance प्रतीकों को सूचीबद्ध / फ़िल्टर करें (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, और 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-codegen": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "-v", "${workspaceFolder}:/work",
        "ghcr.io/pineforge-4pass/pineforge-codegen-mcp:latest"
      ]
    }
  }
}

(Cursor में: सेटिंग्स → MCP → नया MCP सर्वर → उपरोक्त पेस्ट करें।)

Claude कोड 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 की श्रृंखला शब्दार्थ, इंट्राबार फिल ऑर्डर, लुक-अहेड नियम, और 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 — नॉब खोजें

मुफ़्त, स्थानीय, शून्य-I/O सूची, backtest_pine / backtest_pine_grid द्वारा स्वीकार की जाने वाली प्रत्येक कुंजी की, दो समूहों में विभाजित:

  • strategy_overrides — 9 strategy(...) हेडर फ़ील्ड जिन्हें रनटाइम 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_argsrun_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_IMAGEghcr.io/pineforge-4pass/pineforge-release:latestट्रांसपाइल + बैकटेस्ट के लिए उपयोग की जाने वाली छवि (इंजन रनटाइम + बंडल कोडजेन)
PINEFORGE_ALLOW_ANYWHERE0cwd के बाहर OHLCV पथों की अनुमति दें
PINEFORGE_DOCKER_TIMEOUT_MS120000docker pull / docker run के लिए हार्ड किल