Traders write in Pine. Prop firms run MetaTrader and cTrader. This carries the strategy across: the engine runs it in your browser, the backtest shows you what it does, and the generated code comes with a report of everything that didn't survive.
Write a Pine indicator or strategy, run it on real candles and watch the plots land on the chart and the trades on the equity curve. No account, no upload, no build step.
Open the lab →A canvas chart built for this rather than embedded from elsewhere: timeframes, chart types, 46 indicators, drawing tools and pattern detection.
Open the chart →Every indicator the charts draw is recomputed from its textbook formula in the tests: 43 of 46 match it, and the other three only display data.
Browse the library →Multi-panel layout for when one chart is not enough: quotes, depth, order flow and your own panels side by side.
Open the workspace →A bridge like this fails quietly: a flipped profit sign, an off-by-one series index, a flat line where an indicator should be. That is worse than getting nothing back, so every step is checked, and what cannot be carried across is named.
Paste Pine, or start from one of the scripts already in the library. It parses and runs client-side.
The same engine that will generate your code draws the plots and the trades, so what you see is what gets ported.
The same candles go through both sides and the outputs are compared value by value. Drift shows up as a number, not a feeling.
Out comes a cBot or an expert advisor, plus a report listing everything the target platform could not express faithfully.
Coverage is measured against a corpus of published scripts, not asserted in a feature list. The number below moves when the engine improves, and the failures are kept as a ranked work list rather than hidden.
99% run.
94% run.
90% run.
99% run.
809 published scripts, 793 compile and run (98.0%), 790 produce real output (97.7%). Of the 16 that stop, 11 ask for a lower timeframe than the test candles contain, which is a question of data rather than of the language; one calls a library whose code lives on the platform; four have errors in the script itself, such as an undefined function or an array index past the end. The list is in the repo, ordered by how many scripts each cause blocks.
Converting is a second, stricter number: 766 of the 809 (94.7%) come out as cTrader C#, 753 (93.1%) as MetaTrader 5 MQL5, and the same 753 as MetaTrader 4 MQL4. Pine is not the only way in: scripts written in our own typed language take the same road to the same three platforms, and back out as Pine. An expression requested on a higher timeframe now converts: the indicator runs a second copy of itself on that timeframe and reads the values back. The rest are refused on purpose. A multi-symbol screener is not an indicator on one chart, and data a platform does not have, such as earnings, dividends or financials, is not invented. Some higher-timeframe requests still stop, for example inside a strategy or on a timeframe chosen while the script runs. Whatever a target cannot express is named in the file rather than quietly approximated.
Converted indicators are also run and compared with the engine bar by bar. On our working set of scripts and edge cases, the last full run on a real MetaTrader 5 terminal matched 750 of 755. The cTrader output runs in our own harness built on cTrader's cAlgo.API rather than in the cTrader app, and there 745 of 748 match on daily bars and 746 of 750 on hourly.
Crypto candles stream from Binance through our own cached service, so the lab and the backtest run on real history. Forex, metals and indices are priced server-side through cTrader and currently show the last stamped price rather than a full candle feed.
It runs in your browser. No account needed to find out what it does.