What you’ll learn
A clean MetaTrader import prevents broken analytics. Export the right report, normalize timestamps and symbols, and keep costs attached so net P&L and R-multiples stay honest.
- Always import net numbers (include commissions/fees).
- Standardize symbols (ES/MES, NQ/MNQ) and timezones before mapping.
- Combine partial fills to avoid duplicate trades.
Overview
MetaTrader exports are straightforward once you know which columns matter. This guide shows exactly what to export, how to normalize, and the field mapping to keep metrics intact.
You’ll finish with a CSV that matches your statement and flows into ProfitPulse without manual clean-up.
Save a mapping template once; reuse it daily for fast imports.
What you need before you start
Collect these inputs before you start.
- MT4/MT5 Account History CSV with commissions and swap.
- Account timezone and target journal timezone.
- List of canonical symbols (ES, MES, NQ, MNQ, CL, MCL).
- ProfitPulse CSV import template.
- Spreadsheet or CSV editor.
- MetaTrader statement for P&L cross-check.
Shortcut: If you want this workflow automated, use a trading journal app that supports imports + analytics (ProfitPulse).
Step-by-step: import MetaTrader trades without losing costs
Follow these steps to go from MetaTrader export to a clean, net P&L journal entry.
-
1
Export your MT4/MT5 Account History (with commissions and swap)
Open Account History (MT4/MT5), choose the date range, then Save as Report/CSV with commissions and swap included.
- Export Account History/Detailed Report, not the Orders-only view.
- Include commission, swap/financing, and account/order columns.
- Export a detailed statement for later cross-check.
Goal: You have an Account History CSV/report with commissions and swap for the correct dates. -
2
Normalize timezone and symbols
Convert broker/server time to your journal timezone and normalize symbols (remove suffixes like .r or .pro).
- Apply timezone conversion from broker server time to your review timezone (account for DST).
- Normalize symbols (e.g., EURUSD.r → EURUSD; US30.cash → US30).
- Keep account/accountId columns if you use multiple accounts.
Watch for: Wrong timezones or symbols create duplicate trades and broken stats. -
3
Combine partial fills and costs
Group partial closes by ticket/position. Calculate weighted average prices and sum commission/swap once per side.
- Aggregate entries and exits separately if you scale in/out.
- Add commission/swap after grouping so you don’t double-count costs.
- Flag any manual adjustments you make.
Done when: Each ticket has one entry and exit with net costs (commission + swap) attached. -
4
Map fields to your journal
Line up MetaTrader columns to journal fields so analytics work immediately.
- Time → execution time (converted); Ticket → order ID/position.
- Type → long/short; Volume (lots) → size; Symbol → normalized symbol.
- Price → entry/exit; Commission/Swap → costs; Profit → reference (net/gross).
MetaTrader column Map to journal Notes Time execution_time Convert broker/server time to target timezone. Ticket order_id Use to merge partial closes. Symbol symbol Normalize (remove suffix like .r, .pro). Type side (long/short) Use buy/sell or 1/-1 consistently. Volume (lots) size Convert to your journal units if needed. Price entry_price / exit_price Weighted average if scaled. Commission / Swap costs Sum once per side after grouping. Profit net_pnl Reference net result (commission + swap). Goal: Columns align to your journal schema. -
5
Validate net P&L and metrics
Cross-check totals before finalizing so analytics are trustworthy.
- Compare CSV net P&L to the MT4/MT5 detailed statement for the same dates.
- Spot-check 3–5 trades for correct side, volume, price, commission, and swap.
- Confirm your journal handles lot size conversion the way you expect.
Done when: Net P&L and counts match your statement. -
6
Save the template and repeat
Lock in your mapping so daily imports are a two-minute task.
- Save the cleaned CSV as a template with formulas for conversions.
- Set a recurring reminder post-session to export and import.
- Automate imports in ProfitPulse once you’re confident in the mapping.
Outcome: Reliable, repeatable imports.
Run this every time you import.
- Export Account History CSV with commissions/swap.
- Convert timezone and normalize symbols.
- Combine partial fills; attach costs once.
- Map fields and validate P&L vs statement/report.
Common mistakes (and how to avoid them)
Skipping commission or swap columns makes profit factor and expectancy meaningless.
Leaving server time unconverted offsets trades and messes up session tags.
Leaving suffixes (.r, .pro) or broker-specific names unnormalized splits stats and duplicates trades.
If you skip the net P&L cross-check, your journal can drift from reality without you noticing.
Metrics that matter (so you don’t “review by vibes”)
If your workflow touches performance, anchor your review to real metrics like profit factor, expectancy, net P&L, R-multiples, and drawdown.
Troubleshooting
Export Account History/Detailed Report (with commission/swap) or add those costs before importing.
Group by order ID and side, use weighted averages, and sum costs once.
Check broker server time vs your review timezone and daylight savings. Convert once for all rows before importing.
Confirm the CSV volume column (lots) is converted to your journal units. Set the right contract size/multiplier in your journal settings.
Frequently asked questions
Which MetaTrader report should I export?
Open Account History, select the date range, and export the Detailed Report/CSV with commission and swap included. Keep it for cross-checking net P&L.
Does MetaTrader include commissions and swap in the CSV?
Yes-Account History/Detailed Report includes commission and swap columns. Keep them so the journal reflects net P&L.
How do I handle partial fills?
Group rows by ticket/position, compute weighted average prices for entry/exit, and sum commission/swap once before importing.
How often should I import MetaTrader data?
Daily is best-export after the session so costs and context are fresh. Weekly is okay if you keep a consistent mapping template.
Can I import multiple accounts or hedged positions?
Yes. Keep account IDs and ticket numbers so you can filter by account and merge hedged legs by ticket.
How do I handle symbol suffixes (.r, .pro, .cash)?
Strip broker suffixes (EURUSD.r → EURUSD) and map cash/CFD symbols to your journal equivalents before import.
Turn this workflow into a system.
ProfitPulse is a trading journal app built for cost-aware, risk-weighted review. Import trades, tag setups, track net P&L, and review edge using expectancy, profit factor, and drawdown.