Every trader I know has lived some version of this. You put a buy limit a little under the market, price drifts down, touches your level, hangs there for a few seconds, and bounces without filling you. Then the move you were positioning for plays out exactly the way you expected, and you get to watch it from flat. The first instinct is to blame the exchange, and I have read enough angry forum posts to know I am not the only one who has had that instinct. But nearly every unfilled limit order I have ever looked into, my own included, comes down to the same handful of boring mechanics. Once you see them, you can price around them.
The core thing to internalize is that a limit order is a place in a line. Nearly everything confusing about fills gets a lot less confusing once you start thinking in terms of the line.
Price-time priority, or why the book is a queue
Most venues you will ever touch, crypto and equities alike, match orders on price-time priority. Better-priced orders trade first. Among orders at the same price, whoever arrived earliest trades first. So when you place a buy limit at 100 and the best bid is already 100, you are joining the back of a line. Everyone who bid 100 before you is ahead of you, and for your order to fill, sellers have to sell enough at 100 to work through every order in front of yours.
The queue is not static. People ahead of you cancel, which moves you up. New orders arrive behind you. And on most venues your own actions can send you backwards: if you increase your size or change your price, you typically lose your place and rejoin as a brand new order. Reducing size usually lets you keep your spot. Nobody tells beginners this, and it quietly explains a lot of missed fills. You sat in the queue for an hour, nudged your size up, and silently restarted the clock.
A few futures markets use pro-rata matching instead, where trades at a price level get split across resting orders in proportion to their size. But if you are trading crypto or stocks, first in, first out is a safe assumption.
Why a touch is not a fill
Here is the scenario that generates the most anger. The candle wick clearly hits your price. Your order does not fill. It feels like the matching engine skipped you, and people have built entire conspiracy theories on that feeling. Three ordinary things explain almost all of it.
First, volume. The low of a candle tells you at least one trade happened at that price. It tells you nothing about how much traded there. Say the queue at your level held 50 BTC of resting bids and you were sitting behind 40 of them. If only 3 BTC trade at that price before the bounce, the first few orders in line get filled and everyone else gets a wick on their chart and nothing in their account. You were in the line, the line barely moved, and price left.
Second, venue. Crypto is fragmented across many exchanges, each running its own independent order book. The chart you are staring at might come from a different exchange than the one holding your order, or it might be an aggregated index price. Price touching your level on someone else's book does nothing for you. Your order lives in exactly one queue on exactly one venue, and only trades on that venue count. Equities have their own flavor of this across lit exchanges and off-exchange venues. If you want to know whether your level actually traded, check your own exchange's trade history, not whichever chart you happen to keep open.
Third, and this is the heuristic worth memorizing: you are only close to guaranteed a fill when price trades through your level rather than merely touching it. For the market to print below your buy limit, every resting bid at your price has to be cleared out first, yours included. A touch, on the other hand, is a coin flip weighted by your queue position. Traders who plan around touches get disappointed constantly. Plan around trades through the level and the surprises mostly stop.
Partial fills and the adverse selection tax
Sometimes you get a piece. A small slice of your order fills at the low, price runs, and now you are holding a runt position sized wrong for your stop and your plan. A partial fill is the queue doing exactly what queues do. The selling wave reached your order and ran out of steam partway through it. The actual mistake is not having a policy for this in advance. Decide before you place the order whether a partial gets completed at market, held as-is with a resized stop, or cancelled. Deciding in the moment, while price is moving, is how small mistakes turn into large ones.
There is also a quieter cost baked into passive orders, and it took me embarrassingly long to appreciate it. Think about when your buy limit fills easily and instantly. It happens when price is slicing down through your level with momentum, which is exactly when you least want to be buying. And when price gently touches your level and reverses, the case where your entry would have been perfect, that is when the queue is most likely to skip you. Passive fills are systematically skewed toward the moments you are wrong. The formal name is adverse selection, and it is the invisible tax that offsets the maker fee discount and the spread you thought you were saving. Limit orders are still usually the right tool. Just stop treating the price improvement as free, because on average some of it gets clawed back through which fills you receive and which ones you miss.
Pricing the order to match the urgency
The fix for all of this is deciding, before you touch the order ticket, how badly you need the trade, and letting that answer set the price. A rough checklist I actually use:
- If the trade is must-have, meaning missing it costs more than paying the spread, use a marketable limit: a buy limit set a few ticks above the current ask. It executes immediately like a market order but caps your worst price, so a thin book cannot run you over. Paying the spread up front is nearly always cheaper than missing the fill, watching the move, and chasing with a market order far higher.
- If the trade is nice-to-have, rest at your level and genuinely accept the miss. A missed fill is part of the strategy's math, priced in from the start. If you find yourself chasing every miss, you never really accepted it, and you are running a must-have strategy with nice-to-have orders.
- Buy the queue jump when it is cheap. When the spread is wider than one tick, bidding a tick above the current best bid makes you first in line at a fresh price level instead of last in line at the old one. That is often a trivial price for moving from the back of the queue to the front.
- Avoid resting exactly on round numbers. Orders cluster at levels ending in 00 and 50, so those queues run longest. A tick or two in front of the cluster gets you filled by the same move that leaves the round-number crowd empty-handed.
- Do not casually edit a resting order. Upsizing or repricing usually resets your queue position. If you must change something, prefer reducing size, which typically preserves priority, and check your own venue's rules once so you know for sure.
- Judge your odds by trades through your level on your own venue rather than wicks on an aggregate chart, and write down your partial fill policy before entry.
The failure mode this list guards against is depressingly common, and I have done it more times than I want to admit. You place a passive limit to save a few basis points of spread, the market touches you and leaves without filling, and twenty minutes later you pay far more than those basis points hitting the market out of frustration. The spread you refused to pay at the start was the cheapest exit from that whole sequence. The book is a line and your order holds a place in it. Price with the line in mind instead of the chart, and the missing fills stop feeling like a conspiracy and start being a number you can manage.