A demo account is valuable for checking installation, signals and broker compatibility, but it is not a perfect model of live execution. The important question is not whether every result matches; it is whether the difference can be explained, measured and kept within the strategy’s risk limits.
Why Demo and Live trades diverge
| Factor | Demo environment | Possible Live effect |
|---|---|---|
| Spread | Often smoother or simulated. | Can widen at rollover, news or low liquidity. |
| Slippage | Fills may be simplified. | Requested and executed prices can differ. |
| Liquidity | No real market impact. | Available volume and broker policy can affect price or acceptance. Confirm any partial-execution behavior for this specific account. |
| Commission and swap | May use different account conditions. | Changes net result and overnight cost. |
| Latency | Server route may differ. | Signals reach the trade server later. |
| Trading rules | Demo settings can be more permissive. | Stops Level, volume or order limits may differ. |
Compare behavior before comparing profit
Start with timestamps, symbols, direction, lot size and order comments. If both accounts receive the same signal but fill at different prices, investigate execution. If one account never generates the signal, investigate quote history, spread filters, terminal time, EA settings or licensing.
Diagnose differences in the right order
Verify the setup
Confirm AutoTrading, chart symbol and timeframe, EA status, DLL permissions if required and the licensed account number before comparing strategy behavior.
Compare the incoming market conditions
Record Bid, Ask, spread and broker server time around the expected entry. An EA with a maximum-spread filter can correctly skip a trade that appears on another account.
Read the order result
Check the Experts and Journal tabs for invalid volume, invalid stops, off quotes, requotes, insufficient margin or disabled trading. These messages identify the layer that rejected the action.
Compare enough trades
One fill is not a representative sample. Compare a series of trades across the strategy’s normal sessions and include commissions, swaps and closed as well as open positions.
Move from Demo to Live with controlled risk
Keep the configuration fixed during the comparison. Begin with a position size that makes an unexpected fill or short drawdown financially tolerable. Do not increase risk merely because a short demo period was profitable. Monitor connection uptime, free margin and log errors on the VPS, and pause the EA if execution repeatedly falls outside the planned conditions.
Real funds introduce execution, liquidity and emotional consequences that a simulated balance cannot reproduce.
Set realistic expectations
Small differences in entry price and net profit are normal. Persistent missing trades, opposite directions, repeated server errors or materially different position sizes are not. The objective is to establish whether discrepancies come from setup, data, broker rules or execution before changing the strategy itself.
Match the signal, request and fill separately
Compare records by normalized time, exact symbol, direction, EA version and Inputs. First establish whether both instances detected the same signal. Next compare the requested price and contemporaneous Bid/Ask. Finally compare the actual fill and any rejection code. A trade that was never requested is not a slippage observation.
Hypothetical EURUSD BUY: the requested Ask is 1.10020, demo fills at 1.10020 and live fills at 1.10030. On a five-digit quote where a pip is 0.00010, the live fill has 1 pip of adverse slippage relative to the request. This isolated example does not identify its cause or predict average execution.
Keep missing trades and incomplete evidence visible
Use separate counts for signals, submitted requests, accepted trades, rejected requests and uncertain outcomes. Reconcile timeouts against account history before classifying them. If the EA does not log request prices or contemporaneous quotes, say that precise execution attribution is unavailable; a final profit difference alone cannot separate spread, slippage and changed signals.
Compare a representative sample across the strategy’s normal sessions and holding periods. Demo establishes operational behavior under that demo environment. A cautious live observation supplies different evidence, with real costs and losses; it does not turn demo results into a return forecast.
A missed trade is not automatically an execution failure
Consider an illustrative comparison with the same EA build, completed signal bar and maximum-spread setting. The demo instance sees a spread of 1.2 pips; the live instance sees 2.4 pips. If the documented limit is 2.0 pips, a live skip can be the correct filter decision. There is no live fill from which to measure slippage. Confirm the input units first: on a typical five-digit EURUSD quote, 20 points means 2 pips.
Record the signal time, quotes and filter reason before changing the limit. If those fields were not logged, mark the cause as unconfirmed rather than reconstructing it from profit. Compare accepted trades separately from skipped signals, rejected requests and uncertain outcomes; otherwise the two accounts may be compared using different trade samples.
Use the trading-cost guide to separate spread, commission and swap. If the discrepancy persists across comparable observations, follow live drift monitoring and revalidation before changing the strategy or increasing exposure. These example spreads describe a diagnostic case, not acceptable execution thresholds for every EA.
Official reference
The official MQL4 OrderSend reference documents requested price, slippage, stop levels and server errors that can affect live order execution.