Importing a statement
How the column-mapping wizard works, and what to check before you import.
Journal → Import handles CSV, XLSX and MetaTrader HTML reports.
How it works
- Upload. The file is parsed in your browser. Nothing is sent to the server yet.
- Map the columns. Alpha Ledger guesses from the headers and applies a broker preset if you picked one. Correct anything wrong.
- Preview. Every row is shown exactly as it will be created, with the computed P&L and R, plus any row that could not be read and any duplicate.
- Import. Only the rows you approve are sent.
The mapping is saved per broker preset, so the second import of the same format needs no work.
What to check first
The server timezone offset. Most MetaTrader servers run GMT+2 or GMT+3. If this is wrong, every trade lands in the wrong hour, and the session and time analytics become meaningless. It is the single most common import mistake.
The P&L column. If your statement includes its own profit figure, Alpha Ledger compares it with what the prices imply. A disagreement of more than 5% is flagged on the row — it usually means the contract size for that symbol is not what Alpha Ledger assumed, which matters because it also affects the R multiple.
Unknown symbols. A symbol Alpha Ledger does not recognise is never rejected; it synthesises a specification so the trade is still recorded, and marks the row so you can check it.
Duplicates
Duplicates are detected two ways: by the broker ticket or order id where the statement has one, and otherwise by a fingerprint of account, symbol, open time to the minute, size and entry price. The check runs again on the server, so a double-submitted import cannot double your journal.
Stops and R multiples
If your statement has no stop-loss column, the imported trades will have no R multiple — R is net P&L divided by the initial risk, and without a stop there is no initial risk to divide by. Everything else still works. You can add stops by hand on trades that matter.