Entries & Exits
Entry, exit and close rules are rebuilt with NinjaScript order methods — the managed approach, or the unmanaged one where the logic needs it — including scaling in, partial exits and reversals.
We rewrite MT4 Expert Advisors as NinjaTrader strategies and MT4 indicators as NinjaScript indicators — and if the instrument changes too, we adapt sizes, price distances and sessions. The result is checked against criteria agreed with you.
iMA(NULL, 0, 21, 0, MODE_EMA, PRICE_CLOSE, i)EMA(Close, 21)[0]SetIndexBuffer(0, EmaBuffer)AddPlot(Brushes.DodgerBlue, "EMA")iMA(NULL, PERIOD_H1, 21, …, shift)AddDataSeries(BarsPeriodType.Minute, 60)OrderSend(Symbol(), OP_BUY, lots, Ask, …)EnterLong(qty, "L")Same logic, rebuilt for NinjaTrader 8 · example: US100 CFD → NQ futures
MT4 to NinjaTrader conversion means rewriting MQL4 code in NinjaScript, NinjaTrader’s C#-based language: an Expert Advisor becomes a NinjaTrader strategy and an indicator becomes a NinjaScript indicator. The move can keep the same market or change it — for example from a CFD to a futures contract. If the instrument changes, trade sizes, price distances, sessions and rollover are adapted as well.
An MT4 Expert Advisor and a NinjaTrader strategy automate the same kind of trading, but they work with different instruments, sizes and positions. Converting an EA keeps its trading rules and rebuilds the trade handling for NinjaTrader.
Entry, exit and close rules are rebuilt with NinjaScript order methods — the managed approach, or the unmanaged one where the logic needs it — including scaling in, partial exits and reversals.
Each MT4 symbol is matched to a NinjaTrader instrument. If the instrument changes — for example from a CFD to a futures contract — the strategy is adapted to its tick size, tick value and contract months.
Lot-based sizing becomes the quantity the NinjaTrader instrument uses — contracts, units or shares — and is checked against your risk rules.
Each MT4 trade becomes an entry inside the strategy’s own position, with its exits tied to it. NinjaTrader tracks the strategy’s position separately from the account’s, so how it runs alongside other strategies and manual trades — and what it does if a position is already open at start — is agreed in advance.
Protective orders are set in ticks or prices through NinjaScript — or an ATM strategy. An ATM version is checked on simulation or Playback: ATM strategies don’t run in backtests.
Trading hours templates are set up for the instrument you trade, and contract rollover for futures.
Strategy Analyzer results won’t match the MT4 Strategy Tester exactly: the platforms use different data — sometimes for a different instrument — and model fills differently. We check that entries and exits follow the agreed rules.
Converting an MT4 indicator to NinjaTrader means rebuilding its calculations in NinjaScript and how it draws on the chart. We convert standard, custom and multi-timeframe indicators, as well as panels and dashboards.
Calculations are rebuilt in NinjaScript; buffers become plots, and fills, shapes and labels use drawing tools or custom rendering. Any visual differences are agreed in advance.
Calls to other custom indicators through iCustom are rebuilt in NinjaScript as well, so we need their source too.
Calls to built-in indicators use NinjaTrader’s own versions where their values match; where the platforms calculate differently, we write the calculation ourselves.
If you need the indicator on tick, volume, range or Renko bars, that is agreed and checked — logic tied to minutes or session boundaries may need adapting.
Alert conditions become NinjaTrader alerts with sound, and other notifications where needed.
New settings or functions, several indicators combined into one, or the indicator turned into a strategy.
MetaTrader 4 and NinjaTrader trade different instruments and handle 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.
Forex, CFDs, stocks or futures from your MT4 broker
Futures, forex or stocks from your NinjaTrader connection
If the instrument changes, we agree which one replaces each MT4 symbol and adapt sizes, price distances and sessions.
Lots
Contracts, units or shares
Sizes are recalculated for the NinjaTrader instrument and checked against your risk rules.
Several separate order tickets at once
The strategy’s own position, tracked separately from the account’s overall position
We map each entry and its exits, and agree how the strategy works alongside other strategies, manual trades and positions already open at start.
Your MT4 broker’s server time and sessions
The trading hours template, such as RTH or ETH, and the platform time zone
We compare sessions, bar timestamps and the time zone each version’s logic uses — matching chart clocks alone isn’t enough.
Indicators and EAs react to new ticks; the exact behaviour depends on the code
Calculation mode is set per script; on history, bars are processed on close unless intrabar data is added
The calculation mode, the historical data and the way intrabar signals are checked are chosen to match the original’s logic.
MetaTrader’s own calculation
NinjaTrader’s own calculation, which can differ in details
We compare the values and use our own calculation where the two platforms differ.
Read directly from any timeframe
Added as extra data series and processed bar by bar
Values from other timeframes are aligned with the chart’s bars, as in the original.
Some things depend on the platform itself: symbols with no matching NinjaTrader instrument; DLLs and libraries the code uses, which are checked one by one — NinjaScript can use .NET libraries, others need a replacement; and tester settings specific to MetaTrader. We point these out before work starts and agree the closest NinjaTrader equivalent with you.
A converter or an AI pass can produce NinjaScript quickly. The risk is not the tool but an unchecked result: code can compile and still trade differently, because MetaTrader and NinjaTrader work with different instruments, sizes and positions. We start from how the MT4 version behaves and rebuild it for NinjaTrader.
| Automatic conversion | Manual conversion at Nordman Algorithms | |
|---|---|---|
| Starting point | Often the MQL syntax, statement by statement | How the MT4 version behaves |
| Platform differences | Often found later, if at all | Identified before work starts and agreed with you |
| Instruments and sizes | MT4 symbols and lots copied as they are | Matched to the NinjaTrader instrument, adapted if the market changes |
Send it to us — we review it and give you a fixed price and timeline before work starts.
We run the MT4 original and the NinjaTrader version on the same timeframe, with matching trading sessions and bar timestamps, and compare them against acceptance criteria agreed with you:
If the instrument stays the same, we compare values and signal timing directly. If it changes — say, from a CFD to a futures contract — the data differ, so we check that the agreed rules are followed and the risk is recalculated correctly, rather than expecting identical values or trades. If something doesn’t match, we find the cause — price data, platform behaviour or the code.
Share the .mq4 source with its .mqh include files, the source of any custom indicators it calls and your .set file if you have one — plus a short description.
You sendSource + dependenciesWe analyse the code, agree the NinjaTrader instrument and sessions — the same market or a new one — and agree settings, acceptance criteria, price and timeline.
You getFixed price + criteriaThe EA or indicator is rebuilt as a NinjaScript strategy or indicator, including any extra features you asked for.
We buildThe NinjaTrader versionThe NinjaTrader 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 getSource + files to runEvery EA 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 EAs: how orders, positions, stops, scaling and partial exits are managed.
Which NinjaTrader instruments the strategy will trade — the same market or a new one — and the sessions and rollover they need.
Objects, panels and dashboards drawn on the chart.
Each dependency is checked: whether it can be used in NinjaTrader as it is or needs a replacement.
Conversion needs the .mq4 source. Without it, recreating the EA or indicator from your description is assessed separately.
If your EA already works in MetaTrader 4 and you want its trades on a NinjaTrader account, you may not need a conversion at all.
Copies trades from your MetaTrader 4 account to NinjaTrader. Your EA keeps running in MT4.
No. NinjaTrader runs NinjaScript, written in C#; MQL4 code — .mq4 or .ex4 — has to be rewritten.
Yes. The EA’s trading rules are kept and its trade handling is rebuilt for NinjaTrader — instrument, contract sizes, protective orders and position handling — with sizing and risk agreed with you.
If its logic suits the new instrument, yes. Sizes, price distances, trading sessions and contract rollover are adapted, and how the strategy behaves on the futures contract is checked against the agreed rules — a different market can give different results. If you stay on the same market, none of this is needed.
On the same market, values can come close but not always match exactly: your MT4 broker and your NinjaTrader connection provide different prices, and some built-in indicators are calculated slightly differently. If the instrument changes, identical values aren’t the goal — we check that the agreed rules are followed and the risk is recalculated correctly.
Yes, when trade management is written in the strategy’s own code: it then runs in NinjaTrader’s Strategy Analyzer for backtesting and optimisation. ATM strategies don’t run in backtests, so an ATM version is checked on a simulation account or in Playback.
Conversion needs the .mq4 source code. Without it, we can assess recreating the EA or indicator from your description, settings and examples of how it behaves — but an exact match with the original can’t be promised in advance.
No. Our developers write the NinjaScript version themselves, based on how the MT4 version behaves.
Yes. NinjaScript strategies and indicators can be rewritten in MQL4; parts that rely on NinjaTrader-only features, such as ATM strategies or futures-specific logic, are agreed before work starts. See our NinjaTrader to MT4 conversion page.
It depends on the size of the code, the trade handling, the instruments and sessions involved and any external libraries. After reviewing your .mq4 code we give you a fixed price and an estimated timeline before work starts.
Share the .mq4 source code with its include files and the custom indicators it uses, and a short description of what it does and which instrument it should trade in NinjaTrader. We will review it and give you a fixed price and timeline before work starts.