Your stop almost certainly fired on a real trade your chart did not draw, or the order that closed you was never a stop resting at the exchange. On CME futures, an exchange-held stop (an order kept off the visible order book until a trade activates it) triggers only on a trade at or through its price. The forex answer, the spread, does not apply to a stop resting there. Four fields in your order history separate seven causes.

Key takeaway

A stop held at CME triggers only on a trade at or through its price, as CFTC economists wrote in 2017, so a widening spread alone cannot fire it. When your chart shows no such trade, either the chart hid it (snapshot data, a session template, a rolled or back-adjusted contract) or something else closed you: a simulated stop's own rule, a prop firm's loss floor or a copier's follower stop; a stop-limit can also trigger without filling. The ID of the closing order tells you which.

What triggers a stop on CME futures: a trade, the bid or the ask?

A trade. A stop resting on CME Globex activates only when a trade prints at or through its trigger price; a bid or offer at your level does nothing. CFTC economists Fett and McPhail state the rule in their 2017 staff paper on stop orders: "A stop loss order with protection is activated when the market trades at or through the stop trigger price".

The bid-ask answer is right at CFD dealers such as IG. Its help center says "Keep in mind that with their standard settings our charts show the mid-price", while its long positions close at the bid, so a CFD stop can fire with the chart untouched.

What fires a stop depends on who holds it. CME Globex fires on a trade; a broker simulating the stop fires on its chosen method (Interactive Brokers defaults to last price for futures and bid/ask for FX); a NinjaTrader Simulated Stop on your PC tests price plus bid or ask volume. A CFD dealer uses its own bid or ask, and a prop firm's risk engine watches your unrealized loss.

WHO HOLDS THE STOP DECIDES WHAT FIRES IT WHO HOLDS THE STOP WHAT FIRES IT STOP CME Globex exchange-held stop a trade at or through the stop price needs a trade at your price STOP Interactive Brokers broker-simulated stop its chosen trigger method: last price for futures by default, bid/ask for FX can fire with no trade at your price STOP NinjaTrader Simulated Stop, on your PC price touches the stop and bid or ask volume there passes a set trigger can fire with no trade at your price STOP CFD dealer (IG) the dealer's own quote its bid closes a long; its standard chart shows mid-price can fire with no trade at your price STOP Prop firm (Topstep) risk engine on the account your open loss reaches the limit; it closes you by market order can fire with no trade at your price Sources: CFTC staff paper (2017); Interactive Brokers TWS API; NinjaTrader 8 Help Guide; IG; Topstep (Oct 2026).
Only the exchange waits for a trade at your price. Every other holder fires on its own rule, which is why a stop can trigger at a price the chart never printed.

Which of the seven causes stopped me out?

Read four fields in your order history, not the chart: the trigger time and time zone, the contract code (ESZ6, not ES1!), the order type and its states, and the ID of the order that closed you. Then match one row. The ES cases are illustrative, at $50 per point and $12.50 per 0.25-point tick, per the CFTC and SEC staff report on the market events of May 6, 2010.

CauseProof in your order historyIllustrative ES case
1. Unseen printTime and sales shows a trade at the stop in the trigger secondA 1-lot at 5,012.25 hits a 5,012.25 stop; the 1-minute low reads 5,012.50
2. Session-filtered chartTrigger time falls outside the chart's session templateDay low 5,020.00; an overnight print at 5,011.75 at 02:14 CT goes through a 5,012.00 stop
3. Other contract or back-adjusted chartThe fill's contract code differs from the chart symbol; roll weekAfter a 45.25-point roll, the 5,011.75 low plots at 5,057.00
4. Simulated stop (PC or broker)Order listed as simulated; the broker received a new order at trigger timeBid volume at the stop thins below the trigger; no trade needed
5. Stop-limit triggered, not filledWorking at the limit after the trigger; position still openA gap to 5,010.75 past a 5,011.50 limit: 0 filled
6. Prop-firm liquidationClosing order is not your stop; stop cancelled; breach notice$600 buffer, $750 stop risk: liquidation fires at 5,008.00, 3.00 points early
7. Copied follower stopFollower entry and stop offset from the master's by the same amountStops at 5,012.25 and 5,012.00: a 5,012.25 print stops only the follower

Computed by Phoenix Technologies; method: illustrative ES prices at $50 per point, each proof taken from the CME, NinjaTrader, Interactive Brokers, TradingView and Topstep documentation cited here.

Rows 1 to 3 mean the market did trade at your stop and the screen hid it; rows 4, 6 and 7 mean something other than a CME stop closed you; row 5 means your stop triggered but did not close you. We found no exchange, broker or firm that publishes how often each cause occurs. For mismatches with no stop involved, use the chart-versus-broker price checklist.

Why doesn't my chart show the trade that hit my stop?

Because your chart may be drawn from sampled or filtered data. A single print can trip your stop between two snapshots, or during hours your chart template leaves out.

A print between two snapshots

Interactive Brokers says its standard top-of-book market data "is not tick-by-tick but consists of aggregated snapshots taken at intra-second intervals", every 250 milliseconds for futures, or 4 a second. It does not say how a snapshot summarises the trades inside it, so conclude only this: one print between snapshots need not reach your chart.

Picture one busy second: 37 trades print, and a 1-lot among them at 5,012.25 trips a sell stop there. Four snapshots can show at most 4 trades, so at least 33 of the 37 (89.2%) never appear individually. The 1-minute low can read 5,012.50, one tick ($12.50) above the stop. Tick-by-tick time and sales from your execution feed shows the print (see conflation and throttling).

ONE SECOND: 37 TRADES, 4 SNAPSHOTS snapshot snapshot snapshot snapshot 1-lot at 5,012.25: stop triggered sell stop 5,012.25 5,012.50 1 row = 1 tick 0 250 500 750 1,000 ms trade (37 in this second) a trade a snapshot can show (at most 4) 1-minute bar low 5,012.50 1 tick ($12.50) stop triggered at least 33 of 37 trades never drawn individually (89.2%) Illustrative prices. Snapshot interval for futures: Interactive Brokers TWS API docs. ES: $12.50 per 0.25-point tick.
The stop reacts to every trade; a snapshot chart draws at most four moments a second. One print in between is enough to leave the bar a tick short of your stop.

A session your template hides

NinjaTrader's trading hours documentation says that once a template is applied, "any data outside of the times in the session definitions will be ignored." A working stop, meanwhile, reacts to overnight trades too, not only to the hours your chart shows.

Picture the same night on two charts that differ only in the template. The day-session chart's low is 5,020.00, 8.00 points (32 ticks, $400 per ES) above a sell stop at 5,012.00; the full-session chart shows a 5,011.75 print at 02:14 CT (03:14 ET), one tick through it. Chart the full session for any position held outside regular hours; RTH versus ETH sessions lists the hours.

SAME NIGHT, TWO SESSION TEMPLATES DAY-SESSION TEMPLATE chart low 5,020.00 overnight data ignored by template sell stop 5,012.00 overnight day session 8.00 points 32 ticks, $400 per ES FULL ELECTRONIC SESSION chart low 5,011.75 sell stop 5,012.00 overnight day session 5,011.75 at 02:14 CT (03:14 ET) one tick through: stop triggered Illustrative ES prices, $12.50 per 0.25-point tick. "Ignored": NinjaTrader 8 Help Guide, Trading Hours window.
Nothing about the market differs between the panels, only the template. A working stop reacts to overnight trades too, so a day-session chart can hide the very trade that triggered it.

Could my chart show a different contract from the one my stop was on?

Yes, around a roll. A continuous symbol such as ES1! can switch months on a different day than your account. TradingView's help center warns that continuous contracts "may not accurately represent the actual traded prices of individual futures contracts." Its own pages give two switch rules, at expiry and by volume (6 business days before expiry in one example), so trust the contract code on the fill (futures rollover explained covers roll dates).

Back-adjustment adds an offset: TradingView leaves it off by default, while NinjaTrader's merge back-adjusted setting applies it. Say a September stop at 5,012.00 was hit by a 5,011.75 low, and December sat 45.25 points higher at the roll. The adjusted chart now plots that low at 5,057.00, 45.00 points ($2,250 per ES) above the stop you remember. Back-adjusted continuous data has the arithmetic.

Was my stop really resting at the exchange?

Not necessarily. A platform- or broker-simulated stop waits on your PC or a broker server and fires on its own rule, and on a prop firm's simulated account your stop never rests at CME.

NinjaTrader's Simulated Stop, per its help guide as of October 2026, will "execute either a market or a limit order once the market touches your order price and satisfies a user defined volume trigger". In its sell example, "the order has not executed because the Bid volume is still greater than our Volume Trigger of 100"; once bid volume at the stop thins below 100, a market order goes out with no trade needed at your price. It also stops protecting you if the PC goes offline.

Interactive Brokers offers several trigger methods and notes: "These trigger methods only apply to stop orders simulated by IB."

Topstep's help center describes its Express Funded Account as a simulated funded-level account, so the firm's simulator decides when a stop triggers and at what price. No Topstep page we read states that rule. The simulated versus live funded account guide shows how to tell which kind you hold.

Why did my stop trigger but not fill, or fill worse than my stop?

A triggered stop-limit becomes a limit order, so a gap past its limit leaves you still in the trade; a triggered stop-market fills at the next available prices, within CME's protection band (futures order types explained compares the two). CME's order-type documentation says of the stop-limit: "If any quantity remains unfilled, it remains on the order book as a limit order at the limit price."

Work one gap with the table's prices: long 1 ES, sell stop at 5,012.00.

  1. The market gaps and the next trade prints at 5,010.75, through the stop, so it triggers whatever its type.
  2. As a stop-limit with a 5,011.50 limit, it rests 0.75 points above the market. Nothing fills unless price trades back up to 5,011.50; you are still long.
  3. As a stop-market (CME's stop with protection), it fills at 5,010.75: 1.25 points, 5 ticks or $62.50 per contract worse than the stop.
  4. With the 3-point ES protection band the CFTC reported in 2017, the limit sits at 5,009.00, so the band does not bind here.

Picture both orders leaving the same trigger: one branch ends in an open position, the other in a fill $62.50 worse than planned.

SAME TRIGGER, TWO ORDER TYPES Long 1 ES, sell stop 5,012.00 gap: next trade 5,010.75, through the stop: triggered STOP-LIMIT, LIMIT 5,011.50 becomes a limit order once triggered 5,012.00 stop 5,011.50 sell limit, resting 5,010.75 0.75 points above the market: 0 filled STILL LONG: position open fills only if price trades back to 5,011.50 STOP-MARKET (STOP WITH PROTECTION) enters as a market order within a band 5,012.00 stop 5,010.75 5,009.00 3-point band filled 1.25 points 5 ticks below the stop protection limit, not reached OUT AT 5,010.75: $62.50 WORSE per contract than the 5,012.00 stop CME's own example, 10-lot ES stop with protection 7 filled, 1.57 points past the trigger on average; 3 rest at the protection limit Illustrative ES prices at $50 per point. Inset: CME order-type documentation. 3-point ES band: CFTC staff paper (2017).
Both orders triggered on the same trade. The order type decided whether the gap cost $62.50 or left the position open.

A stop-market does not promise a full fill either. In CME's own example (prices read as index points), a 10-lot ES stop with protection fills 7 contracts, 1.57 points past the trigger on average, and rests 3 at the protection limit. The CFTC paper found 98% of executed ES stops in 2014 to 2016 were stop-limits. Its 3-point ES band equals 12 ticks, or $150 per contract; check CME's current value.

Matching can also pause. On May 6, 2010, the CFTC and SEC staffs report, "trading on the E-Mini was paused for five seconds when the CME Stop Logic Functionality was triggered". A stop caught in a pause fills only when trading resumes; futures slippage explained covers the other causes of a worse fill.

Did my prop firm close the trade before my stop?

Yes, if your stop sat beyond the firm's loss floor. Topstep's Maximum Loss Limit page states, as of October 2026: "The moment your open loss hits the threshold, the system automatically closes your position via market order". The limit is $2,000 on a $50K account, and slippage can put the fill slightly either side of it.

Picture a price ladder with illustrative inputs: $600 left above the floor, long 1 ES at 5,020.00, stop at 5,005.00, a $750 risk. The floor is $600 / $50 = 12.00 points down, at 5,008.00, so the firm's market order fires 3.00 points before your stop can.

THE FIRM'S FLOOR SITS ABOVE YOUR STOP Topstep Maximum Loss Limit: $2,000 on a $50K account (Oct 2026). Here: $600 left above it entry 5,020.00 long 1 ES firm's floor 5,008.00 closes you by market order your stop 5,005.00 never reached, cancelled 12.00 points = $600 / $50 3.00 points early open loss $0 $600 buffer $750 stop risk Illustrative trade, ES at $50 per point. Limit and market-order close: Topstep Help Center, as of October 2026.
When the stop risks more than the buffer left, the firm's market order becomes the real stop. Size the stop inside the buffer and your own order decides the exit.

That is the published rule working, not a broken one. The Topstep pages we read do not state which price marks unrealized P&L, so check your firm's current rules; see what happens to open positions at a breach and how trailing and static drawdowns move the floor.

Why did a copied account stop out when the master did not?

Because each follower's stop is its own order, and a copier may set it from the follower's own fill, a tick or more from the master's. One print can then reach one stop and miss the other.

Illustratively, the master buys at 5,020.00 and a follower fills at 5,020.25. With stops 8.00 points from each fill, they sit at 5,012.00 and 5,012.25. A 5,012.25 print stops the follower out for $400 while the master stays in, over a 0.25-point ($12.50) difference. How copiers translate brackets and stops covers the other offsets.

How do I set up stops so this does not surprise me again?

Make the risk-defining stop a stop-market that does not depend on your PC, keep its dollar risk inside your drawdown buffer, and review stop-outs on tick data of the exact contract over the full session.

  • If the stop risks more than the buffer above your firm's floor ($750 against $600 in the example), cut size or tighten the stop. Otherwise the firm's market order is your real stop.
  • If you hold through the overnight session, a reopen or a scheduled release, use a stop-market, not a stop-limit.
  • If your platform lists the stop as simulated, learn its trigger rule and keep the PC online, or use the platform's native stop.
  • In roll week, chart the contract code on your fill with back-adjustment off.
  • After any surprise stop-out, pull full-session time and sales from your execution feed before concluding anything.
  • If you copy trades, compare each follower's stop with the master's after every entry.

The tradeoff: the stop-market paid 5 ticks in the gap example and can pay more in a fast market. A trade copier fixes none of the first six causes and adds the seventh, so get the stop right on the master before it is copied.

Go deeper

Frequently asked questions

Why did my stop trigger the instant I placed it?

Because it was almost certainly not a stop resting at CME. During continuous trading CME accepts a sell stop only below the last trade price and a buy stop only above it, so a native CME stop cannot be placed through the market and fire at once. A stop that fired on placement was most likely held by your platform or broker, which found its condition already met.

Can my broker or prop firm see my stop?

Whoever holds the stop can see it: CME and your broker for an exchange-held stop, your own computer for a platform-simulated stop, and the firm's simulator on a simulated prop account. Other traders cannot, because CME keeps untriggered stops out of the order book. A fast run through a level where many stops sit does not show that anyone saw your order.

What does stop with protection mean on CME?

It is CME's version of a stop-market order. Once a trade triggers it, it enters the book as a market order that can fill only within a protection range of the trigger price, and any quantity left rests at the protection price limit. CME says protection points usually equal half a product's non-reviewable range; the CFTC's 2017 paper gives 3 index points (12 ticks) for ES.

What happens to my stop when I hit a prop firm's daily loss limit?

At Topstep, as of October 2026, reaching the Daily Loss Limit (optional on the Trading Combine and Express Funded Account, automatic on the Live Funded Account) flattens open positions and cancels pending orders, so your stop appears as cancelled rather than filled. The flattening order is the firm's, which is why its price can differ from your stop. Other firms word this differently, so read your own firm's rule page.

How can I tell whether my NinjaTrader stop is simulated?

Look at the order before it triggers: NinjaTrader shows a Simulated Stop in the Initialized state and colors it yellow in its order windows. When it fires, it sends a new market or limit order, and that order is what your broker records.

Does TradingView show every CME futures trade?

The TradingView help pages reviewed for this article do not say whether its CME futures data is tick-by-tick or aggregated. Treat a 1-minute low near your stop as approximate, and settle the question on time and sales for the exact contract month from the feed your orders execute on.

Why does my fill time not match the time on my chart?

The two can use different time zones. Eastern Time is one hour ahead of Central Time all year, since both observe daylight saving time, so a trigger at 02:14 CT shows as 03:14 ET. Check the zone printed in the order history before searching the chart.

Does the same apply to a buy stop protecting a short?

Yes, mirrored. A buy stop held at CME triggers on a trade at or above its price, and CME accepts it only above the last trade during continuous trading. NinjaTrader's buy-side simulated example watches the ask price and ask volume, and a CFD dealer such as IG closes shorts at its ask.

Can CME pause trading right after my stop triggers?

Yes. CME's Velocity Logic places an instrument in a reserved state for a predetermined time when price moves a set number of ticks within a set time. CME's documentation adds only that the time may vary, so no fixed pause length can be relied on.

Sources

  1. U.S. Commodity Futures Trading Commission, Office of the Chief Economist (2017), Stop Orders in Select Futures Markets
  2. CME Group Client Systems Wiki (2025), Order Types for Futures and Options
  3. Staffs of the CFTC and SEC (2010), Findings Regarding the Market Events of May 6, 2010
  4. Topstep Help Center (2026), What is the Maximum Loss Limit?
  5. NinjaTrader 8 Help Guide (n.d.), Simulated Stop Orders
  6. NinjaTrader 8 Help Guide (n.d.), Using the Trading Hours window
  7. Interactive Brokers (n.d.), TWS API v9.72+: Trigger Methods
  8. Interactive Brokers (n.d.), TWS API v9.72+: Top Market Data (Level I)
  9. TradingView Help Center (n.d.), What are 1! and 2! continuous futures contracts?
  10. IG Help and Support (2026), Why has my position closed unexpectedly?