TapeSheet

Home MT5 report analyzer

MT5 report analyzer

MetaTrader 5 does not record trades. It records deals — the individual fills that make up a position. Turning those back into trades correctly is most of the work, and it is where analyzers quietly disagree with your broker. Drop the report in and see the whole account. Free, no account, nothing uploaded.

The analyzer is the drop zone. Nothing is uploaded, and there is nothing to sign up for.

Which MT5 export works

The HTML report: Toolbox → History → right-click → Report → HTML, having first set the period to All History. It arrives as ReportHistory-<account>.html and contains Summary, Orders, Deals and usually Positions sections. Brokers customise the template freely — extra columns, renamed headers, translated labels — and the parser matches on header meaning rather than column position, so those variations are handled.

Full walkthrough: how to export an MT5 report.

“Open XML” works too, and so does HTML. The Open XML option saves with an .xlsx extension but is actually legacy SpreadsheetML — plain XML, not a real Excel workbook — and TapeSheet reads it directly. Both exports produce the same numbers here. What we cannot read is a genuine .xlsx: if you opened the report in Excel and saved it, export it again from MetaTrader instead.

How deals become trades

A position in MT5 is opened by a deal with direction in and closed by one or more deals with direction out. Analyzing the deal list directly gives you nonsense: every entry counts as its own event, and a position closed in three parts looks like three unrelated things happened.

TapeSheet reconstructs positions in the order MT5 itself intends:

  1. By position identifier, when the report has one. Each deal carries the id of the position it belongs to. This is exact — no inference, no ambiguity — and it is what makes reversals and partial closes come out right.
  2. FIFO, when it does not. Plenty of broker templates omit the Position column entirely. Closing deals are then matched against open volume oldest-first, which is the convention MT5 uses and the one your broker's own accounting follows.

A partial close produces one closed trade per closing portion, with commission, fees and swap attributed pro-rata by volume. An in/out reversal deal closes the existing lot and opens a new one with the remaining volume, which is exactly what the terminal did.

Two more details that change the numbers: commission is deduplicated where a broker records it on both the order and the deal, and cancelled or rejected orders are excluded — they never produced P&L, and counting them wrecks win rate.

Hedging vs netting accounts

MT5 supports both, and the difference confuses more people than any other part of the format.

Account typeWhat the terminal doesWhat you see here
HedgingSeveral independent positions in the same symbol, including opposite directions, each with its own ticket.Each position is its own trade. Long and short in one symbol stay separate rather than cancelling out.
NettingOne position per symbol. A trade in the opposite direction reduces, closes or reverses it.Reversals split correctly: the closing portion becomes a completed trade, the remainder opens a new one.

If your figures ever disagree with the terminal, the account type and the partial-close convention are the first two things worth checking — and telling us about it is the most useful message we receive.

Every instrument your broker lists

Symbol handling is generic. Suffixes are normalised, so us30.cash and US30 are one symbol, and price precision is inferred from the price strings in your own file rather than a hardcoded symbol table. Metals, indices, crypto CFDs and futures CFDs analyse identically to FX pairs.

There is no supported-instrument list here, because there is no special-casing to limit one. Whatever your broker wrote in the report is what gets analysed. For instruments where “a pip” is not a meaningful unit, points are the honest reading and the product says so.

The honest caveats

  • Drawdown is balance-based. The report has no intra-trade equity, so a position that ran far against you and closed flat contributes nothing. Your real equity drawdown was deeper.
  • Server time, no timezone marker. Set the broker offset once or every session and hour breakdown is shifted by that many hours.
  • Swap and commission are read as recorded. Where a broker books costs outside the report, our totals will differ from the account statement by exactly that amount.
  • Your broker's records are authoritative, not our reading of them.

The full list is on the risk disclaimer page.

Nothing uploads, and that is checkable

The analyzer is a single HTML file with the parser, metrics engine and charts inlined. Your report is read with the browser's file API and parsed on your device — there is no backend, no database and no upload endpoint. Watch the Network tab while you load a file, or disconnect from the internet first and use it anyway.

Questions

Is my report uploaded anywhere?

No. It is read with the browser’s own file API and parsed on your device — TapeSheet has no backend that processes reports and no database of them. Watch the Network tab while you load a file, or disconnect from the internet first and use it anyway.

Do I need an account?

No. There is nothing to sign up for. Open the analyzer, drop your report in, and it works — no email, no password, no trial clock.

What happens to my journal if I clear my browser?

It is removed. Your journal, tags and settings live in your browser’s own storage, not on a server, so clearing site data, using private browsing, or a browser that evicts storage under pressure takes it with it. Settings → Export writes a single JSON file with everything in it — keep that as your backup, since there is no cloud copy to fall back on.

Does it matter if my account is hedging or netting?

Yes, and TapeSheet handles both. On a hedging account, several independent positions in the same symbol — including opposite directions — each stay separate. On a netting account there is one position per symbol, and a reversal splits correctly: the closing portion becomes a completed trade and the remainder opens a new one.

Can I export as Excel instead of HTML?

MetaTrader’s “Open XML” option, saved with an .xlsx extension, is actually legacy SpreadsheetML — plain XML, not a real Excel workbook — and TapeSheet reads it directly, producing the same numbers as the HTML report. A genuine .xlsx (one that has been opened and saved in Excel) cannot be read; export again from MetaTrader instead.

Also worth reading

Deals in, real positions out

See what your MT5 account actually did, reconstructed properly.

Analyze my MT5 report