Category
Platform
Difficulty
Intermediate
Used in
MT5 operationEA evaluationBroker selection

Slippage

The difference between the price an order asked for and the price it was filled at. It can fall either way, but for a strategy that trades on speed it is a cost that backtests rarely model.

also: execution slippage, price slippage, deviation

Updated · Reviewed

In plain English

You asked for one price and got another. Between the moment an order leaves the terminal and the moment it is filled, the market moves — sometimes in your favour, more often not, and most of all when you least want it to.

Why it matters

A backtest fills at the price it decides to fill at. A live account fills at whatever the broker had available when the order arrived. That difference is small per trade and compounds with trade count, which is why it decides whether a fast strategy survives contact with a real account.

  • It scales with frequency, not with size. A tenth of a pip is nothing on one trade and material across two thousand.
  • It is worst exactly where it hurts most — at news releases, at session opens and on stop-outs, all moments when a strategy is most likely to be sending orders.
  • It is broker-dependent in a way that backtests cannot capture: the same EA on the same data will produce different live results on two brokers with different execution.
  • It is measurable. Requested price against fill price, averaged over a few hundred trades, turns an argument about execution quality into a number.

In MetaTrader 5

Where it appears in MT5

  • New Order dialog (F9) → Deviation — the maximum slippage in points you will accept on a market order
  • Toolbox → History → the deal's price against the price the EA requested in the Experts log
  • The Journal tab, where rejections show as requote or invalid price rather than as an execution
  • Strategy Tester — models spread but not order latency, which is why tester fills are systematically kinder than live ones

How EAs use it

  • The deviation field of MqlTradeRequest sets the tolerance: fill within this many points of the requested price, otherwise reject rather than fill worse.
  • Under Market Execution the request is filled at whatever the market provides, and deviation limits how far that can be before the order is refused.
  • The filling mode matters at the boundary: Fill or Kill refuses a partial fill outright, Immediate or Cancel takes what is available and cancels the rest.
  • A well-written EA compares the fill price it got with the price it asked for and recomputes its stop and target from the fill — not from the request.
  • Retrying a rejected order without re-checking the signal is how one refused fill becomes several fills at progressively worse prices.

Typical settings

Setting Typical value Note
Deviation, swing strategies 10–30 points Generous. A few points of slippage is irrelevant against a target measured in hundreds.
Deviation, scalping strategies 1–5 points Tight enough that a bad fill is refused rather than accepted — at the cost of more rejections.
Average slippage worth accepting under 0.5 pips Measured over 100+ live trades on your own account, not quoted from a broker's marketing.
Average slippage worth investigating over 1.5 pips For a strategy with small targets this is a material share of every win.
Filling mode as the symbol allows Set by the broker per symbol; sending an unsupported mode gets the order rejected, not adjusted.

Common operational problems

  • Deviation set too tight for a volatile symbol turns into a stream of rejected orders, and the EA trades far less than the backtest says it should.
  • Deviation set too wide accepts fills far from the signal price, so the trade taken is not the trade the strategy modelled.
  • The EA computes its stop from the requested price rather than the fill, so the real risk differs from the intended one on every slipped entry.
  • Distance from the broker's server adds latency, and latency adds slippage — the practical argument for hosting an EA near the trade server.
  • News releases produce slippage far beyond anything in the sample, which is why strategies that trade through them need to have been tested through them too.

Related MT5 functions

MqlTradeRequest.deviation
Maximum acceptable slippage in points for a market order.
CTrade::SetDeviationInPoints(points)
The same tolerance set once for every order the instance sends.
MqlTradeResult.price
The price actually filled — the number that has to be compared with the request.
SymbolInfoInteger(symbol, SYMBOL_FILLING_MODE)
Which filling modes the broker permits for this symbol; sending another is rejected.
OrderSend(request, result)
Returns the result struct carrying both the retcode and the executed price.

Example

The same 0.4 pips of average slippage, applied to two strategies with different targets. The per-trade cost is identical; the share of the edge it consumes is not.

Average slippage per trade
0.4 pips
Scalper — average win
6 pips
Slippage on entry and exit is about 13% of the gross gain.
Swing EA — average win
120 pips
The same slippage is about 0.7% of the gross gain.
Scalper — trades per year
2,000
1,600 pips a year lost to execution alone.

Nothing about the broker changed between these two rows. The difference is how much of the strategy's edge sits inside the execution window.

Calculation 0.8 ÷ 6 = 13% · 0.8 ÷ 120 = 0.7%

Result One execution quality, two entirely different verdicts

How it is used

Slippage is measured, not assumed. Every conclusion below comes from comparing requested prices with fill prices on your own account and broker.

Range What it means
Average under 0.5 pips over 100+ trades Good execution. Backtest results transfer with a modest haircut.
0.5–1.5 pips Acceptable for strategies with targets of tens of pips; a real drag on anything smaller.
Over 1.5 pips average Investigate before scaling up. Either the strategy is trading at the wrong moments or the execution is not competitive.
Consistently one-directional Positive slippage should occur too. If fills are always worse than requested, that is an execution characteristic rather than market movement.
  • Log the requested price alongside the fill on every trade. Without that pair there is nothing to measure and no basis for comparing brokers.
  • Compare a live run with its backtest over the same period — the gap in average trade result is where slippage and spread live.
  • Set deviation from the target size: tight for small targets so bad fills are refused, generous for large ones so good signals are not missed over a fraction of a pip.
  • Recompute stop and target from the fill price, not the request. Otherwise a slipped entry quietly changes the risk on the trade.
  • Judge news-time execution separately. Averages taken over calm periods say nothing about the fills that happen in the seconds that matter.

mt5depot listings publish which broker and account conditions each backtest was produced on, so the execution assumptions behind a result are stated rather than implied.

Common mistakes

Assuming slippage is always negative

Positive slippage — a fill better than requested — happens under normal conditions with genuine market execution. A record showing only negative slippage over hundreds of trades is describing the execution, not the market.

Judging a backtest as if it modelled execution

The Strategy Tester models spread but not the delay between decision and fill. Every tester result is therefore optimistic by an amount that grows with trade frequency, and the gap is largest for exactly the strategies that look best in testing.

Setting deviation to zero to avoid slippage

That does not remove slippage; it removes fills. The EA ends up trading a fraction of its signals, and which signals it misses is decided by market speed rather than by the strategy.

Comparing brokers on spread alone

A tight advertised spread with poor execution can cost more than a wider spread filled cleanly. The comparable number is the total cost per round trip — spread plus commission plus measured slippage.

In depth

Every listing here ships a fill tolerance, and the shelf disagrees on its meaning. Deviation decides which fills get refused, not how bad the accepted ones are — and the same numeral here means two sizes.

The tolerance every listing ships

Across the 14 EAs published hereFigure
Listings with a fill-tolerance input14
Parameter entries describing it40
Stated tolerance of 0.3 pips3
Stated tolerance of 3 pips11
Pages saying it does not affect the backtest8
Pages saying the record was measured at it2
Runs with a measured slippage figure0

Rows three and four are the trap. Cairn and Thunderhead print a bare 3 and count it in points; nine others print a bare 3 and count it in pips. Same numeral, ten times apart. Only Iridescence, Lattice Weave and Tidewell Slack print the unit — the three you cannot misread.

Rows five and six describe one setting in two registers, and row seven says which to trust: none of our backtests measures a fill against a request. That makes it a live-trading instruction, not a backtest assumption — the boundary our methodology draws around each record.

It bites hardest where it is tightest: at 0.3 pips a fill that moves further is refused, so Cairn’s 4,725 trades become fewer than the record shows, not worse.

Frequently asked questions

How much slippage is normal for an MT5 EA?
On a competitive account in ordinary conditions, an average under about 0.5 pips over a hundred or more trades is good, and 0.5 to 1.5 pips is workable for strategies with targets measured in tens of pips. Consistent averages above 1.5 pips are worth investigating, especially if the strategy trades often.
Why is my live result worse than the backtest?
Slippage and spread are the usual explanation. The Strategy Tester fills at the price it decides on and does not model the delay between an order being sent and being filled, so live fills are systematically slightly worse. The effect scales with trade count, which is why frequent strategies diverge from their backtests fastest.
Does a VPS reduce slippage?
It reduces the part caused by the distance and delay between your terminal and the broker's server, which matters most for strategies with small targets. It does nothing about the part caused by the market moving or by liquidity being thin at the moment of the order.
What deviation should an EA use?
Enough to be filled on signals worth taking and no more. Strategies with large targets can accept 10 to 30 points without it mattering; scalping strategies usually set a few points so that a bad fill is refused rather than accepted, accepting more rejections in exchange.