Stop Order vs Limit Order: Trigger or Price
Stop order vs limit order, explained: a stop is a trigger that becomes a market order, a limit is a price ceiling or floor. Worked fills for each, with data.
Stop order vs limit order: a limit order controls the price you get, and a stop order controls whether you act at all. A limit order names a boundary, the most you will pay as a buyer or the least you will accept as a seller, and it rests unfilled until the market comes to that price. A stop order names a trigger instead. The instant the market prints at your stop price, the order wakes up and goes out as a plain market order at whatever price is available. A limit guarantees price and risks no fill. A stop guarantees action and gives up the price.
Stop order vs limit order: the one line difference
Keep the two apart with one question each. A limit order answers "what price am I willing to accept?" A stop order answers "at what level do I want to be in this stock, or out of it?"
The mechanics follow from that. A resting limit order is live in the order book, the running list of bids and offers at every price, queued behind each order that arrived at its price earlier and visible to the rest of the market as size at that level. A stop order is not in the book. It sits dormant at your broker or at the exchange, invisible to other participants, and it carries no price instruction for the moment after it fires. Once the trigger prints, the price instruction is gone. For the plain entry pairing, market order vs limit order covers that ground.
What does a triggered stop order actually pay?
A stop that has triggered is a market order, so the fill is whatever the book offers in that instant. The width of that band moves through the day. The panel below averages the high to low range of every one minute bar in AAPL across September 2025, grouped by the hour on the New York clock. Basis points, or bps, are hundredths of a percentage point, so 10 bps on a $200 stock is 20 cents.
| et_hour | avg_minute_range_bps | total_volume_millions |
|---|---|---|
| 09:00 ET | 12.8 | 186.6 |
| 10:00 ET | 10.3 | 172.81 |
| 11:00 ET | 7.2 | 122.55 |
| 15:00 ET | 6.5 | 179.55 |
| 14:00 ET | 6 | 105.52 |
| 13:00 ET | 5.9 | 96.18 |
| 08:00 ET | 5.8 | 15.94 |
| 12:00 ET | 5.8 | 97.9 |
| 16:00 ET | 5.5 | 36.4 |
| 07:00 ET | 2.4 | 2.08 |
| 04:00 ET | 2.2 | 1.03 |
| 06:00 ET | 1.9 | 0.91 |
| 17:00 ET | 1.7 | 3.98 |
| 05:00 ET | 1.5 | 0.74 |
| 18:00 ET | 1.3 | 0.9 |
| 19:00 ET | 1.3 | 0.87 |
The exact SQL behind every number
SELECT
concat(formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H'), ':00 ET') AS et_hour,
round(avg((toFloat64(high) / toFloat64(low) - 1) * 10000), 1) AS avg_minute_range_bps,
round(sum(volume) / 1e6, 2) AS total_volume_millions
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'AAPL'
AND window_start >= '2025-09-02'
AND window_start < '2025-10-01'
AND toFloat64(low) > 0
GROUP BY et_hour
HAVING sum(volume) > 0 AND count() >= 20
ORDER BY avg_minute_range_bps DESCThe widest hour on the list is the 09:00 ET hour, where the average minute spanned 12.8 bps. The quietest, 19:00 ET, averaged 1.3 bps. 16 hours cleared the volume filter, and the volume column shows how uneven a trading day is. A stop triggering in the busiest hour crosses a far wider band than the same stop triggering in the slowest one.
Then there is the gap case, which is the one that surprises people. Prices move while the market is shut, and the first print of a session can land well past a trigger. Stop triggers are a broker side feature, and many brokers arm them only during the regular session, which means an overnight move is discovered at the open.
| session_date | gap_below_pct |
|---|---|
| 2025-01-21 | 2.6 |
| 2025-01-29 | 1.74 |
| 2025-02-03 | 2.55 |
| 2025-02-05 | 1.83 |
| 2025-03-11 | 1.62 |
| 2025-04-03 | 8.2 |
| 2025-04-04 | 4.58 |
| 2025-04-07 | 5.93 |
| 2025-04-10 | 4.92 |
| 2025-04-11 | 2.27 |
| 2025-04-16 | 1.87 |
| 2025-04-21 | 1.89 |
| 2025-05-01 | 1.61 |
| 2025-05-02 | 3.39 |
| 2025-05-19 | 1.59 |
| 2025-05-23 | 3.82 |
The exact SQL behind every number
SELECT
toString(session_date) AS session_date,
round((1 - open_px / prev_close) * 100, 2) AS gap_below_pct
FROM
(
SELECT
date AS session_date,
toFloat64(open) AS open_px,
lagInFrame(toFloat64(close)) OVER (ORDER BY date ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_close
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'AAPL'
AND date >= '2025-01-01'
AND date < '2026-01-01'
)
WHERE prev_close > 0
AND open_px < prev_close * 0.985
ORDER BY session_dateAAPL opened at least 1.5% below the prior close on 16 sessions in 2025. The list starts with 2025-01-21, which opened 2.6% under the previous close, and ends with 2025-05-23 at 3.82%. A sell stop resting anywhere inside one of those gaps triggers at the open and fills near the opening price, nowhere near the trigger.
Worked example: protecting a long position
Take a hypothetical holding of 100 shares bought at $200, with the stock trading there now.
A sell stop at $190 waits. If the stock trades $190, the order is released as a market sell and prints near $190 on a calm session. On a session that opens at $181, the same stop releases at the open and prints near $181, nine dollars under the trigger. You are out of the position either way. The price was never promised.
A sell limit at $190 does something else entirely, and this is the trap hiding on the ticket. A limit means that price or better, and $200 is better than $190 for a seller, so the order is marketable the moment you send it. It sells now, at around $200. A sell limit below the market executes right away rather than standing guard below the position.
For the protect-a-long job, then, a limit cannot stand in for a stop. Putting both controls on one ticket gives you a sell stop limit: trigger at $190, limit at $188.50, which holds a floor under the exit price and accepts that a fast slide through $188.50 leaves you still holding the shares. That combination is the subject of stop order vs stop limit order. Pairing a protective exit with a profit target on a single ticket is the job of bracket and OCO orders.
Worked example: entering on a breakout
Same hypothetical stock at $200, and you want to own it only above $205.
A buy stop at $205 triggers on a print at $205 and goes out to the market. On a steady move you get something like $205.05. On a fast one, $206.40.
A buy limit at $205 is marketable on arrival: $200 is better than $205 for a buyer, so it fills immediately, at around $200. Nothing in it waits for the breakout.
That symmetry is the part worth memorizing. For a buy, a stop waits above the market and a limit waits below it. For a sell, a stop waits below and a limit waits above. Put the two order types on the same side of the market and they mean opposite things.
How often does a stop get touched and then recover?
A stop is also a decision about distance. The next panel takes every AAPL session across 2024 and 2025, measures each session low against that session's open, and asks two things at five stop distances: how often the level was touched, and how often price came back to close above the open after touching it.
| stop_distance | sessions_triggered_pct | closed_above_open_pct |
|---|---|---|
| 1% | 36.9 | 5.8 |
| 2% | 10.4 | 1 |
| 3% | 3.2 | 0.2 |
| 4% | 1.2 | 0 |
| 5% | 0.4 | 0 |
The exact SQL behind every number
SELECT
concat(toString(dist), '%') AS stop_distance,
round(countIf(low_pct <= -1 * dist) * 100.0 / count(), 1) AS sessions_triggered_pct,
round(countIf(low_pct <= -1 * dist AND close_pct > 0) * 100.0 / count(), 1) AS closed_above_open_pct
FROM
(
SELECT
arrayJoin([1, 2, 3, 4, 5]) AS dist,
(toFloat64(low) / toFloat64(open) - 1) * 100 AS low_pct,
(toFloat64(close) / toFloat64(open) - 1) * 100 AS close_pct
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'AAPL'
AND date >= '2024-01-01'
AND date < '2026-01-01'
AND toFloat64(open) > 0
)
GROUP BY dist
ORDER BY distA stop 1% under the open was touched on 36.9% of those sessions, and 5.8% of all sessions were touched at that distance and still closed above the open. Widen the stop to 2% and the touch rate falls to 10.4%, with 1% touched and recovered. At 5%, only 0.4% of sessions reached the level at all. Tight stops fire often and exit on ordinary intraday noise. Wide stops sit through the noise and carry a larger loss on the sessions they do fire. The numbers price that trade-off; they do not pick a side of it for you.
How much room does a limit order need?
A limit order has the mirror problem. A boundary the market never reaches is a boundary that never fills, and daily range is a rough gauge of how far inside the day's action a limit has to sit.
| ticker | median_range_bps | dip_below_open_pct |
|---|---|---|
| NVDA | 283 | 81.2 |
| AAPL | 191 | 63.2 |
| MSFT | 147 | 61.6 |
| KO | 129 | 60.4 |
| SPY | 90 | 44.4 |
The exact SQL behind every number
SELECT
ticker,
round(quantileDeterministic(0.5)(
(toFloat64(high) / toFloat64(low) - 1) * 10000,
toUInt64(toYYYYMMDD(date))
), 0) AS median_range_bps,
round(countIf(toFloat64(low) <= toFloat64(open) * 0.995) * 100.0 / count(), 1) AS dip_below_open_pct
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'KO', 'SPY')
AND date >= '2025-01-01'
AND date < '2026-01-01'
AND toFloat64(low) > 0
AND toFloat64(open) > 0
GROUP BY ticker
ORDER BY median_range_bps DESCAcross 2025 the widest median daily range of the five names belongs to NVDA at 283 bps, and 81.2% of its sessions dipped at least half a percent under the open at some point in the day. The narrowest is SPY at 90 bps. A buy limit half a percent under the open is close to a coin flip on a wide ranging name and a long wait on a quiet one. Same order type, very different odds of ever trading.
Which question does each order answer?
- A sell stop below the market answers "how do I get out if this keeps falling?" It keeps the fill price risk, including a gap straight through the trigger.
- A buy stop above the market answers "how do I get in once the level clears?" It keeps the same fill price risk, plus the chance that the level is poked once and abandoned.
- A buy limit below the market answers "what is the most I will pay?" It keeps the no fill risk.
- A sell limit above the market answers "what is the least I will accept?" It keeps the same no fill risk.
Time in force is a separate axis
Readers routinely fold a third choice into this one. Trigger versus price boundary is one axis. How long the instruction stays alive is another, and every stop and every limit carries one: a day order expires at the close, while a good till canceled order survives into later sessions. The duration setting changes nothing about whether the order controls price or action. Time in force explained walks through the full set. Options carry their own fill frictions on top of all this, which why options orders do not get filled takes apart.
FAQ
Is a stop order the same as a limit order with a trigger?
No. A plain stop order holds a trigger and nothing else, and it converts to a market order the moment the trigger prints. The order that holds both a trigger and a price boundary is a stop limit order, and it can sit unfilled when price runs past its boundary.
Can a limit order protect a long position from a falling stock?
Not on its own. A sell limit placed below the current price is immediately marketable and sells right away, and a sell limit placed above the price works as a profit target. Downside exits are built from a stop or a stop limit.
Does a stop order guarantee the price I set?
No. The stop price is a trigger, not a fill price. On a gap opening the first available price can land far past the trigger, which is what the 2025 AAPL gap panel above measures.
Is a stop order or a limit order better?
Neither outranks the other. They answer different questions: a limit controls price and accepts the risk of no fill, a stop controls action and accepts whatever fill price the market hands over. Matching the order to the question is the whole skill.
Every panel here carries the exact SQL beneath it, so you can open one and see how each count was made. To run the same touch count on a name you follow, ask the question in plain English on the Strasmore terminal.