Trade Calls
Market and pending orders, modifications and closes are rebuilt as MT5 trade operations, including scaling in, partial closes and exits tied to specific entries.
We rewrite cTrader cBots as MT5 Expert Advisors and cTrader indicators as MT5 custom indicators — converting units to lots, pip stops to price levels and labelled positions to your MT5 account, and checking the result against criteria agreed with you.
Indicators.ExponentialMovingAverage(…, 21)iMA(…, MODE_EMA, …) + CopyBuffer(…)[Output("EMA")] IndicatorDataSeries EmaSetIndexBuffer(0, EmaBuffer)MarketData.GetBars(TimeFrame.Hour, …)CopyRates(_Symbol, PERIOD_H1, …)ExecuteMarketOrder(TradeType.Buy, "EURUSD", 10000)trade.Buy(0.10, "EURUSD")Same Renko logic — a native chart in cTrader, built in code in MT5
cTrader to MT5 conversion means rewriting cTrader’s C# code in MQL5: a cBot becomes an MT5 Expert Advisor and an indicator becomes an MT5 custom indicator. Both platforms usually trade the same forex and CFD symbols, so the market rarely changes — what changes is how trades are sized, how stops are set, how positions are tracked and how the code reacts to new data.
| cTrader feature | In cTrader | In MT5 |
|---|---|---|
| Volume in units | Yes | PartlyConverted to lots — on EURUSD with a 100,000 contract size, 10,000 units = 0.10 lot |
| Stops set in pips | Yes | PartlyConverted to price levels |
| Hedging and netting accounts | Yes | YesBoth account types exist |
| Position events | Yes | YesTrade transaction events |
| Stop-limit orders | Yes | YesA native order type |
| Renko, range and tick charts | Yes | PartlyBuilt in code |
| .NET libraries | Yes | PartlyRewritten in MQL5 or connected through a DLL |
A cBot and an MT5 Expert Advisor automate the same kind of trading, but they size trades, set stops and track positions differently. Converting a cBot keeps its trading rules and rebuilds its trade handling for MT5.
Market and pending orders, modifications and closes are rebuilt as MT5 trade operations, including scaling in, partial closes and exits tied to specific entries.
Positions found by label become positions the EA identifies by magic number. On a hedging account each entry can stay a separate position; on a netting account all deals on a symbol make one shared position, and a magic number doesn’t split it — so the EA keeps its own record of entries where needed. How the EA works alongside other EAs, manual trades and positions already open at start is agreed in advance.
Volume in units is converted to lots with the symbol’s contract size and volume step at your broker, and checked against your risk rules.
Stops and targets set in pips become price levels, converted with the symbol’s pip size and digits and kept within the broker’s stop and freeze distances. cBot stops can trigger on the opposite side of the price or after two consecutive quotes, so stop behaviour is checked, not only the distance.
Logic tied to cTrader’s position events — opened, closed, modified — is rebuilt on MT5’s trade transaction events, where one operation can produce several transactions.
OnBar runs when a new bar appears; OnBarClosed reads the last closed bar, with the forming bar left out — and both wait for the tick that opens the next bar. We check not only how often bar logic runs but which bar it reads and when orders are sent; tick logic runs on MT5’s tick events, and intrabar behaviour is checked.
MT5 Strategy Tester results won’t match cTrader’s backtest exactly: the platforms use different data and model fills differently. We check that entries and exits follow the agreed rules.
Converting a cTrader indicator to MT5 means rebuilding its calculations in MQL5 and how it draws on the chart. We convert standard, custom and multi-timeframe indicators, as well as panels and dashboards.
Outputs become indicator buffers, and colours that change from bar to bar become colour buffers. Any visual differences are agreed in advance.
cTrader series are indexed from the oldest bar; each series is read in MT5’s direction, so values line up bar by bar.
Bars requested from other timeframes or symbols become MT5 data requests, keeping the original’s behaviour — from the forming bar or from confirmed bars only.
Lines, text, shapes and panels drawn on the chart become MT5 chart objects; the look is agreed separately.
Renko, range and tick charts are built in the code itself or on a custom symbol; for cBots, signals come from these bars while orders go to the broker’s real symbol, since custom symbols can’t be traded.
Calls to cTrader’s built-in indicators use MT5’s own where their values match — otherwise we write the calculation — and alerts become MT5 alerts and notifications.
cTrader and MetaTrader 5 size trades, track positions and run code in different ways. These are the differences that decide whether a converted script behaves like the original — and what we do about each of them.
Volume in units
Lots, rounded to the symbol’s volume step
Units are converted with the symbol’s contract size and checked against your risk rules.
Often set as a distance in pips
Price levels, within the broker’s stop and freeze distances
Pip distances are converted to prices with the symbol’s pip size and digits.
Hedging or netting account; positions found by label
Separate positions on a hedging account; one shared position per symbol on a netting account
We map each entry and its exits for your account type, and agree how the EA works alongside other EAs, manual trades and positions already open at start.
Events when positions open, close or change
Trade transaction events, several per trade operation
Reactions to opened, closed and modified positions are rebuilt and checked.
OnBar runs as a new bar opens; OnBarClosed reads the last closed bar; both wait for the next bar’s first tick
An EA reacts to tick events for its chart symbol; ticks that arrive while one is being processed aren’t queued
We match which bar each piece of logic reads — forming or closed — and when orders are sent, and check intrabar behaviour.
Series indexed from the oldest bar
Arrays and buffers that can be indexed in either direction
We check the reading direction for every series, so values line up bar by bar.
Time, tick, Renko, range and Heikin-Ashi charts
Time-based timeframes
Non-time charts are built in code; for EAs, orders go to the broker’s real symbol.
Some things depend on the platform itself: .NET libraries and NuGet packages, which MQL5 can’t load directly and which need rewriting or a 64-bit native DLL wrapper; web requests, which MT5 allows only to addresses you add in its settings and not from indicators or in the Strategy Tester — so an indicator with external data may need a separate component, and a backtest may need data saved in advance; and cTrader Cloud, which has no MT5 equivalent — an EA runs in your terminal or on a VPS. We point these out before work starts and agree the closest MT5 equivalent with you.
A converter or an AI pass can produce MQL5 code quickly. The risk is not the tool but an unchecked result: code can compile and still trade differently, because cTrader and MetaTrader size trades, set stops and index bars differently. We start from how the cTrader version behaves and rebuild it for MT5.
| Automatic conversion | Manual conversion at Nordman Algorithms | |
|---|---|---|
| Starting point | Often the C# code translated, statement by statement | How the cTrader version behaves |
| Platform differences | Often found later, if at all | Identified before work starts and agreed with you |
| Sizes and stops | Units and pip distances copied as they are | Converted to lots and price levels for your MT5 symbol |
Send it to us — we review it and give you a fixed price and timeline before work starts.
We run the cTrader original and the MT5 version on the same symbol and timeframe, with matching trading sessions and bar timestamps, and compare them against acceptance criteria agreed with you:
If something doesn’t match, we find the cause — price data, platform behaviour or the code — and check the result against the agreed specification.
Share the cBot or indicator source — the .cs files or an .algo file saved with source — any libraries it uses and your settings, plus a short description.
You sendSource + dependenciesWe analyse the code, agree your MT5 broker, account type and symbols, and agree settings, acceptance criteria, price and timeline.
You getFixed price + criteriaThe cBot or indicator is rebuilt as an MT5 Expert Advisor or custom indicator, including any extra features you asked for.
We buildThe MT5 versionThe MT5 version is checked against the acceptance criteria agreed in step 2.
We checkValues, signals, tradesBugs and differences from the agreed specification are fixed after delivery.
You get.mq5 + .ex5 filesEvery cBot and indicator is reviewed before we quote. These are the main factors.
How much logic the code contains and how many parts depend on each other.
For cBots: positions, labels, events, scaling and partial closes.
Renko, range or tick charts and data requested from other timeframes or symbols.
Drawings, panels and outputs that change colour.
Each .NET dependency and web request is checked and rewritten or connected another way.
Conversion needs the source. An .algo file saved without source can’t be read, so recreating the cBot from your description is assessed separately.
No. MetaTrader 5 runs MQL5; cTrader’s C# code — the source or an .algo file — has to be rewritten.
Yes. The cBot’s trading rules are kept and its trade handling is rebuilt for MT5 — lots, price levels for stops, positions on your account type and any extra trade management — with sizing and risk agreed with you.
With the symbol’s contract size and volume step at your MT5 broker. On EURUSD with a contract size of 100,000, 10,000 units is 0.10 lot — the contract size is checked for each symbol rather than assumed.
MetaTrader 5 charts use time-based timeframes. Renko, range or tick bars can be built on a custom symbol or in the code itself. Real trades can’t be placed on a custom symbol, so an EA calculates its signals on these bars and places orders on your broker’s real symbol. How this is set up and checked is agreed before work starts.
Usually. MQL5 can’t load .NET libraries directly, so each one is rewritten in MQL5 or connected through a native DLL. Dependencies are checked one by one before work starts.
Not always exactly. Your cTrader broker and your MT5 broker can provide different prices, and some built-in indicators are calculated slightly differently. How closely values must match is agreed before work starts, and any difference is traced to its cause.
Yes, in the MT5 Strategy Tester. Web requests don’t run there, so external data the EA needs is saved in advance where required. Results won’t match cTrader’s backtest exactly — the platforms use different data and model fills differently — so we check that entries and exits follow the agreed rules.
Yes — that’s the reverse route, MT5 to cTrader conversion. The same approach applies, with lots, stops and positions mapped the other way.
It depends on the size of the code, the trade handling, chart types, visual elements and any .NET libraries. After reviewing your cTrader code we give you a fixed price and an estimated timeline before work starts.
Share the cBot or indicator source with the libraries it uses, and a short description of what it should do in MetaTrader 5. We will review it and give you a fixed price and timeline before work starts.