Category
Platform
Difficulty
Beginner
Used in
MT5 operationEA evaluationBroker selection

Spread

The gap between the bid and the ask on a symbol. It is paid on entry, it is the cost every trade starts behind by, and it is the one MT5 shows least clearly.

also: bid-ask spread, cost of trading, spread cost

Updated

In plain English

You buy at one price and sell at another, and the difference between them is already against you the instant a position opens. Every trade starts at a small loss, and the spread is how large that loss is.

Why it matters

Spread is charged per trade rather than per pip of movement, so it is invisible on a strategy with hundred-pip targets and decisive on one with five-pip targets. It is also the cost a backtest models most confidently and least accurately.

  • It is paid on every round trip regardless of outcome, so its total is trade count multiplied by cost — a number most people never compute.
  • It is not constant. The quote widens at rollover, at session gaps and around releases, which are exactly the moments strategies cluster their orders.
  • The tester's spread setting decides how much of a backtest's edge is real, and the default in most tests is far kinder than the account will be.
  • It is the first thing that separates two brokers on identical strategy logic, and the easiest to measure yourself over a week of live quotes.

In MetaTrader 5

Where it appears in MT5

  • Market Watch → right-click → Spread — adds a live spread column, in points, for every symbol on the list
  • Market Watch → Specification → Spread — whether the symbol is floating or fixed, and the fixed value if it is
  • The chart itself: the ask line is hidden by default, and turning it on in Chart properties is what makes the spread visible where the trade happens
  • Strategy Tester → Settings → Spread — either Current, which pins today's value across the whole test, or a fixed number of points
  • Toolbox → History — the entry price of a deal against the signal price, which is where the spread was actually paid

How EAs use it

  • An EA buying at the ask and selling at the bid pays the spread on entry and again on exit, so the round-trip cost is two crossings of the quote.
  • Stop and target distances are measured from the fill, so a stop placed a few points away can already be inside the spread at a wide moment.
  • A spread filter — refuse to trade when the current spread exceeds a threshold — is the standard defence, and it changes trade count as well as cost.
  • SymbolInfoInteger with SYMBOL_SPREAD returns the live spread in points, which is the value a filter should read rather than an assumed average.
  • Backtests with real tick data can model the historical spread; tests run on M1 bars use the tester setting, which is a single assumption applied to the whole period.

Typical settings

Setting Typical value Note
EUR/USD, raw account, liquid session 0.0–0.3 pips Plus commission, which has to be added before comparing with a no-commission account.
EUR/USD, marked-up account 1.0–1.6 pips No separate commission line; the cost is inside the quote.
Around a major release 5–50 pips Briefly, and on any account type. This is when spread filters earn their place.
At rollover several times the session average Predictable, daily, and the reason EAs should not place orders in that window.
Spread filter threshold 2–3× the session average Tight enough to skip the spikes, loose enough not to skip the strategy.

Common operational problems

  • A stop or target closer than the current spread is rejected as an invalid stops level, which appears as an EA that has stopped trading.
  • Entries placed in the rollover window pay several times the normal cost for no reason the strategy is aware of.
  • A backtest run at a fixed low spread produces an edge that the account pays away in cost — the smaller the target, the larger the gap.
  • Fixed-spread accounts can widen or requote under stress despite the name, so the guarantee is weaker exactly when it would matter.
  • Comparing brokers on advertised spread alone ranks a commission-charging raw account as expensive when it is usually the cheaper of the two.

Related MT5 functions

SymbolInfoInteger(symbol, SYMBOL_SPREAD)
Current spread in points — what a spread filter should read live.
SymbolInfoInteger(symbol, SYMBOL_SPREAD_FLOAT)
Whether the symbol is quoted floating or fixed.
SymbolInfoDouble(symbol, SYMBOL_ASK) / SYMBOL_BID
The two sides whose difference is the spread.
SymbolInfoInteger(symbol, SYMBOL_TRADE_STOPS_LEVEL)
Minimum distance for a stop or target, below which orders are rejected.
SymbolInfoDouble(symbol, SYMBOL_POINT)
Point size, needed to convert a spread in points into price and money.

Example

One pip of average spread, applied to two strategies with different targets and different trade counts. The per-trade cost is the same; the verdict is not.

Average spread
1.0 pip
Paid once per round trip on a $10-per-pip standard lot.
Scalper — average win
5 pips
Spread is 20% of the gross gain on every winning trade.
Swing EA — average win
90 pips
The same spread is 1.1% of the gross gain.
Scalper — 1,500 trades a year
1,500 pips of cost
$15,000 a year on one standard lot, before any losing trade.

Spread is not expensive or cheap in itself. It is expensive relative to the size of the edge it is subtracted from.

Calculation 1.0 ÷ 5 = 20% · 1.0 ÷ 90 = 1.1% · 1.0 × 1,500 = 1,500 pips

Result The same broker is cheap for one strategy and disqualifying for the other

How it is used

Judge spread against the average win, not against a table of broker averages. The comparable figure is total cost per round trip, on the pair and in the sessions the EA actually trades.

Range What it means
Under 2% of the average win Immaterial. Choose the broker on execution and terms instead.
2–10% A real drag worth one broker comparison, and worth a spread filter.
10–25% Cost is now a design constraint. The strategy needs cheaper execution or larger targets.
Over 25% The edge is smaller than the cost of collecting it on most accounts.
  • Measure the spread yourself over a week, in the hours the EA trades, rather than reading a daily average.
  • Add commission before comparing accounts. A raw quote plus commission and a marked-up quote are only comparable in one unit.
  • Run the backtest at a spread at least as wide as the measured live average — a tester result at a kinder spread is a claim about a broker that does not exist.
  • Give any strategy with small targets a spread filter, and set the threshold from measurement rather than from a round number.
  • Keep orders out of the rollover window. It is the one widening that is entirely predictable.

Published backtests here state the broker and account conditions they were produced on, so the spread assumption behind a result can be read rather than guessed.

Common mistakes

Backtesting at the current spread

The tester's Current setting pins today's spread across the entire historical period, which for a multi-year test means one quiet afternoon's quote applied to every trade including the ones taken in a crisis. Testing at a wider fixed spread than measured live is the conservative choice, and the difference is largest for exactly the strategies that look best.

Comparing brokers on spread alone

An account quoting 0.2 pips and charging $7 per lot round trip costs about 0.9 pips; an account quoting 1.2 pips with no commission costs 1.2. Ranking them by the advertised number gets the order backwards, and the error is systematic rather than occasional.

Treating an average as a cost

Spread is paid at the moment of the trade, not on average. A strategy whose entries cluster at session opens or around releases pays the widened quote nearly every time, so its realised cost can be several times the published average for the same symbol.

Ignoring the exit side

The spread is crossed twice — once entering, once leaving. Cost models that count it once understate every round trip by half, and the error compounds directly with trade count.

Frequently asked questions

What is a good spread for EUR/USD?
On a raw account in a liquid session, 0.0 to 0.3 pips plus commission, which totals roughly 0.9 pips per round trip. On a marked-up account, 1.0 to 1.6 pips with no commission. Neither is better in the abstract — the comparison is total cost per round trip, and which one wins depends on the pair and the account tier.
Does the MT5 backtest include the spread?
Yes, but from a setting rather than from history. Current pins today's value across the whole test; a fixed number applies that number throughout. Only tests built on real tick data with recorded spread reflect what the quote actually did, which is why a tester result should be re-run at a spread at least as wide as the live measurement.
Why does my EA stop trading at certain times?
A spread filter is the usual explanation, and rollover the usual moment. The quote widens for a few minutes each day, the filter refuses to trade through it, and the EA looks idle. Rejections for stop levels being too close to price come from the same widening and are recorded in the Journal rather than shown on the chart.
Are fixed spreads better?
They are more predictable, not cheaper — a fixed quote is normally set above the average variable one, because someone is absorbing the variance and pricing it. They also come with a counterparty broker, and the fixity tends to weaken under exactly the conditions that would make it valuable.

Related articles