Drop your email. We reply with your free codegen API key plus the 2-minute quickstart above. One launch email and the occasional progress note.
Hosted Studio launches Q4 2026. Self-host today via the open-source CLI.
Drop your email into the waitlist below. Your key arrives by email within seconds, ready to use against the codegen API.
curl -X POST https://codegen.pineforge.dev/transpile \ -H "Authorization: Bearer $PINEFORGE_KEY" \ --data-binary @strategy.pine > strategy.cpp
docker run --rm \ -v $(pwd)/strategy.cpp:/in/strategy.cpp \ -v $(pwd)/ohlcv.csv:/in/ohlcv.csv \ ghcr.io/fullpass-4pass/pineforge-engine:latest > report.json
//@version=6 strategy("EMA Cross", overlay=true, initial_capital=10000) length = input.int(14, "Length") sig = ta.ema(close, length) if ta.crossover(sig, sig[1]) strategy.entry("long", strategy.long) if ta.crossunder(sig, sig[1]) strategy.close("long")
class GeneratedStrategy : public BacktestEngine { ta::EMA _ta_ema_1{14}; Series<double> _s_sig{500}; void on_bar(const Bar& bar) override { int length = get_input_int("Length", 14); double sig = _ta_ema_1.compute(bar.close); _s_sig.push(sig); if (sig > _s_sig[1] && _s_sig[1] <= _s_sig[2]) strategy_entry("long", true); if (sig < _s_sig[1] && _s_sig[1] >= _s_sig[2]) strategy_close("long"); } };
Building a strategy marketplace? See seller pitch →
Running a desk or small fund? See institutional pitch →
Our Model Context Protocol server bridges your AI agent to the codegen API and your local Docker. Talk to your strategy in natural language. Backtest stays local — only the Pine source crosses the network.
npx -y @pineforge/codegen-mcp
Five axes that matter to a quant who wants to ship a strategy as a product. PineForge is built around all five.
Axes chosen to test PineForge's thesis. Scored from public docs and benchmarks. Methodology →
| Engine | Native speed | Source privacy | License control | OSS audit | Data freedom |
|---|---|---|---|---|---|
| PineForge | 5/5 | 4/5 | 5/5 | 3/5 | 5/5 |
| TradingView | 2/5 | 2/5 | 1/5 | 0/5 | 2/5 |
| MQL5 Market | 4/5 | 5/5 | 3/5 | 0/5 | 3/5 |
| QuantConnect | 3/5 | 1/5 | 1/5 | 3/5 | 4/5 |
| Backtrader | 1/5 | 0/5 | 0/5 | 5/5 | 5/5 |
def objective(report): return 0.6 * report.sharpe - 0.3 * report.max_dd + 0.1 * report.profit_factor
Drawing primitives, alerts, and live-tick semantics are out of scope by design — PineForge runs offline. Everything that determines a trade is in.
Full function-by-function coverage| ta.* — 66 stateful indicator classes | 66/68 | 97% |
| math.* — deterministic + rolling | core | supported |
| str.* — format · split · regex · tostring | core | supported |
| strategy.* — orders · risk · accessors | full | 100% |
| array<T> · map<K,V> · UDT | via codegen | supported |
| matrix<T> — Eigen-backed | 60+ ops | supported |
| request.security — ratio · calendar · lower-TF | core | supported |
| drawing & alerts | — | out of scope |
Every release is validated trade-by-trade against TradingView’s CSV exports — 162 reference strategies, full corpus open-source.
06-liquidity-sweep, 07-scalping-strategy, 49-partial-exit-qty-percent) is consistently in bracket / trail / partial-exit semantics, where PyneCore’s broker emulator differs from TV. See the per-strategy breakdown →feed_bar() API. Multi-window robustness scoring.Is this legal? How does it compare to PyneCore? What if PineForge shuts down? Eight short answers.
One launch email. One occasional progress note. No upsell-marathon.