Exporting the report from MT5
Run your backtest to completion. Open the tester's Backtest (results) tab, right-click anywhere inside the results, choose Report, and save as HTML. MT5 writes a single .htm file containing the summary, the Orders table, and the Deals table OverfitCheck reads.
Open the Toolbox panel, switch to the History tab, right-click inside the trade list, choose Report, and save as HTML. Set the history range first (right-click → Period) so the report covers the trades you want audited.
Upload the saved .htm / .html file on the upload page like any other backtest file. MT5 writes these reports in UTF-16 text encoding. OverfitCheck detects and decodes that on its own, even if the file was renamed .csv along the way.
What the parser reads
MT5 reports contain several tables. OverfitCheck reads exactly one: the Deals table, the broker-side record of every fill. Deal rows carry a Direction of in (position opened) or out (position closed). The parser pairs each in deal with the following out deal to form one completed trade.
Profit + Commission + Swap of the exit deal, plus any commission or swap charged on the entry deal. Your audited returns are net of the commissions and swaps in the report, not gross. Overnight financing on CFDs is included, not silently dropped.
When a position is closed in several steps, the additional out deals are merged into the same trade. Their P&L is summed, and the exit time and price come from the final close. One position = one trade in the audit.
After extraction, the sum of all per-trade P&L is checked against the report's own balance change (first balance row → last deal balance). In our ground-truth calibration this reconciled to the cent on all six real Strategy Tester reports.
Extracted trades feed the exact same internal pipeline as a universal CSV upload. The 30-trade minimum, date handling, and all 8 statistical tests behave identically. Formatting quirks (spaces as thousands separators, 2013.01.04-style dates) are cleaned up on the way in.
Deals table → OverfitCheck fields
| MT5 Deals table | OverfitCheck field |
|---|---|
Time (of the "in" deal) | entry_date |
Time (of the "out" deal) | exit_date |
Type (buy / sell, on the "in" deal) | direction (long / short) |
Volume | quantity |
Symbol | symbol |
Price (of the "in" deal) | entry_price |
Price (of the "out" deal) | exit_price |
Profit + Commission + Swap | pnl |
Rows that are not deals (the initial balance row, orders, summary statistics) are skipped. Trade IDs are assigned sequentially in report order.
Limitations
These are the real constraints of the current parser. Read them before you upload, so you can tell whether your report fits.
The in/out pairing assumes one open position at a time. That is what Strategy Tester runs of a single-position strategy produce, and what netting accounts enforce. On a hedging account with several positions open at once, entries and exits can be mis-paired. The parser counts those anomalies instead of guessing silently, but the validated path is single-position reports. For hedged histories, export a per-trade CSV instead (see the CSV format spec).
P&L amounts are read exactly as they appear in the report. No currency conversion is applied. The statistical tests do not care about scale, so p-values, Sharpe-based metrics, and the score are unaffected. Money figures in your results are a different story. The estimated annual cost drag, for example, is in your deposit currency even where the interface shows a dollar sign, and the per-asset-class cost presets are set in USD.
The balance check compares total trade P&L against first-to-last balance. Account-history reports with mid-period deposits or withdrawals will fail that reconciliation even when every trade parsed correctly. The trades are still audited. Treat the balance check as informational for such reports. Strategy Tester reports never have this issue.
MT4's statement format predates the Deals table, and this parser does not read it. For MT4, export your trade history as CSV (from the terminal or your broker's portal) and upload it per the CSV format spec.
If the report contains deals for several symbols, all of them go into one audit. To audit a single strategy on a single instrument, generate the report from a Strategy Tester run (which is single-strategy by nature) or filter your history before exporting.