Buy Limit vs Sell Limit Orders Explained
Buy limit vs sell limit orders: a buy limit is a ceiling at or below the market, a sell limit is a floor at or above it. See all four cases on one quote.
Buy limit vs sell limit orders comes down to one rule: a buy limit is a ceiling, and a sell limit is a floor. A buy limit says "pay this price or less", and it normally sits at or below the current market. A sell limit says "take this price or more", and it normally sits at or above it. Nothing else separates the two, since the whole order is a side plus a limit price.
Buy limit vs sell limit: one rule, two sides
A limit price names the worst price you are willing to accept. For a buyer the worst acceptable price is a high one, which makes a buy limit a ceiling. For a seller the worst acceptable price is a low one, which makes a sell limit a floor. The side you pick on the ticket already settles which of the two you are setting.
The "market" your limit sits above or below is the quote: the highest price anyone is currently bidding, next to the lowest price anyone is currently offering. That second number is the ask, also called the offer. The panel below follows both through a quarter hour of regular trading in Apple on one pinned September 2026 session, averaged minute by minute.
| et_time | bid | ask | spread_cents |
|---|---|---|---|
| 10:30 | 329.24 | 329.28 | 3.78 |
| 10:31 | 329.18 | 329.22 | 3.58 |
| 10:32 | 329.18 | 329.22 | 4.44 |
| 10:33 | 329.15 | 329.19 | 4.02 |
| 10:34 | 329.03 | 329.07 | 3.64 |
| 10:35 | 329.28 | 329.32 | 4.23 |
| 10:36 | 329.42 | 329.46 | 3.65 |
| 10:37 | 329.38 | 329.43 | 4.91 |
| 10:38 | 329.16 | 329.2 | 4.07 |
| 10:39 | 329.3 | 329.33 | 3.45 |
| 10:40 | 329.66 | 329.7 | 3.94 |
| 10:41 | 329.84 | 329.88 | 4.17 |
| 10:42 | 329.65 | 329.69 | 3.94 |
| 10:43 | 329.57 | 329.62 | 4.66 |
| 10:44 | 329.43 | 329.48 | 4.72 |
The exact SQL behind every number
SELECT
formatDateTime(toStartOfMinute(toTimeZone(sip_timestamp, 'America/New_York')), '%H:%i') AS et_time,
round(avg(toFloat64(bid_price)), 2) AS bid,
round(avg(toFloat64(ask_price)), 2) AS ask,
round(avg(toFloat64(ask_price) - toFloat64(bid_price)) * 100, 2) AS spread_cents
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'AAPL'
AND sip_timestamp >= '2026-09-15 14:30:00'
AND sip_timestamp < '2026-09-15 14:45:00'
AND bid_price > 0
AND ask_price > bid_price
GROUP BY et_time
ORDER BY et_timeIn the first minute of that stretch, 10:30 ET, the bid averaged $329.24 against an ask of $329.28, a gap of 3.78 cents. By 10:44 the pair read $329.43 and $329.48. A limit price, once entered, does not move. The two lines on that chart are what travel under it or over it.
The four-cell grid on a single quote
Take a stock quoted 50.00 bid and 50.05 ask. These are hypothetical prices, picked to keep the arithmetic obvious. Four limit orders arrive, and what each one does on arrival is the whole lesson.
- Buy limit 49.50. The ceiling sits below the bid. Nobody is selling at 49.50 while the best offer is 50.05, so the order joins the book as a bid and waits for a seller to come down to it.
- Buy limit 50.10. The ceiling sits above the offer. It is high enough to reach the 50.05 stock already for sale, and it trades on arrival at 50.05. You pay the offer, not your ceiling.
- Sell limit 50.50. The floor sits above the offer. No buyer is bidding near 50.50, so the order joins the book as an offer and waits for a buyer to come up to it.
- Sell limit 49.90. The floor sits below the bid. It is low enough to reach the 50.00 bid, and it trades on arrival at 50.00.
Two of the four rest. Two execute at once. The pattern is symmetric: a limit order that can reach the opposite side of the quote the moment it arrives trades immediately, and one that cannot joins the queue at its own price. Those two cases have names, and marketable vs non-marketable limit orders walks through both.
Does a limit order fill at my limit price?
Often it does not, and this is the detail new traders get wrong. A limit price is a boundary on what you will accept. It is not a request to trade at that number. An order that is marketable on arrival takes the best price already available, which is the quote, and the quote is better than the limit by definition. The buy limit 50.10 above pays 50.05 and keeps the 5 cents.
The gap a marketable order crosses is the quoted spread, and its size varies by name. Below are five widely held tickers measured across the same five minutes of one session, in cents and in basis points. A basis point is one hundredth of one percent, which puts a $500 stock and a $70 stock on one scale.
| ticker | avg_spread_cents | avg_spread_bps |
|---|---|---|
| MSFT | 14.35 | 2.88 |
| KO | 1.19 | 1.34 |
| AAPL | 3.87 | 1.17 |
| NVDA | 1.6 | 0.75 |
| SPY | 2.13 | 0.28 |
The exact SQL behind every number
SELECT
ticker,
round(avg(toFloat64(ask_price) - toFloat64(bid_price)) * 100, 2) AS avg_spread_cents,
round(10000 * avg((toFloat64(ask_price) - toFloat64(bid_price))
/ ((toFloat64(ask_price) + toFloat64(bid_price)) / 2)), 2) AS avg_spread_bps
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'SPY', 'KO')
AND sip_timestamp >= '2026-09-15 14:30:00'
AND sip_timestamp < '2026-09-15 14:35:00'
AND bid_price > 0
AND ask_price > bid_price
GROUP BY ticker
ORDER BY avg_spread_bps DESCAcross the five, the average quoted spread ran from 0.28 basis points at the tight end up to 2.88 at the wide end. MSFT was the widest of the group in relative terms, at 14.35 cents on its own quote. A marketable buy limit behaves much like a market order with a cap bolted on, and market order vs limit order lays out that comparison.
How often does the market reach a resting limit?
A resting limit fills only if the market comes to it, and distance from the quote is the trade-off. A buy limit further below the market pays less when it fills, and fills on fewer days. The shape of that trade-off is measurable. The panel below takes every SPY session from the start of 2021 through the end of September 2026 and asks, at each distance, how often the session low reached a buy limit that far under the prior close, alongside how often the session high reached a sell limit the same distance above it.
| limit_distance | buy_limit_touched_pct | sell_limit_touched_pct |
|---|---|---|
| 0.25 | 60.7 | 68.8 |
| 0.5 | 44.1 | 48.1 |
| 1 | 23.2 | 22.2 |
| 1.5 | 12.4 | 10.7 |
| 2 | 5.8 | 4.7 |
| 3 | 1.5 | 1.1 |
The exact SQL behind every number
WITH daily AS
(
SELECT
date,
toFloat64(any(close)) AS close,
toFloat64(min(low)) AS low,
toFloat64(max(high)) AS high
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'SPY'
AND date >= '2021-01-01'
AND date < '2026-10-01'
GROUP BY date
),
framed AS
(
SELECT
date,
low,
high,
lagInFrame(close, 1) OVER (ORDER BY date ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prior_close
FROM daily
)
SELECT
limit_distance,
round(100 * countIf(low <= prior_close * (1 - limit_distance / 100)) / count(), 1) AS buy_limit_touched_pct,
round(100 * countIf(high >= prior_close * (1 + limit_distance / 100)) / count(), 1) AS sell_limit_touched_pct
FROM
(
SELECT
low,
high,
prior_close,
arrayJoin([0.25, 0.5, 1.0, 1.5, 2.0, 3.0]) AS limit_distance
FROM framed
WHERE prior_close > 0
)
GROUP BY limit_distance
ORDER BY limit_distanceA buy limit 0.25% under the prior close was reached on 60.7% of those sessions, and the mirrored sell limit 0.25% above was reached on 68.8%. Push both out to 3% and the figures fall to 1.5% and 1.1%. The curve bends quickly, and the two sides track each other closely. That closeness is what ceiling-and-floor symmetry looks like in data.
Split the same measurement by calendar year and the hit rate moves with how wide the market's own daily range happened to be.
| year | buy_limit_touched_pct | sell_limit_touched_pct |
|---|---|---|
| 2021 | 17.1 | 17.9 |
| 2022 | 45.8 | 38.6 |
| 2023 | 18.8 | 22 |
| 2024 | 14.3 | 18.7 |
| 2025 | 23.2 | 18.8 |
| 2026 | 19.3 | 15.5 |
The exact SQL behind every number
WITH daily AS
(
SELECT
date,
toFloat64(any(close)) AS close,
toFloat64(min(low)) AS low,
toFloat64(max(high)) AS high
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'SPY'
AND date >= '2021-01-01'
AND date < '2026-10-01'
GROUP BY date
),
framed AS
(
SELECT
date,
low,
high,
lagInFrame(close, 1) OVER (ORDER BY date ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prior_close
FROM daily
)
SELECT
toYear(date) AS year,
round(100 * countIf(low <= prior_close * 0.99) / count(), 1) AS buy_limit_touched_pct,
round(100 * countIf(high >= prior_close * 1.01) / count(), 1) AS sell_limit_touched_pct
FROM framed
WHERE prior_close > 0
GROUP BY year
ORDER BY yearIn 2021, a buy limit 1% under the prior close was reached on 17.1% of sessions, against 17.9% for the sell limit 1% above. The final row, 2026, covers sessions through the end of September only, and reads 19.3% and 15.5%. These are counts of sessions that already happened, never an expectation for a future day.
How "reached" is counted
A session counts as reaching a buy limit when its low traded at or below the limit price, with the limit set as a percentage of the previous session's close. The sell side uses the session high at or above its limit. Touching a price is not the same as filling at it: a resting order also has to clear the orders ahead of it at that price, which queue position covers.
Sell limit vs sell stop: opposite sides of the market
A sell limit and a sell stop sit on opposite sides of the quote and do opposite jobs. The sell limit is a floor above the market: it exits into a rising price at a number you name, and it will not accept less. A sell stop sits below the market, and once the stock trades at or through that level, the stop releases an order to sell at whatever is then available. One insists on a price. The other hands over price control at a level you choose in advance. Enter one where you meant the other and the order either sits untouched or exits the position at a price you never approved. The trigger mechanics, plus the stop-limit variant that attaches a limit price to the released order, are in stop order vs limit order and stop order vs stop-limit order.
What brokers call it on the order ticket
Labels differ across platforms. One screen shows a side toggle set to Buy with a price type of Limit. Another lists the order as "Limit Sell". A third writes "Sell Limit". All of them collect the same two inputs: the side you are on, and the limit price. No platform asks whether your limit is a ceiling or a floor, since the side settles that already.
The other field worth reading is time in force, which decides whether an unfilled limit expires at today's close or carries into the next session. Time in force explained has the full set. Linking a sell limit above a position to a protective stop below it, with one cancelling the other, is the bracket, covered in bracket orders and OCO orders.
FAQ
Can a buy limit order fill above my limit price?
No. A buy limit is a ceiling: it fills at your limit price or lower, or it does not fill. The reverse holds for a sell limit, which fills at its price or higher.
Why did my buy limit fill the instant I sent it?
The limit price was at or above the best offer on arrival, which made the order marketable. It traded against the offer rather than at your limit, so the fill price is often slightly better than the number you typed.
Is a sell limit the same as a sell stop?
No. A sell limit is a floor placed above the current price and will not accept less. A sell stop sits below the current price and releases a sell order once the stock trades down to that level.
Does a limit order guarantee a fill?
No. A limit order controls price, not execution. A resting buy limit below the market fills only if sellers come down to it, and the panels above measure how often that happened at several distances.
What is the difference between "limit sell" and "sell limit"?
Nothing. They are two broker labels for one instruction: sell at this price or higher. The order is defined by its side and its limit price, whichever way the words are ordered on screen.
Every panel here carries the exact SQL beneath it, so the counting is open to inspection. To measure how often a limit at your own distance from the market was reached in a name you follow, ask the question in plain English on the Strasmore terminal.