Learn

How to Read an MT5 Strategy Tester Report

At a glance

To read an MT5 Strategy Tester report, start with History Quality and the number of trades, then read net profit, drawdown and profit factor in that order. Most figures are sums over the deal list at the end of the report: we recomputed 33 figures of a real report with 646 trades on EURUSD M15 from its 1,292 deals, and all 33 matched. In this report Gross Profit and Gross Loss already contain commission, the profit factor of 0.94 divides the two, the Recovery Factor uses the equity drawdown, and the balance graph counts deals, not dates. History Quality reads 18% real ticks, so most of this test ran on generated ticks.

On this page
The RoboXpert robot studies a long paper strip with a blue zigzag line through a magnifying glass; the strip comes out of a small white machine. Headline: “Read the test report”
AI-generated illustration with a headline added by RoboXpert. Not a platform screenshot or a trading result.

An MT5 Strategy Tester report prints about fifty figures. This guide goes through a real one and shows where each figure comes from, which ones to read first and what the report leaves out.

The report is from our own backtest: the range-breakout Expert Advisor from our guide on building an MT5 EA with AI, tested on EURUSD M15 from 1 January 2024 to 30 September 2026. The strategy lost money. That makes it a useful example, because a losing report cannot be mistaken for an advertisement.

We did one thing most explanations skip. We took the deal list at the bottom of the report and recomputed the summary figures from it. 33 figures could be rebuilt from the deals, and all 33 match the report. The script and the original report are in the download.

Disclosure: RoboXpert develops trading software. The test ran on 2 October 2026 in MetaTrader 5 build 6230 on a demo server. The figures describe one backtest of one teaching example. They are not a forecast and not a recommendation. AI assisted with research, calculation and drafting. See our editorial methodology.

The MT5 Strategy Tester report in one picture

This is the “Results” block of the report, exactly as MetaTrader saved it. Every section below refers back to it.

Results block of an MT5 Strategy Tester report: History Quality 18% real ticks, Total Net Profit −1,562.18, Gross Profit 22,878.09, Gross Loss −24,440.27, Profit Factor 0.94, Recovery Factor −0.49, Balance Drawdown Maximal 3,134.73 (30.62%), Equity Drawdown Maximal 3,202.08 (31.21%), Total Trades 646, Total Deals 1,292.
Original MT5 report of 2 October 2026, saved as HTML and photographed in a browser. Nothing was edited.

The table gives a reading order for the block and the question each step answers:

Scroll horizontally if needed

StepLinesQuestion it answers
1History Quality, Bars, TicksHow much of the test ran on real tick data?
2Total Trades, Total DealsIs the sample large enough to say anything?
3Total Net Profit, Gross Profit, Gross LossWhat was left after costs, and from which two sums?
4Balance and Equity DrawdownHow deep did the account fall on the way?
5Profit Factor, Recovery Factor, Expected PayoffHow do profit, loss and drawdown relate?
6ChartsWhen did trades happen, and how were they closed?

The remaining lines are refinements of these six. A report that looks good in step 3 but fails step 1 or 2 has not shown much.

Read the settings and History Quality first

The top of the report repeats the test conditions. Check them before any result, because the same EA produces a different report with other inputs, another period or another broker’s price history.

Settings block of the MT5 report: Expert RX_Range_Breakout, Symbol EURUSD, Period M15 from 2024.01.01 to 2026.09.30, all input values, Company Capital Point Trading Ltd, Currency USD, Initial Deposit 10,000.00, Leverage 1:100.
Original MT5 report, settings block. The inputs are the ones fixed in the prompt of the AI guide; they were not optimised.

The table lists the lines to check in this block and why each one changes what the results mean:

Scroll horizontally if needed

LineIn this reportWhy it matters
Expert, InputsRX_Range_Breakout with all input valuesA result belongs to one set of inputs. Another set is another test.
Symbol, PeriodEURUSD, M15, 2024.01.01 to 2026.09.30The report covers 33 months and one symbol.
CompanyCapital Point Trading LtdPrice history, spread and commission come from this server.
Initial Deposit, Leverage10,000.00 USD, 1:100All percentages in the report refer to this starting amount.
History Quality18% real ticksOnly this share of the test used recorded ticks.

History Quality deserves the first look. Our test mode was “Every tick based on real ticks”. The demo server supplied real ticks from 1 April 2026 only. For the 27 months before that, the tester generated ticks from minute bars, which MetaQuotes documents in its help on real and generated ticks as the fallback when tick data is missing. Our glossary explains real ticks and the five test modes.

The printed value and the help text do not use the same words. The MetaTrader 5 help defines History Quality as “a percentage ratio of correct and incorrect one-minute data”. Our report prints “18% real ticks”. Six of the 33 tested months had real ticks, which is 18%. Take the line as it is printed in your own report and check the tester journal for the date from which real ticks were available.

A strategy that depends on a few points of spread, such as a scalper, can look very different between generated and real ticks. Our example trades once a day with stops of a few hundred points, so the effect is smaller, but the limit still belongs next to every figure quoted from this report.

How a deal becomes a figure

The summary is built from the Deals table at the end of the report. A deal is one execution. A position that is opened and closed once produces two deals: an entry (“in”) and an exit (“out”).

First rows of the Deals table of the MT5 report with the columns Time, Deal, Symbol, Type, Direction, Volume, Price, Order, Commission, Swap, Profit, Balance and Comment. Deal 1 is the deposit of 10,000.00. Deal 2 is a sell entry with commission −1.23, deal 3 the buy exit with commission −1.23 and profit 148.05.
Original MT5 report, first rows of the deal list. Each deal carries its own commission, swap and profit.

We read all 1,292 deals with a short Python script and rebuilt the summary. The table shows, by group, which figures we recomputed and how many of them equal the printed value:

Scroll horizontally if needed

GroupFigures recomputedResult
ProfitTotal Net Profit, Gross Profit, Gross Loss, Profit Factor, Expected Payoff, Recovery Factor6 of 6 match
TradesTotal Trades, Total Deals, profit and loss trades, short and long trades, largest and average trade10 of 10 match
StreaksSix lines on consecutive wins and losses6 of 6 match
Balance drawdownAbsolute, Maximal, Relative3 of 3 match
StatisticsAHPR, GHPR, Z-Score, LR Correlation, LR Standard Error5 of 5 match
Holding timeMinimal, maximal, average3 of 3 match

On the first run 31 of the 33 matched. Two needed a second attempt, and both are noted in the script: the report shows the more profitable of two equally long win streaks, and the percentage beside the Z-Score is calculated from the rounded value.

Ten lines cannot be rebuilt from the deal list because they need the price path between entry and exit: the three equity drawdown figures, Margin Level, the three MFE and MAE correlations, History Quality, Bars and Ticks. We did not attempt the Sharpe Ratio.

The recomputation shows one rule that the help page does not spell out. In this report every deal is sorted on its own. The first position of the run makes it visible:

Diagram of the first position of the report. The entry deal has profit 0.00 and commission −1.23; this −1.23 is added to Gross Loss and is not counted as a trade. The exit deal has profit 148.05 and commission −1.23; the result +146.82 is added to Gross Profit and counted as one profit trade.
Original graphic by RoboXpert from the deal list of the report. Amounts in USD.

The entry deal has no profit, only its commission. That commission goes to Gross Loss. The exit deal carries the price result minus its own commission, and that amount goes to Gross Profit or Gross Loss. This rule explains every figure in the next section.

Profit factor, gross profit and gross loss

The profit factor is Gross Profit divided by Gross Loss. The MetaTrader 5 help defines it as the “ratio of the gross profit to the gross loss. A value of one means that these parameters are equal.” Here: 22,878.09 ÷ 24,440.27 = 0.94. Below 1, the losing side was larger.

Two bars. Gross Profit 22,878.09 from 286 winning exit deals. Gross Loss 24,440.27, made of 23,663.12 from 360 losing exit deals plus 777.15 commission of the 646 entry deals. Profit Factor 22,878.09 divided by 24,440.27 equals 0.94.
Original graphic by RoboXpert, rebuilt from the 1,292 deals of the report. Amounts in USD.

Three things follow from the way the two sums are built.

“Gross” does not mean “before costs”. Both sums already contain commission. In this report the price movement of all 646 positions adds up to −7.88 USD, almost exactly zero. The commission of 1,554.30 USD produced the loss of 1,562.18 USD. You cannot see that split in the summary. It is only in the Commission column of the deal list.

Average loss times loss trades is not Gross Loss. The report shows an average loss trade of −65.73 and 360 loss trades. That gives 23,663.12, not 24,440.27. The difference of 777.15 is the commission of the entry deals, which sits in Gross Loss without being a trade.

The number of winners depends on where the commission is counted. The same 646 positions give three counts:

Scroll horizontally if needed

Counting ruleWinners
Price result only, no commission288
Exit deal with its own commission, as the report counts286
Both commissions of the position285

The differences are small here because the commission per position is small against the average trade. With a strategy that takes a few points per trade, they grow.

There is no profit factor that makes a strategy good. The value depends on the number of trades, the test period and the costs set in the tester. A profit factor of 2 from 30 trades says less than 1.2 from 2,000. Our guide on how much spread a strategy can survive shows how quickly the value moves when costs change.

Balance drawdown and equity drawdown

The report prints three drawdown figures for the balance and the same three for equity. They measure different distances on the same line.

Balance after each of the 1,292 deals. The line starts at 10,000, reaches its highest value of 10,236.76 at deal 9, falls to its lowest value of 7,102.03 at deal 644 and ends at 8,437.82. Absolute drawdown 2,897.97 is measured from the initial deposit to the lowest value. Maximal drawdown 3,134.73 is measured from the highest value to the lowest value, which is 30.62% of the highest value.
Original graphic by RoboXpert from the Balance column of the deal list. The three figures match the report.

The table sets the formula from the MetaTrader 5 help beside the calculation with the numbers of this report:

Scroll horizontally if needed

LineMetaQuotes formulaIn this report
Balance Drawdown AbsoluteInitial deposit minus the lowest balance10,000 − 7,102.03 = 2,897.97
Balance Drawdown MaximalLargest fall in money from a high to the next low10,236.76 − 7,102.03 = 3,134.73
Balance Drawdown RelativeLargest fall in percent of the high it started from3,134.73 ÷ 10,236.76 = 30.62%

Maximal and Relative describe the same fall here. That is not always so. An account that grows first can have its largest fall in money late, at a high balance, and its largest fall in percent early, at a low balance. Then the two lines show different falls, and each prints the other unit in brackets.

Absolute drawdown is the weakest of the three. It only measures how far the balance went below the starting amount. A strategy that doubles the account and then loses half of it shows an absolute drawdown of zero.

Equity drawdown is the one that counts for risk. Balance changes only when a deal is executed. Equity also contains the open position. In this report equity drawdown is 3,202.08 (31.21%), slightly above the balance figure, because each position has a fixed stop and is closed the same day. For a grid or martingale EA that holds losing positions open, the two can be far apart. Our guide on equity drawdown vs balance drawdown shows that case.

Two details are easy to miss. The lowest balance of this run, 7,102.03, was reached at an entry deal: the commission of a new position pushed the balance to its low. And the balance graph in the report has no dates:

Balance graph from the MT5 report. The horizontal axis runs from 0 to about 1,290, the vertical axis from 6,945 to above 10,106. The line falls steeply over the first 160 deals, moves sideways between about 7,000 and 8,200 and ends near 8,400.
Original image from the MT5 report. The horizontal axis counts deals, not days.

The horizontal axis counts deals. The steep fall at the start covers the first 80 positions, which took about four months. A strategy that trades in bursts looks smooth on this axis even when it stood still for months. Compare the graph with the dates in the deal list.

Recovery factor, expected payoff and the other ratios

Recovery Factor is net profit divided by maximal drawdown. The MetaTrader 5 help describes it as “the ratio of gained profit to the maximum drawdown” and does not say which drawdown. In this report it is the equity drawdown: −1,562.18 ÷ 3,202.08 = −0.49. With the balance drawdown the result would be −0.50. A negative value simply repeats that the test lost money.

Expected Payoff is net profit divided by the number of trades: −1,562.18 ÷ 646 = −2.42 USD per trade. It is an average over this test. It scales with the lot size, so it cannot be compared between tests with different deposits or risk settings.

The remaining ratio lines of the block, with the value in this report and what each one measures:

Scroll horizontally if needed

LineIn this reportWhat it is
AHPR0.9998 (−0.02%)Average balance change per trade, arithmetic mean
GHPR0.9997 (−0.03%)The same as geometric mean: final balance ÷ deposit, 646th root
LR Correlation−0.29How closely the balance follows a straight line; the sign follows the slope
LR Standard Error561.75Average distance of the balance from that line, in USD
Z-Score0.94 (65.28%)Whether wins and losses come in more or fewer streaks than chance would give
Sharpe Ratio−1.52Return against its variation; negative for a losing test
Margin Level852.05%The lowest margin level reached during the test

GHPR is the more honest of the first two because it follows from the start and end balance alone. An LR Correlation near 1 means a steadily rising balance. Ours is weak and negative: the balance fell, but not along a line.

The Z-Score answers one question: do losses follow losses more often than chance? The same help page sets the mark at 3: “A value above 3 indicates that a win will be followed by a loss with the probability of 3 sigma (99.67%).” At 0.94 this report shows no such pattern. That matters for anyone who wants to raise the lot size after a loss: the data here gives no reason for it.

For the Sharpe Ratio the help page gives its own reading: below 0 the strategy is unprofitable, between 0 and 1 “the risk does not pay off”, from 1 it “can mean that the risk pays off”. We did not recompute this value.

Margin Level shows how close the test came to a margin call. At 852% this run was far away. A value near your broker’s stop-out level means the backtest survived by a small distance.

Trade counts and streaks

Total Deals is twice Total Trades in this report: 1,292 deals, 646 trades. A trade is a closed position; each one has an entry deal and an exit deal. An EA that closes positions in parts or adds to them produces more deals per trade.

The win rate is 44.27%: 286 profit trades against 360 loss trades. With an average win of 79.99 and an average loss of 65.73, that is not enough. The break-even win rate for these two averages is about 45%, before the entry commission. A win rate means nothing without the size of the average win and loss beside it.

Short and long trades are listed with their own win rates: 305 short (45.25% won), 341 long (43.40% won). A large gap between the two would suggest that the result depends on one market direction during the test period. Here both sides lost.

The streak lines come in pairs that look alike and measure different things:

Scroll horizontally if needed

LineReads asIn this report
Maximum consecutive wins ($)The longest win streak, and its total8 trades (665.54)
Maximal consecutive profit (count)The most profitable win streak, and its length665.54 (8 trades)
Maximum consecutive losses ($)The longest loss streak, and its total8 trades (−491.32)
Maximal consecutive loss (count)The most expensive loss streak, and its length−491.32 (8 trades)

In this report both pairs point to the same streak. They can differ: three large losses in a row can cost more than eight small ones. For position sizing the second pair matters more. The longest loss streak of a backtest is also not a limit. A longer test period usually contains a longer streak.

The charts below the numbers

The report ends with four images. They are worth a minute each, because they show things the summary averages away.

Six bar charts from the MT5 report. Entries by hours: all entries between 8 and 16, most at 8 and 9. Entries by weekdays: Monday to Friday about equal. Entries by months: October to December clearly lower than the other months. Profits and losses by hours, weekdays and months as blue and red bars; the largest bars by hour are at 14 and 21.
Original image from the MT5 report. Top row: entry deals. Bottom row: profits (blue) and losses (red) of the exit deals.

Entries by hours is a quick check of the rule. Our EA may only enter after a bar that opens between 08:00 and 16:00 server time. The chart shows entries from hour 8 to hour 16 and none outside. An entry at 03:00 would have meant a bug.

Entries by months shows fewer trades from October to December. That is the test period, not the strategy: the test covers January to September three times and October to December twice. Any chart by month or weekday needs this check before it is read as a seasonal pattern.

Profits and losses by hours counts exit deals. The tall bars at hour 21 are the time exit: 230 of the 646 positions were closed at 21:00 because neither stop nor target was hit.

Two scatter plots from the MT5 report. Top: profit against MFE, with a dense horizontal band of points near −84 and a line of points between MFE 105 and 126. Bottom: profit against MAE, with a dense line of points on the left where the loss equals the MAE and a cloud of points above it, plus a regression line.
Original image from the MT5 report. Each point is one position; both axes are in USD.

MFE (Maximum Favorable Excursion) is the largest open profit a position had before it closed. MAE (Maximum Adverse Excursion) is its largest open loss. Each point is one position.

In the upper chart the horizontal band near −84 are positions that ended at the stop. Many of them had been 40 or 60 USD in profit first. The short diagonal line on the right are positions that reached the target: their result equals their best moment. In the lower chart the points on the line at the left are the stop-outs, where the final loss equals the worst moment. The cloud above the line are positions that came back from a loss.

The three correlation lines in the summary (0.84, 0.80 and 0.61 here) compress these pictures into one number each. The pictures say more. A strategy without a stop shows a lower chart with points far to the left that closed in profit: positions that were held through a deep loss.

What the report cannot tell you

  • It describes one set of inputs on one price history. Another broker has other spreads, other commission and another server time. The same EA produces another report there.
  • It contains the costs that were set in the tester, and no others. This run used the server’s commission and spread and no execution delay. Slippage on a live account is not in it.
  • It does not show how the inputs were found. A report from the best of 5,000 optimisation passes looks the same as a report from inputs fixed in advance. Ours were fixed before the first test and not changed.
  • It does not separate periods. One good year can carry two bad ones. In this run 2024 lost 2,490 USD, 2025 was flat and the first nine months of 2026 gained 982 USD. The summary shows only the sum.
  • It is not a forecast. A backtest shows that rules were followed on past data. Our guide on backtest vs live trading explains the steps between a report and a funded account.

Check your own backtest report

  1. Save the report as a file, so that the deal list is included. We set Report= in the tester start configuration; MetaTrader then writes an HTML file with four images.
  2. Read History Quality and compare the tested period with the date from which your broker supplies real ticks.
  3. Count the trades. Below a few hundred, treat every ratio as a rough indication.
  4. Read Total Net Profit together with the Commission and Swap columns of the deal list. Add both columns up.
  5. Read Equity Drawdown Maximal and Relative. Ask whether you would have kept the EA running through that fall.
  6. Compare the balance graph with the dates in the deal list.
  7. Split the result by year. The deal list has the dates and the balance.
  8. Check the entry charts against the rule the EA is supposed to follow.

The download contains our report and the script. Run it on your own HTML report to see whether your build sorts deals the same way. The script expects one entry and one exit per position and stops with a message if a position was closed in parts.

Download report and script (ZIP). The original MT5 report as HTML with its four chart images, the Python script, its output and checksums. No executable, no account data.

Frequently asked questions

What is a good profit factor in the MT5 Strategy Tester?

There is no fixed mark. Above 1, gross profit was larger than gross loss in that test. How much weight the value carries depends on the number of trades, the share of real ticks and the costs set in the tester. MetaQuotes gives no threshold for the profit factor.

Does the MT5 report include commission and swap?

Yes, if the tested symbol has them. In our report every figure in the summary contains commission, including Gross Profit and Gross Loss. The amounts are listed per deal in the Commission and Swap columns.

Why is Total Deals higher than Total Trades?

A trade is a closed position. Each position has at least two deals, one entry and one exit. In our report 646 trades made 1,292 deals.

Why are equity drawdown and balance drawdown different?

Balance changes when a deal is executed. Equity also contains open positions, so it shows losses that are not yet closed. The larger the gap between the two, the more the strategy holds losing positions open.

Which drawdown does the Recovery Factor use?

In our report the Recovery Factor of −0.49 results from net profit divided by Equity Drawdown Maximal. The help page only says “maximum drawdown”. Recompute it in your own report if the value matters to you.

Friendly robot illustration representing the RoboXpert pen name.
AI-generated avatar

About the author

RoboXpert

Pen name

The person behind RoboXpert writes about expert advisors, trading evidence and programming, and develops their own trading software. They report 10 years of experience in these areas; this is self-reported, not an independently verified qualification or performance record.

Sources & further reading

Your next question

Continue reading

Testing & evidence

Backtest vs Live Trading: What EA Results Really Show

See what a backtest can show and what only forward trading can.

Read the guide →
Build with AI

Build an MT5 EA with AI: From Prompt to Backtest

The run behind this report: prompt, source code and every trade checked against the rule.

Read the guide →