Clear inputs.
Explicit calculations.
The analyzer reads supported English MT4 account-history HTML and normalized CSV. These are the definitions and limits behind the result.
Normalized CSV v1
The required columns are id, closed_at, type, symbol, profit, commission, swap and amount. Their order can vary. UTF-8 files may use commas or semicolons. For supported English MT4 account-history HTML, use the separate MT4 format. MT5, Strategy Tester, XLSX and arbitrary broker exports are not supported.
Each id must be unique. Timestamps use strict UTC ISO format: YYYY-MM-DDTHH:mm:ssZ. A row is a trade, deposit or withdrawal. Each trade row represents one completed trade, with partial fills consolidated and all costs allocated once. Trades require a symbol and explicit signed profit, commission and swap values, including zero; their amount field is blank or 0. Deposits and withdrawals use a positive amount, with a blank symbol and blank or zero profit, commission and swap.
Amounts use a decimal dot and at most four decimal places, with an absolute cap of 100 million per monetary value. Convert dates to the required UTC format before import; local dates and timezone offsets are not inferred. The limit is 2 MiB and 10,000 data rows. Currency is supplied by the user as a label; no foreign-exchange conversion is performed.
English MT4 account-history HTML
Export from Terminal → Account History → Save as Report. The adapter reads the Closed Transactions section with explicit Ticket, Open Time, Type, Size, Item, prices, Close Time, Commission, Taxes, Swap and Profit columns. All 14 columns are required; Taxes must be explicitly zero. It does not read the terminal Strategy Tester report or MT5 exports.
Closed buy and sell rows become trade outcomes. Signed balance entries become deposits or withdrawals. Open trades and working orders are outside the calculation. Unsupported adjustments, nonzero taxes, missing amounts and ambiguous table layouts are rejected. No missing cost is silently replaced with zero.
MT4 timestamps are broker server time. You must supply one fixed UTC offset for the report period. Reports crossing a server daylight-saving change need separate periods with the correct offsets. Currency is supplied explicitly. Use UTF-8 or BOM-marked UTF-16 text.
The adapter reads HTML as text without displaying it or loading its scripts, images or links. Account names, numbers, comments and trade identifiers are not included in the exported summary. See the official MT4 account-history documentation for export fields.
Outcomes after costs
Costs are counted once, with the sign present in the input. CSV v1 has no separate fee column: include any separate transaction fees in signed commission before import, without counting the same fee twice. Net trading P&L is the sum of these net outcomes. A winning trade has a positive net outcome; a losing trade has a negative one. A zero outcome is breakeven. Win rate is winning trades divided by all trade rows.
The factor uses outcomes after costs. It may differ from a native report that defines gross results before commissions and swaps. When there are no losing outcomes, the analyzer states that condition rather than presenting an infinite score. With no trades, the factor is unavailable.
Average net trade is net trading P&L divided by trade count. Deposits and withdrawals are not trade outcomes.
Cashflows stay separate
Deposits and withdrawals are reported separately. When an opening balance is supplied, ending balance equals opening balance plus net trading P&L plus deposits minus withdrawals. Enter the balance immediately before the first included transaction; if the CSV includes the funding deposit, do not also include that deposit in opening balance.
A deposit is not profit. A withdrawal is not a trading loss. The analyzer does not calculate time-weighted returns, money-weighted returns, annualized returns or risk-adjusted ratios.
Closed-result drawdown
The amount is the largest fall from an earlier peak in cumulative closed-trade net P&L. Cashflows do not move this curve. Observations are ordered chronologically; rows with the same UTC timestamp are grouped so that an unknown order within that second is not invented.
Percentage drawdown is available only when the supplied opening balance is positive and there are no deposits or withdrawals. It is the largest percentage fall from a preceding balance peak. The largest amount and largest percentage can occur at different points.
When cashflows exist or the opening balance is missing, the analyzer shows the amount and explains why the percentage is unavailable. This is not floating equity drawdown: closed-trade CSV does not describe the path of open positions.
Concentration and cost checks
The first check subtracts the largest positive net trade outcome from total net P&L. The second removes up to three largest positive outcomes; losing and breakeven trades remain. The share shown is the best winner divided by the sum of positive net outcomes. These are counterfactual arithmetic checks on this file, not forecasts or estimates of strategy reliability.
When net P&L is positive, the extra cost per trade that would erase it is net P&L divided by the number of closed trade rows, including breakeven trades. It assumes the same additional account-currency charge on every row. It does not represent a spread in pips or a per-lot charge and does not simulate changed entries, sizing or execution.
The report stays on your device
File contents and pasted report text are processed in the browser. They are not sent to an analysis server. The analyzer uses no analytics or external scripts.
The downloadable JSON summary contains selected aggregate results. It does not include the original CSV, filename, trade identifiers or a list of account details. Contact-form messages are a separate action and are sent only when you submit that form.
Check definitions before comparing
Native trading reports can use different scopes and cost conventions. The official MetaTrader 5 report documentation describes the distinction between gross trade outcomes and results including commissions and swaps. Use the definitions above when reading this tool’s output.