Slippage is the difference between the price requested or observed and the price at which an order is actually filled. It can be positive or negative. Latency is one contributor, but price movement, liquidity, order size and server handling also determine the result.
Slippage, latency and requotes are different
Slippage is a price difference. Latency is a time delay between an action and the broker server response. A requote occurs when the requested price is no longer available under an execution mode that asks the trader or program to accept another price. An order rejection is different again: the server may refuse a request because of volume, stops, market status, permissions or insufficient margin.
| Event | What you see | Useful evidence |
|---|---|---|
| Slippage | Fill price differs from requested price. | Order request, fill and spread at the same timestamp. |
| Latency | Execution or modification takes longer. | Terminal log times and broker-side execution report. |
| Requote | A new price is offered instead of the requested one. | Journal message and the symbol’s execution mode. |
| Reject | The server does not accept the request. | Error code, parameters and contract specification. |
Why an automated order can receive a different result
Between signal calculation and fill, the market can move. Available volume at the best price may be smaller than the order, especially around releases, session transitions or rollover. The broker can aggregate quotes, apply a markup, validate stops and margin, and then route or internalize the order according to its policy. Each step can add time or change the executable price.
VPS-to-server distance matters, but a low network ping does not measure queueing, bridge processing, liquidity-provider response or the time used by the EA itself. Large order size, rapid modifications and several simultaneous positions may produce different results from a single small test trade.
Measure a distribution, not one trade
- Synchronize the VPS clock and preserve MT4 Experts and Journal logs.
- Record symbol, side, order type, requested price, fill price, lot size and timestamps.
- Store bid/ask spread at the request and identify rollover or scheduled news.
- Separate market entries, pending-order triggers, closes and stop modifications.
- Calculate positive and negative slippage separately, plus median and tail outcomes.
- Compare demo and live only when settings, timing and broker entity are equivalent.
Positive and negative fills may produce a harmless-looking mean while a small number of large adverse fills causes most of the damage. Review percentiles and worst cases as well.
Reduce the impact without distorting the strategy
Do not simply widen every tolerance. Excessive deviation can convert a controlled entry into an unfavorable fill, while an overly strict tolerance can create repeated retries or missed exits. The correct limit depends on the strategy’s expected edge, timeframe and risk model.
Common interpretation mistakes
Do not treat every losing trade as broker manipulation, compare bid-only charts with buy fills, or judge execution from a screenshot without the contemporaneous ask price. Do not compare a demo order with a live order placed seconds later, and do not assume that a faster VPS fixes thin liquidity. First reconstruct the complete order event from logs and account history.
For an EA, reliable error handling matters as much as normal fills. The program should avoid uncontrolled retry loops, duplicate orders and silent failures after a disconnect.
Official references
MetaTrader explains how trading requests are executed and lists broker-controlled parameters in the symbol specification. Match any log message to the execution mode and specification used by that symbol.