How to Copy Trades from MT5 to NinjaTrader 8: Every Way ComparedRead article →In February a trader posted a screenshot of his NinjaTrader performance report and wrote three letters with a question mark: “MAE, MFE, ETD?” (Caesar_Samsi, NinjaTrader forum, Feb 2026). That was the whole post. He had the columns on his screen and no idea what they were telling him.
He isn’t the only one. A year earlier another trader asked the same thing about the same report: “Is there an explanation of MAE, MFE, ETD and bars somewhere?” (James_Archer, NinjaTrader forum, Jun 2025). One reply told him to ask an AI assistant, which is fair enough for a definition. The next day he came back with the real answer: “I didn’t realize that NT staff no longer participates here. I opened a case and they explained.”
So the numbers are already on your screen and the definitions are a search away. What nobody hands you is the part that matters: what to do with them. In this article I’ll show you what the tracker measures after every signal and how the ratio on the dashboard is actually built. Then how to read it across holding periods, and the six things it ignores on purpose. By the end you’ll know which decisions this number can support and which it can’t.
A signal fires. Price moves. Some of that movement goes your way and some goes against you. By the time you look back at the chart, all you remember is where price ended up.
That gap is what the tracker fills. It records how far price swung in each direction after every signal, for every holding period you enable. Most indicators tell you when a signal happened. This module tells you what happened next, in numbers instead of impressions.
None of this replaces a backtest or live testing. It is a diagnostic layer. It tells you what price did around your signal, so your decisions about targets, stops and holding time start from observed behaviour.
MFE, Maximum Favourable Excursion, is the largest move price made in the direction of your signal before the observation ended. It is the best unrealised outcome that signal produced.
MAE, Maximum Adverse Excursion, is the largest move against your signal over the same period. It is the worst drawdown you would have sat through.
Both are measured from one reference point: the close of the bar where the signal is confirmed. Together they describe the whole range price travelled, not just where it finished.
MFE/MAE Ratio = MFE ÷ MAE for a single observation. Above 1, the favourable move was bigger than the adverse one. Below 1, the opposite. The dashboard then takes the median of those individual ratios across every completed observation. That is not the same as dividing one median by another, and the Dashboard section below explains why the difference matters to you.
Every observation uses the close of the confirmed signal bar as its entry price. MFE, MAE and the ratio are all measured against that one fixed value. It does not move as the observation runs.
Once an observation starts, the tracker follows price on every bar after it. The precision is minute or tick, depending on your Calculation Precision setting. The signal bar’s own high and low are left out, because they happened before the entry price existed.
Both values update on the same pass through the same price data. MFE and MAE are two sides of one tracked range, not two separate calculations.
Internally, once an observation closes:
MAE is always a positive distance, whichever direction you traded. It is the size of the adverse move, not a signed loss. Those raw distances stay internal. The dashboard and the CSV show you the ratio they produce, not the distances themselves.
Using each bar’s high and low catches the extremes inside the bar. A signal is often followed by a sharp move that reverses before the bar closes. If the tracker only checked closing prices, that excursion would never be recorded, even though you lived through it.
Calculation Precision changes something else. Minute precision reads the high and low of the one-minute bar, which already covers the full range inside it. Tick precision rarely pushes MFE or MAE further. What it buys you is exact timing: cleaner observation boundaries and the right order of events. That matters for periods shorter than a minute, and for signals that land mid-bar.
Each time the indicator produces a signal, the tracker opens a separate observation for every period you enabled. They run in parallel from the same entry. This is not one observation checked at intervals.
Its own observation, its own MFE and MAE.
Not an extension of the 30-minute one.
Runs alongside both, from the same signal.
Closes on the next opposing signal instead.
This is why the numbers across your columns don’t add up to each other. A signal can look strong at 30 minutes and weak at four hours, or the other way round. Both readings are true. They describe the same signal at different horizons.
The same independence applies across bars. If a new signal appears while observations from an earlier one are still running, both sets carry on separately. Nothing is merged or restarted. Within a single bar, though, you get one set of observations per direction. A repeated signal on that same bar does not open another.
The tracker has its own group in the indicator’s parameters panel. Here is what each field does, in the order you’ll meet them.
| Setting | What it does |
|---|---|
| Enable Tracker | Turns the module on or off. With it off, no observations are created and no table is drawn. |
| Enable Opposite Signal | Adds one more observation per signal. It closes on the next opposing signal instead of after a fixed period. |
| Calculation Precision | Minute or Tick. Tick gives exact boundaries and keeps the order of events inside a bar. Minute is lighter on your machine. How far back tick data goes depends on your data provider, and it is usually shorter than minute history. |
| Period 1–4 | Up to four independent windows. Each has Enable, a Type of Seconds, Minutes or Days, and a duration for that type. |
| Track Long / Track Short Signals | Which direction the tracker follows. Switching one off stops observations for that side only. |
| Table Width (%) / Table Font Size | How big the dashboard table is drawn on your chart. |
Period duration is calendar time, not market time. A one-day period that starts late on a Friday reaches its end during the weekend. There is no price to check then, so the observation closes on the first price update after the market reopens. On Minute precision, a period shorter than a minute closes on the next minute update rather than at the exact second. For sub-minute periods, use Tick precision.
With the tracker enabled, a table appears on your chart with the aggregated result of every completed observation.
It has two rows, Long MFE/MAE Ratio and Short MFE/MAE Ratio, filled independently according to your Track Long and Track Short settings. Each column is one enabled period, plus an Opposite Signal column if you turned it on. Disabled periods don’t get a column.
Every cell holds the median ratio for that direction and period, colour-coded so you can read it at a glance.
The calculation is cumulative. There is no rolling window and no time limit. Every completed observation is added and stays, from whatever chart history was loaded when you started the tracker through everything that happens live afterwards, until you change a setting.
How the ratio is calculated:
Ratio = Median(MFE₁/MAE₁, MFE₂/MAE₂, …, MFEₙ/MAEₙ)
Each completed observation gets its own ratio first. Only then does the tracker take the median of those ratios. Dividing a median MFE by a median MAE would give you a different number. Doing it this way keeps one extreme observation from dragging the whole figure, which an arithmetic mean would not. If an observation had no adverse movement at all, an internal epsilon stands in for zero, so the ratio stays a very large finite number instead of breaking. Those observations still count. In the rare case where price didn’t move either way, the ratio comes out as zero.
Export. A small control next to the table writes the current results to a CSV. You get the same ratios you see, for all periods and both directions, plus a full dump of the indicator’s settings at that moment. The underlying distances and the individual observations are not included. The file mirrors your dashboard, not the raw data behind it.
A median above 1 means that, across the observations measured, favourable movement after your signal tended to be larger than adverse movement. That is a description of how price behaves around the signal. It says nothing about your entry timing, your exits, your position management or your costs, and those decide whether the movement ever reaches your account.
Here is the honest version of what this number is. It does not tell you whether a signal is profitable. It tells you how much you had to sit through before the move went your way. Those are different questions, and only the second one is measured here.
Looking along one row shows you how the balance shifts with time. Strong at 30 minutes and weaker at four hours suggests the good part happens early. Stronger at the longer periods suggests it builds. Neither result hands you an optimal holding time, and both are worth testing before you change how long you hold.
The two rows are tracked separately and often disagree. A signal that behaves well long is not guaranteed to behave the same way short. Check both rows before you treat your signal as symmetric.
This column measures price from your signal until the indicator produces one in the other direction, rather than over a fixed window. When that opposite signal arrives, it closes every active Opposite Signal observation on the side it replaces. Your fixed periods are untouched and keep running on their own clock.
The ratio will not give you a distance. It shows the balance between favourable and adverse movement, not how large either was in ticks. What you can take from it is relative: whether a longer hold tends to help or hurt, and whether long and short differ enough to treat separately. Sizing the actual target and stop still comes from your own read of the instrument you trade.
A ratio built on a handful of observations deserves less weight than one built on hundreds. There is a catch here worth knowing. Neither the dashboard nor the CSV shows how many observations are behind a figure, so you have to judge that from how long the tracker has been running.
The cumulative design has the same edge. Nothing ages out, so last month’s signals and this morning’s sit in the same median. Values also belong to the instrument, the loaded history and the settings that produced them, precision included. Two charts with different setups are not comparable, however similar the numbers look.
The tracker measures how price moved after a signal. It does not simulate a trade. Six things it leaves out, deliberately.
So read the ratio as a description of price behaviour after your signal, useful for comparing signals, periods and directions against each other. It is not a projection of what your strategy, with its own entries, exits and risk rules, would have made.
One thing you can do this week: run the tracker on the signal you already trade, with your usual holding time as one period and double that as another. If the second column is the better one, your exits are early. That is a question the chart alone was never going to answer.
The module ships inside the Nordman indicators that produce signals, including the Liquidity Sweeps Indicator and the CVD Trapped Traders Indicator. The settings and the dashboard are identical wherever you find it. Need this logic wired into your own strategy? We develop NinjaScript to order → NinjaTrader developers
Yes. Every enabled period, up to four plus Opposite Signal, starts its own observation the moment a signal appears. They all run in parallel and none of them share data.
On a different bar, both sets continue independently. A new signal in the same direction doesn’t cancel, restart or merge anything. On the same bar you get one set per direction, and a repeated signal there adds nothing.
Nothing has completed yet for that direction and period. Expect it on longer periods soon after you enable the tracker, and on signals that fire rarely.
Yes. It processes the signals inside the history loaded on your chart. How far back that goes depends on your loaded data, and on tick precision it depends on how much tick history your provider keeps.
Because it only compares favourable movement with adverse movement after a signal. Whether a real position captures that movement depends on your entry timing, your exit rules, commission, slippage and spread.
No. Only completed ones count towards the median. Active observations keep updating internally and change nothing on screen until they close.
The tracker recalculates from scratch with the new settings. Results from before the change are not mixed into the new figures.
This article describes how the MFE/MAE Tracker module is calculated and displayed. It is provided for informational purposes and does not constitute trading advice. The MFE/MAE Ratio reflects historical price behaviour around signals and does not account for commission, slippage, spread or real order execution, as set out under Limitations above. Forum quotations are reproduced verbatim from public threads for illustration and do not constitute endorsement. Past price behaviour is not indicative of future results. Trading leveraged instruments carries a high level of risk and may not be suitable for all investors. Full Risk Disclosure