MetaTrader 5 keeps every trade you have ever placed, and it will hand the whole record over in two clicks — as a spreadsheet or a web page, with a page of statistics on top. Most traders never open it. The ones who do usually read the Profit column as their profit, take the report's profit factor as their edge, and stop there. Both readings are wrong in the same direction, and the reason is the same: the report knows what your account did, and nothing about what you meant to do.
This guide shows exactly where the history lives in MT5, how to export it, what the built-in report does and does not compute, and how to get the positions into a journal that can answer the questions the report cannot — what a trade made in units of the risk you planned, which sessions carry the account, and whether the edge in dollars survives once lot size is stripped out. The worked numbers come from a 60-trade sample history built to look like a real MT5 export; the script that produced them is linked at the end.
Where the history livesOne tab, three views
Everything is in the Toolbox window (View → Toolbox, or Ctrl+T) on the History tab. It shows the period you have chosen and the kind of record you have chosen, and both are set from the right-click menu.
Positions — one row per trade
The view a journal wants. Each row is an opened-and-closed position: entry time and price, exit time and price, volume, stop and target, and the profit. A trade closed in three parts is still one row here, at the volume-weighted exit price.
Orders — every instruction you sent
Market, limit and stop orders, filled, cancelled or expired, with their state. Two or more per trade; useful for spotting cancelled entries and modified stops, useless as a trade list.
Deals — every fill, plus money movements
The accountant's view: each execution as its own row, in and out, with commission on each, and balance rows for deposits and withdrawals. A partial close makes three or four deals from one position. This is what the broker's statement is built from.
The period
Right-click → All history, Last 3 months, Last month or Custom period (some builds add shorter presets). The export contains what the tab shows, so set the period first — 'All history' for a first import, then the month since the last one.
On a netting account (one position per symbol, the default on many exchange-traded and some forex accounts) MT5 merges every fill in the same direction into a single position, so a scaled-in trade is one row with an average price. On a hedging account each entry is its own position, and the Positions view shows them separately. Either way, journal by position, not by deal: a deal is a fill, and a fill has no outcome.
Export itReport → Open XML or Open HTML
Set the view to Positions and the period you want
Right-click on the History tab. Pick Positions at the top of the menu and the period below it. Wait for the list to finish loading — a long history is fetched from the server and the export takes what is on screen.
Right-click again → Report
The submenu offers Open XML (MS Office Excel) and Open HTML (Web Page). Both contain the same thing: an account header, then the Positions, Orders and Deals tables for the period, then the statistics block. Recent builds also draw a visual overview in the same submenu; it is a picture, not a file you can import.
Choose XML for a journal, HTML for reading
The XML report opens straight in Excel or Google Sheets as a normal sheet. The HTML report is the one to keep as a record of what the broker showed on that day — it is also the format most journal software's 'MetaTrader import' expects, although those importers are built for MT4's statement layout, which is a different table, so check before you rely on it.
Save it and export nothing else
Name it by account and period. There is no CSV option in MT5 itself; the CSV comes from Excel or Sheets in the next section. The mobile and web terminals show the history but, as of this writing, do not save a report — this is a desktop-terminal job.
The Positions table in the report has thirteen columns in this order: Time · Position · Symbol · Type · Volume · Price · S/L · T/P · Time · Price · Commission · Swap · Profit. Two columns are called Time and two are called Price; the first pair is the open, the second the close. That detail matters in a minute.
The Profit column is not your profitCommission and swap are separate columns
The number most traders add up is the last column. It is the price move times the volume, before the two columns to its left, and MT5 does not net them for you anywhere in the table.
Sixty forex trades, one quarter
A 60-position sample history at $7 round-turn commission per lot and overnight swap on the seven trades held through rollover. The Profit column adds up to $1,600; the account grew by $1,421. The 11% gap is entirely in the two columns nobody sums.
Eleven percent of gross is a modest drag; a scalper paying commission on 0.10-lot trades that make five pips is at 30% or more. The point is not the size of the leak but that the table hides it: if your journal imports the Profit column as P&L, every statistic downstream — win rate, expectancy, profit factor — is computed on money you did not keep. In the journal, net is Profit + Commission + Swap with the broker's own signs (both negative), and that is the one column worth adding in the spreadsheet before you import.
What the report already computesThe vocabulary, and what it means
Below the tables, the report prints a block of statistics. On the sample history they come out like this.
Total trades
- Sample value
- 60
- What it means
- Closed positions in the period
Profit trades (% of total)
- Sample value
- 26 (43%)
- What it means
- Win rate on net P&L
Gross profit / gross loss
- Sample value
- $4,647 / $3,226
- What it means
- Sum of winners, sum of losers
Profit factor
- Sample value
- 1.44
- What it means
- Gross profit ÷ gross loss; above 1 is profitable
Expected payoff
- Sample value
- $23.69
- What it means
- Net ÷ trades: the average trade, in money
Average profit / loss trade
- Sample value
- $179 / $95
- What it means
- Mean winner, mean loser
Largest profit / loss trade
- Sample value
- $726 / −$384
- What it means
- The tails
Max consecutive wins / losses
- Sample value
- 4 / 4
- What it means
- Longest streaks in the period
Recovery factor, Sharpe ratio, drawdowns
- Sample value
- —
- What it means
- Net ÷ max drawdown; return per unit of volatility; balance and equity drawdown, absolute, maximal and relative
| Report line | Sample value | What it means |
|---|---|---|
| Total trades | 60 | Closed positions in the period |
| Profit trades (% of total) | 26 (43%) | Win rate on net P&L |
| Gross profit / gross loss | $4,647 / $3,226 | Sum of winners, sum of losers |
| Profit factor | 1.44 | Gross profit ÷ gross loss; above 1 is profitable |
| Expected payoff | $23.69 | Net ÷ trades: the average trade, in money |
| Average profit / loss trade | $179 / $95 | Mean winner, mean loser |
| Largest profit / loss trade | $726 / −$384 | The tails |
| Max consecutive wins / losses | 4 / 4 | Longest streaks in the period |
| Recovery factor, Sharpe ratio, drawdowns | — | Net ÷ max drawdown; return per unit of volatility; balance and equity drawdown, absolute, maximal and relative |
Source: CalculatorAI · calculatorai.app · drafts/metatrader-5-trading-journal-numbers.mjs — seeded sample, not a live account
That is a genuinely useful page, and every number on it is on the journal's statistics tab too. The report is where to check that an import landed correctly: if the journal's trade count, net and win rate match the report's, the mapping is right. What the block cannot do is explained by its units. Everything is in the account currency, so every figure is a blend of how well you traded and how big you traded.
What it cannot computeRisk, sessions and the edge in R
Outcome in dollars
Expected payoff $23.69 a trade, profit factor 1.44. Both true, both driven by the 33 trades that happened to be 0.5 or 1.0 lots. The report has no idea how much you planned to lose on each trade, so it cannot say whether the edge is in the setups or in the size.
Outcome in R
Divide each net result by the risk the stop defined — |entry − stop| × volume × pip value — and the same history is +0.10R a trade with a profit factor of 1.16. Winners average +1.71R, losers −1.12R. The edge is real but a third of the size the dollar figure implied; the rest was lot size.
The R-multiple is the number that makes trades comparable across sizes, symbols and account growth, and it needs one input MT5 has but the report never uses: the stop. Our position-sizing guide explains why planned risk is the field a journal cannot do without, and the expectancy guide shows the arithmetic from win rate and average R. The second thing the report cannot do is split. It computes one block for the whole period; it will not tell you that the same 60 trades look like this by session:
London
- Trades
- 16
- Win rate
- 56%
- Average R
- +0.54R
- Net
- $1,415
New York
- Trades
- 20
- Win rate
- 55%
- Average R
- +0.46R
- Net
- $888
Asia
- Trades
- 24
- Win rate
- 25%
- Average R
- −0.48R
- Net
- −$882
| Session | Trades | Win rate | Average R | Net |
|---|---|---|---|---|
| London | 16 | 56% | +0.54R | $1,415 |
| New York | 20 | 55% | +0.46R | $888 |
| Asia | 24 | 25% | −0.48R | −$882 |
Source: CalculatorAI · calculatorai.app · drafts/metatrader-5-trading-journal-numbers.mjs
Drop the Asia trades and the quarter's net rises 62% on 36 trades instead of 60. That is the kind of finding a journal exists for, and it is invisible in a report whose only grouping is "all". The same applies to setup, symbol, day of week and hold time — the sample's winners were held 11.8 hours on average and its losers 5.2, a pattern worth knowing before the next stop is set.
Import into the journalThe CSV route, six columns
The Trading Journal imports MetaTrader 4 statements directly, but an MT5 report is a different table, so MT5 goes in through the Broker CSV tab on the import page. Five minutes in a spreadsheet first makes the import clean.
Open the XML report and keep only the Positions table
Delete the header rows above it and the Orders and Deals tables below it, so row 1 is the column headings and every row beneath is one position. Delete any row whose Type is 'balance' — a deposit is not a trade.
Rename the four ambiguous headings
First Time → Open time, first Price → Open price, second Time → Close time, second Price → Close price. Rename Type → Side, so 'buy' and 'sell' are read as the direction and not as the asset class. The importer maps columns by their names, and 'Time' twice is a coin toss.
Add one column: Net
= Profit + Commission + Swap, with the broker's signs as exported. Head it 'Net profit'. This is the P&L the journal should trust.
Save as CSV and upload it
File → Save as → CSV. On the import page choose Broker CSV, set the asset type to Forex (or whatever the account trades) and the status to Closed, and upload. The mapping step shows each journal field with the column it guessed.
Check five mappings, blank two
Symbol, Side, Entry date (Open time), Exit date (Close time), Quantity (Volume) and P&L (Net profit) should be filled. Set Entry price and Exit price to the blank option: if both are mapped, the journal recomputes P&L from the prices and the contract size and ignores your Net column — correct for a plain USD pair, wrong by the swap and by the conversion rate on anything else.
Compare with the report before you review anything
Trade count, net and win rate on the journal's statistics tab should match the report's block. If the net differs by exactly the commission, the Net column was not the one mapped.
After the first import, the routine is one export a month: set the period to Last month, Report → Open XML, the same six columns, upload. The stop for each trade takes ten seconds to add while the trade is fresh, which is the argument for logging it on the day rather than at month end — the journal-keeping guide is about that habit, and the journal app comparison is for traders whose volume needs a broker sync instead. Anyone trading a prop-firm evaluation on MT5 should do the export weekly: the daily-loss and consistency rules are computed on exactly the columns this file contains.
The review that paysFive questions for the imported set
Is the edge in R, or only in dollars?
If the profit factor drops sharply when measured in R, the winners were bigger, not better. Fix the sizing before touching the strategy.
Which session, symbol or setup is negative?
Filter by each. One consistently negative bucket is the fastest improvement available, and the report's single block will never show it.
How much did friction take?
Commission and swap as a share of gross profit. Above 20%, either the trades are too small or the broker is wrong for the style; both are cheaper to fix than a strategy.
Where did the stop actually sit?
Average loss in R should be close to −1. The sample's −1.12R means slippage or moved stops on a fifth of losers. Compare planned and realised loss trade by trade.
Is the drawdown normal for this expectancy?
Streaks of four in 60 trades are ordinary at a 43% win rate. Our drawdown guide gives the expected depth for your numbers, so a losing week is judged against arithmetic rather than mood.
Where these numbers come from
The MT5 workflow — Toolbox → History, the Positions / Orders / Deals views, the period menu, and Report → Open XML / Open HTML — is described from the MetaTrader 5 desktop terminal and MetaQuotes' own documentation of its HTML report, whose statistics labels (Profit Factor, Expected Payoff, Recovery Factor, Sharpe Ratio, the six drawdown lines, Short/Long Trades won, Profit/Loss Trades % of total) are quoted as printed; menu wording varies slightly between builds and brokers, and the mobile and web terminals' lack of a report export is as of September 2026. The sample history is 60 synthetic forex positions generated by drafts/metatrader-5-trading-journal-numbers.mjs with a fixed seed, so the run is reproducible: four symbols, 0.1–1.0 lots, 15–40-pip stops, $7 round-turn commission per lot, a −$2.40-per-lot swap on positions held through rollover, winners of 1.2–2.5R, losers of −1R with a fifth slipping to −1.3R, and a lower win rate in the Asia session by construction — the split exists to show what a grouping reveals, not to claim anything about Asian hours. The profit factor, expected payoff, streaks and session figures were computed from that set in both currency and R; the "11% of gross" friction figure is specific to it, and a higher-frequency or smaller-lot history pays proportionally more. Import behaviour (header aliases, the rule that mapped entry and exit prices override a P&L column, the free cap of 100 imported trades) is described from the journal's own import code.
Frequently asked questions
How do I export my MetaTrader 5 trade history to Excel? Open Toolbox → History, right-click, choose Positions and the period, then right-click again → Report → Open XML (MS Office Excel). The file opens in Excel or Google Sheets with the Positions, Orders and Deals tables and the statistics block. Save as CSV from there if a journal needs it; MT5 has no CSV option of its own.
Does the MT5 report include commission and swap in Profit? No. The Positions table shows Commission, Swap and Profit as three columns, and Profit is the price move alone. The statistics block below the tables works from the net result, which is why its total does not equal the Profit column's sum. Add the three columns yourself before treating any per-trade figure as your result.
Should I journal positions or deals? Positions. A deal is a single fill; a position closed in three parts is one trade with four deals. The Deals view also contains deposits and withdrawals as balance rows, which are not trades. Use Deals only to reconcile commission, never as the trade list.
Can I import an MT5 report into the CalculatorAI Trading Journal? Yes, through the Broker CSV import: open the XML report in a spreadsheet, keep the Positions table, rename the duplicate Time and Price headings and Type to Side, add a Net column (Profit + Commission + Swap), save as CSV and map it. The MetaTrader 4 tab expects MT4's statement layout, which is a different table. The free plan imports up to 100 trades; Pro is unlimited.
Why does the journal's profit factor differ from the MT5 report's? Either the P&L was imported gross instead of net — the difference will equal the commission — or the journal is showing the figure in R rather than dollars. In R, a history whose winners were traded at larger size than its losers shows a lower profit factor; that difference is the size effect, and it is the more honest number.






