An order in MetaTrader 5 can fill at a price different from the one you saw for five main reasons: buys are filled at the ask while charts show the bid; prices move between clicking and execution; stop orders become market orders and fill at the next available price; spreads widen around news and at the rollover; and markets can gap. The difference can be in your favour as well as against you.
Key takeaways
- Charts show the bid by default. Buy orders fill at the ask, which is higher by the spread.
- With market execution, the order fills at the best available price when it reaches the server.
- A stop-loss is triggered at your level but filled at the next price, which can be worse in a fast market.
- Limit orders fill at your price or better.
- The History tab shows the exact price of every deal.
| Most common cause | Looking at the bid while buying at the ask |
|---|---|
| In fast markets | Slippage: price changes before execution |
| Stops | Trigger at the level, fill at the next price |
| Limits | Fill at the level or better |
| Can it be positive? | Yes, fills can be better than requested |
| Where to check | Toolbox › History: order and deal prices |
The five reasons, and how to tell which one happened
| Reason | What happens | How to recognise it |
|---|---|---|
| Bid vs ask | Buys fill at the ask; the chart shows the bid | The gap equals the spread at the time |
| Slippage | Price moves while the order travels to the server | Busy moments; difference of a few points either way |
| Stop orders | A triggered stop becomes a market order | Fill beyond the stop level in a fast move |
| Spread widening | The spread expands at the rollover or around news | Sell stops hit although the bid line never reached them |
| Gaps | The market opens far from the last price | Fill at the first price after the weekend or results |
Bid, ask and the chart
MetaTrader 5 draws charts from the bid price unless you change it. Every buy opens at the ask and every sell closes at the ask, so a buy that “filled above the chart” is usually just the spread. To see both prices, press F8 and tick Show Ask price line.
Slippage and execution type
The symbol specification shows the execution type. With market execution the order is filled at whatever price is available when it reaches the server, with no requote. With instant execution a deviation limit can be set, and orders outside it are requoted instead of filled. Slippage is most common around data releases and in thin hours, and it can be positive: fills can also be better than the price you saw. More in slippage.
Why stops fill beyond their level
| Order | Triggers when | Fills at |
|---|---|---|
| Stop-loss on a buy | Bid reaches the level | Next available bid, which can be lower |
| Stop-loss on a sell | Ask reaches the level | Next available ask, which can be higher |
| Take-profit | Price reaches the level | The level or better |
| Buy limit / sell limit | Price reaches the level | The level or better |
| Buy stop / sell stop | Price reaches the level | Next available price |
This is why a stop-loss limits risk in normal conditions but cannot guarantee the price in a gap. See does a stop-loss always protect you and gap risk.
How to check any fill
- Open the History tab. Toolbox › History. Choose Positions, Orders or Deals from the right-click menu.
- Compare the order price and the deal price. The order shows the requested or trigger level; the deal shows the actual fill.
- Note the time. Match it to the economic calendar or the rollover.
- Check the spread at that time. Look at the tick chart or ask line around the same minute.
- Contact support with the ticket numbers if it still looks wrong. Include the deal and order tickets from History.
Common mistakes to avoid
Judging buys by the bid line. Turn on the ask line.
Trading into news with tight stops. Spreads and slippage peak then; see news trading.
Expecting a stop to fill at its level in a gap. It fills at the first available price.
Not checking History. The deal record settles most questions quickly.
Risk warning. Trading CFDs carries a high level of risk since leverage can work both to your advantage and disadvantage. As a result, the products offered on this website may not be suitable for all investors because of the risk of losing all of your invested capital. You should never invest money that you cannot afford to lose, and never trade with borrowed money.
Frequently asked questions
Why was my order filled at a different price on MT5?
The usual reasons are the spread (buys fill at the ask while charts show the bid), slippage while the order reaches the server, stop orders turning into market orders, spreads widening around news or at the rollover, and price gaps. The History tab shows the exact fill price.
Why was my stop-loss filled at a worse price?
A stop-loss becomes a market order when its level is reached and is filled at the next available price. In a fast market or a gap that price can be beyond the stop level.
Why did my buy order fill above the chart price?
MetaTrader 5 charts show the bid price by default, but buy orders are filled at the ask, which is higher by the spread. Enable the ask line in the chart properties (F8) to see both.
Can slippage be positive?
Yes. With market execution an order is filled at the best available price, which can be better than the price you saw as well as worse.
Where can I see the exact price my order was filled at?
In the Toolbox History tab. The deals view shows each execution with its price and time; the orders view shows the requested or trigger price.
Related reading
Use limits when the price matters
When an exact entry level matters more than an instant fill, a buy or sell limit can replace the market order, at the risk of never being filled. Follow how to place a pending order on MT5 to set one.
Register