Stop loss hit but price didn't reach it? The chart shows only the bid
Stop loss hit but price didn't reach it? MT5 charts show the bid, but a short's stop triggers on the ask. Why spreads spike, and how to check your own trade.
Key takeaways
- MetaTrader 5 draws forex candles from the bid price, so the ask never appears in them.
- A sell position’s stop loss is checked against the ask, so it can trigger while the chart’s high is still below the stop by up to the spread.
- A buy position’s stop loss is checked against the bid, the price the chart shows, so on a long the spread is not the cause.
- Spreads tend to widen at the 5 pm New York rollover, around high-impact news and in thin markets, which is when the gap between the chart and the ask is largest.
- In the History tab, the closing deal’s price, S/L and comment show whether the spread, slippage or a moved stop closed the trade.
On this page
If your stop loss was hit but price didn’t reach it on the chart, and the trade was a sell, the ask price reached your stop. MetaTrader 5 draws candles from the bid, but a short’s stop loss is checked against the ask, so when the spread widens the ask can touch your stop while the chart’s high stays below it.
On a buy, the spread is not the cause, because a long’s stop is checked against the same bid the chart shows. There, look for a stop that was moved, a chart from a different price feed, or a close that was not the stop at all. Your MT5 History tab shows which it was.
The short answer: charts show the bid, and shorts close at the ask
The bid and ask are the prices you can sell and buy at, and the gap between them is the spread. A position opens at one side and closes at the other:
| Position | Opens at | Closes at | Stop loss is checked against | Drawn in the candles? |
|---|---|---|---|---|
| Buy (long) | Ask | Bid | Bid | Yes |
| Sell (short) | Bid | Ask | Ask | No |
MetaTrader’s chart settings help says bars “are formed based on Bid prices” (or last-trade prices where a depth of market exists) and that the ask “is not displayed on the chart”. Its Basic Principles page adds that a stop loss for long positions “is checked using the Bid price”, while “the Ask price is used for short positions”.
A short’s take profit works the same way in reverse: the chart can touch your target without the trade closing.
An example with numbers
When it happens most
Spreads tend to widen when liquidity is thin:
- The daily rollover at 5 pm New York time, which is 21:00 UTC during US daylight saving time and 22:00 UTC otherwise. See why spreads widen at rollover, and the forex market hours tool for your time zone.
- High-impact news such as NFP, CPI and FOMC decisions: liquidity thins before the release, and price can jump between ticks after it. See high-impact news in forex.
- Thin markets, such as public holidays and the weekly open. A stop can also fill well past its level across a weekend gap.
Tight stops suffer most. A 3-pip spread is 30% of a 10-pip stop but 6% of a 50-pip stop.
Show the ask line on your MT5 chart
- Right-click the chart and choose Properties, or press F8.
- Open the Show tab.
- Tick Show Ask price line and click OK.
The line shows only the latest ask, not where the ask was an hour ago.
For today’s extremes, open Market Watch (Ctrl+M), select the symbol and click Details. Where your broker supplies them, it lists A. High, the day’s highest ask, next to B. High, the highest bid (Market Watch help). On a short closed today, if A. High reached your stop and B. High did not, the spread closed your trade.
Stop loss hit but price didn’t reach it? Spread, slippage or a moved stop
Your terminal holds the evidence. Open the Toolbox (Ctrl+T) and check three things:
1. The closing deal. On the History tab, show the history as deals and find the deal with direction “out” for your position (Executing Trades):
| Column | What it tells you |
|---|---|
| Price | The actual fill, to compare with your stop. |
| S/L | For a closing deal, the position’s stop loss at the moment it closed (build 1860 notes). If it differs from the stop you set, something moved it. |
| Time | When it closed, in the broker’s server time. |
| Comment | When a stop loss closes a position, “the corresponding information is displayed in the comment”. |
Then read the fill:
- At or very close to the stop: the stop triggered normally. On a short, if the chart’s high sits below the stop by about the spread at that time, the spread explains it.
- Beyond the stop: slippage. A triggered stop loss closes the position with a market operation, so in a fast market or across a gap it fills at the next available price, which can be worse than the stop.
- No stop-loss note in the comment: something else may have closed it, such as a manual close, an EA or a stop-out.
2. The Journal. The Journal tab logs “execution of all trade operations” (Platform Logs), so a stop moved by you, a trailing stop or an Expert Advisor leaves a line there. Its times are your computer’s, not the server’s. Older days are in YYYYMMDD.LOG files: right-click the Journal and choose Open.
3. Which chart you compared with. Another broker’s feed can show a different high, so use your own broker’s MT5 chart. As the CFTC puts it, on a retail forex platform you connect to the dealer, “which controls the information you see on your screen, including prices” (CFTC advisory).
A note on “stop hunting”
Stop loss orders are “stored and executed on the broker’s server” (Executing Trades), which is why the suspicion comes up. The records above settle it better than a chart does. If a fill does not match your broker’s own prices, raise it with the broker in writing, quoting the deal ticket, and then with its regulator if needed.
What traders commonly do about it
- Room for the spread. Many traders place a short’s stop above the chart level by the typical spread for that hour plus a small buffer. A level at 1.14000 with a 1-pip spread and a 1-pip buffer becomes 1.14020.
- Sizing for the full distance. A wider stop at the same lot size risks more money, so the size is recalculated, with the position size calculator or by hand as in how to calculate lot size.
- Waiting out wide spreads. Many traders skip new entries while the spread is wide, in the rollover window and around high-impact releases.
None of this protects a trade that is already open when the spread spikes. A wider stop only means a spike has to be bigger to reach it.
What PipWarden does
PipWarden runs through an Expert Advisor in your own MetaTrader 5, on a Windows PC or VPS (not on a phone), at a broker that allows EAs. Where the spread comes in:
- A spread limit per pair, if you set one (there is none by default). It is checked before every entry: on the server, then again by the EA with the live bid and ask just before the order is sent. A trade that fails the check is skipped and logged as “Spread too wide”.
- A news blackout. By default, no new entries from 60 minutes before to 30 minutes after a high-impact release for the currencies involved. You can change the window or switch it off.
- Stops and sizing. Every order carries a stop loss based on ATR, a measure of recent volatility, set at that distance from the actual fill price. The lot size comes from your risk per trade and that distance.
- Breakeven and trailing, on by default. The EA measures a sell position’s progress from the ask, the price it would close at, not from the bid on the chart. Each stop it moves is logged in the terminal’s Experts tab.
What it does not do: add a spread buffer to the stop, or check the spread on trades already open. Open trades keep their stops through rollover and news, and a stop can still fill beyond its level when price gaps. The full list of checks is on the features page.
Frequently asked questions
Why did my stop loss trigger before price reached it?
Does the MT5 chart show the bid or the ask price?
Do buy stop losses trigger on the bid or the ask?
Is stop hunting by brokers real?
How do I show the ask line in MT5?
Educational content, not financial advice. Forex and CFDs are traded on margin and are high risk: you can lose money, and more than your deposit with some brokers. Examples use made-up numbers and show no real results. Read the risk disclosure.