The MT5 Strategy Tester gives you a lot of numbers: profit factor, drawdown, win rate, consecutive losses. What it doesn't tell you is which part of the EA to change. A profit factor of 0.58 says the EA is losing. It doesn't say whether the entries are wrong or the exits are.

So I made a small free tool that reads the Strategy Tester's HTML report and answers that question. It runs in the browser, needs no account, and the report never leaves your machine.

https://app.hawk-backtester.com/en/tools/mt5-report/?utm_source=devto&utm_medium=article&utm_campaign=mt5

The analyser on the sample report

Two kinds of losing trade

Every losing trade belongs somewhere on a line between two cases.

  • It was in profit first. The price moved your way, then came back and hit the stop. The entry was fine; the exit gave it away. Work on the take profit, a trailing stop or moving the stop to break even.
  • It went wrong right away. The price never moved your way. No exit rule would have saved it. Work on the entry: the signal itself, or the market conditions you enter in.

To tell them apart you need each trade's best open profit (MFE) and worst open loss (MAE). The MT5 report doesn't have those, so the tool asks for one more file: a bar CSV exported from MT5 for the same symbol and period. With the bars it walks every trade from entry to exit and records how far it went each way.

On the sample report (a breakout EA on synthetic EURUSD M15 data), 90 of 136 trades lost:

  • 31 had been in profit first, by 0.00204 on average, before losing. Exit problem.
  • 30 were barely ever in profit. Entry problem.
  • 29 were somewhere in between.

That is an even split, which is itself useful: changing only the take profit would address a third of the losses at most.

Is the stop the right size?

The tool also looks at the winners. If 90% of winning trades never went more than 0.00218 against you, a stop at 0.00250 is about right. If the stop were 0.00150, you would see winners being cut off before they could win. If it were 0.00500, you would be paying for room no winner needed.

Where it makes and loses money

With the bars, each trade also gets the market regime just before entry: uptrend, downtrend or range, from ADX(14) on hourly bars. In the sample, ranging markets accounted for 93 trades and -685 of the -965 total. For a breakout EA, that points to a filter rather than a new exit rule.

There are also tables by exit reason, holding time and hour of day, and every finding links to the trades behind it.

How it works

  • The report is UTF-16 HTML with labels in whatever language your terminal uses. The parser finds the deals table by its shape (13 columns, buy/sell and in/out values) rather than by header names, so a Japanese or German report works the same as an English one.
  • Deals are rebuilt into trades first in, first out, so partial closes and reversals become separate trades.
  • The order of prices inside a bar is unknown, so MFE and MAE come from bar highs and lows. On the exit bar they are capped at the stop or target price. M1 or M5 bars are more accurate than M15.
  • Everything runs in plain JavaScript in the page. Nothing is uploaded unless you sign in and choose to save.

Comparing two versions of an EA

If you sign in (free), you can save reports and compare two of them. Trades are matched by side and entry time, so you can see which trades a change actually affected: which ones it saved, which ones it broke, and which were new. When you tweak an EA, the total usually moves a little; the per-trade view shows whether that came from the change you meant to make.

Limits

  • MT5 Strategy Tester HTML reports only. MT4 is not supported yet.
  • Without the bar CSV you get the basic statistics and exit reasons, but not MFE/MAE or regimes.

If you build EAs, I would like to know whether this matches how you debug them, and whether MT4 support would matter to you.

This tool is part of Hawk Backtester, a backtester built around the question of why a rule won or lost. The ideas behind the split are in the guide on MFE and MAE.