Crypto order types explained: market, limit, stop and OCO
Crypto order types explained: market vs limit, how stop-loss, stop-limit, OCO and post-only work, and what slippage costs. Worked example with BTC, Nov 2026.

Contents
- The three basic types: market, limit and stop
- Market orders: execution is certain, price is not
- Limit orders: price is certain, execution is not
- Stop orders: stop-loss, stop-limit and take-profit
- A worked example with bitcoin on November 3, 2026
- Execution conditions: GTC, IOC, FOK and post-only
- Futures: mark price, reduce-only and price protection
- Common mistakes
- Limitations
- FAQ
Crypto order types differ in one thing: what you lock in and what you leave to the market. A market order guarantees execution but not price. A limit order guarantees price but not execution. A stop order waits for a trigger level and only then becomes a market or limit order. Everything else on an exchange's order ticket (stop-limit, take-profit, trailing stop, OCO, post-only, iceberg) is a combination of those three building blocks plus execution conditions such as "fill now or cancel". Here is how they work on Binance, Bybit and Coinbase, where the documentation differs, and what it meant for a bitcoin trade on November 3, 2026.
The three basic types: market, limit and stop
Every exchange with an order book matches buyers and sellers by price, then time: the best price fills first, and at the same price the earlier order wins. Coinbase Exchange documentation calls this price-time priority. The order type is simply the way your order joins that queue.
| Type | You set | Guaranteed | Risk | Fee role |
|---|---|---|---|---|
| Market | size only | immediate fill | price: slippage | always taker |
| Limit | price and size | price no worse than yours | may never fill | maker if it rests on the book |
| Stop (stop-market) | trigger price and size | triggers at the level | fill price after the trigger | taker |
| Stop-limit | trigger, limit, size | price no worse than the limit | may not fill in a crash | depends on the limit |
| OCO | two orders at once | the other is cancelled when one fires | same as each leg | depends |
The Binance Spot API lists exactly these blocks: LIMIT, MARKET, STOP_LOSS, STOP_LOSS_LIMIT, TAKE_PROFIT, TAKE_PROFIT_LIMIT and LIMIT_MAKER. Everything else in the interface, OCO and trailing stops included, is assembled from them.
Market orders: execution is certain, price is not
A market order tells the exchange "buy this much at the best available prices right now". It eats through the book level by level until the size is filled. Coinbase's documentation flags two risks: no price guarantee, and a large order may execute across multiple price levels. It also notes that market orders are always takers and pay taker fees.
The gap between the price you expected and the price you got is slippage. Kraken gives the formula: (execution price − expected price) / expected price × 100%. Their example: you expected ETH at $2,000 and paid $2,020, which is 1% slippage. On BTC/USDT in a quiet hour that is hundredths of a percent, but when the market moves fast the book thins out and the same market order can slip by a percent or more. That is why Bybit's API has a slippage tolerance for market orders: 0.01% to 10% of the best price, or 1 to 10,000 ticks; if the price runs further, the order does not fill.
One detail from the Binance docs: a market order can be sized in quote currency rather than coins. The quoteOrderQty parameter means "buy BTC with 500 USDT", and the exchange works out the amount from the actual fills.
Limit orders: price is certain, execution is not
A limit order sets the worst price you accept. A buy at $76,000 fills at $76,000 or lower; a sell at $80,000 fills at $80,000 or higher. If the market never reaches your price, the order rests in the book until it fills or you cancel it. That is the main risk: the price can turn an inch from your level and you get no trade.
Exchanges reward the patience with a discount. Whoever places an order in the book and waits adds liquidity and is a maker; whoever takes an existing order is a taker. Binance's fee schedule charges regular spot users the same 0.1% either way (0.075% when paying in BNB), but as volume grows the maker rate falls faster than the taker rate, and on derivatives many venues charge makers less from the base tier.
Important: a limit order is not automatically a maker order. If you place a buy above the current best ask, the exchange fills it immediately like a market order, at the best available price, but charges the taker fee. Post-only exists to prevent exactly that (see below).
Stop orders: stop-loss, stop-limit and take-profit
A stop order sleeps until the price touches the trigger. Then it becomes an ordinary order, market or limit, depending on what you chose. That gives two variants.
Stop-market (stop-loss): the trigger places a market order. It will almost certainly fill, but at whatever is in the book after the trigger. In Binance's docs this is STOP_LOSS, which "executes a MARKET order when the trigger conditions are met".
Stop-limit: the trigger places a limit order at your price. It protects you from a bad fill, but in a crash the price can jump through your limit and leave you in the position. Binance Academy warns that the price could move through the limit before it fills.
Take-profit works the same way with the trigger on the profitable side: TAKE_PROFIT and TAKE_PROFIT_LIMIT in Binance terms. A trailing stop is a stop that follows the price: in the Binance Spot API you replace a fixed stopPrice with trailingDelta, the distance from the high (for a sell) or the low (for a buy) in basis points.
Step by step, placing a stop-limit sell:
- Pick the level below which your trade idea is wrong. That is the trigger (stop price).
- Set the limit price a little below the trigger. The gap gives the order room to fill while the price is already moving: 0.2–0.5% is usually enough for BTC in a calm market.
- Check which price fires the trigger: last trade or mark price (a separate setting on futures, see below).
- Make sure the stop size equals the position size and, on futures, that reduce-only is on; otherwise the stop can open a position the other way.
A worked example with bitcoin on November 3, 2026
Take our market pulse as of 1:00 PM ET on November 3, 2026. BTC traded near $77,644 on Binance; the 24-hour range was $76,389–$77,887, the 7-day low $76,326 and the 200-day EMA $76,650. The Fear & Greed Index read 26, "Fear", and DVOL (expected volatility implied by Deribit options) stood at 40 points annualized.
Say a trader bought 0.1 BTC and wants protection under the weekly low.
| Variant | Setup | Outcome if BTC drops to $76,000 within a minute |
|---|---|---|
| Stop-market | trigger $76,300 | sold at book prices: maybe $76,250, maybe $76,100 |
| Stop-limit | trigger $76,300, limit $76,100 | sold no worse than $76,100, or still in the position if the price gaps through |
| OCO | take-profit limit $80,000 + stop-limit $76,300/$76,100 | one fires, the other is cancelled |
Why a $200 gap between trigger and limit: at DVOL of 40% annualized, a one-standard-deviation daily move in BTC is about 2.1% (40% / √365), roughly $1,600 from $77,644. A $300–$400 move within a minute is not unusual in that regime, and a limit set right at the trigger risks not filling. If volatility doubles, it makes sense to double the gap. Live price, funding and volatility are on the bitcoin page and in the Numbers block.
Execution conditions: GTC, IOC, FOK and post-only
A limit order has a second parameter that beginners rarely notice: how long it lives and what happens to the unfilled remainder. On Binance it is the timeInForce field, and the help page defines three values:
- GTC (Good-Till-Cancel): the order lives until it is fully filled or you cancel it. The default almost everywhere.
- IOC (Immediate-Or-Cancel): fill whatever is available right now at your price or better, cancel the rest. Useful when you want a price no worse than X but do not want to sit in the book.
- FOK (Fill-Or-Kill): fill immediately and in full, otherwise cancel everything. For large orders that must not be split.
Coinbase Exchange adds GTT (Good-Till-Time, expires at a set time), and Binance Futures adds GTX and GTD. GTX is post-only for futures; GTD is a lifetime in seconds, at least 600.
Post-only (LIMIT_MAKER on Binance Spot) guarantees you are the maker. If such an order could fill immediately against an existing order, the exchange rejects it instead of filling it at the taker rate. The Binance Spot API states the order "will be rejected if the order immediately matches and trades as a taker". Bybit's API describes the same effect for the PostOnly value.
Iceberg: a large limit order split into small visible slices. Only one slice shows in the book; the rest are added as each slice fills. Binance's example: 1,000 BNB sold in 10 BNB pieces. Iceberg is not compatible with IOC and FOK.
Futures: mark price, reduce-only and price protection
On derivatives, stop orders raise a question spot trading does not have: which price counts as "reached". On Binance USDⓈ-M Futures the workingType parameter has two values, CONTRACT_PRICE (last trade, the default) and MARK_PRICE. Bybit's triggerBy field offers three: LastPrice, IndexPrice and MarkPrice.
The difference matters. The last trade on one exchange can dip for a second on a thin book and wipe out stops while prices elsewhere did not move. The mark price is derived from a multi-exchange index and smoothed, so a trigger on it reacts less to one venue's wick. The flip side: liquidations are also calculated on the mark price, so a stop on the last trade may not fire before the liquidation does. The mechanics are covered in our liquidations explainer.
Three more flags worth knowing:
- reduceOnly: the order can only shrink the position. Bybit's wording: "your position can only reduce in size if this order is triggered". Without it, a 0.2 BTC stop on a 0.1 BTC long closes the long and opens a 0.1 BTC short.
- closePosition / closeOnTrigger: close the whole position without specifying size. On Binance Futures it works with STOP_MARKET and TAKE_PROFIT_MARKET.
- priceProtect on Binance Futures: if the mark price and the last trade have diverged beyond a threshold at the moment of the trigger, the stop does not execute. A guard against firing on a wick.
How futures stops interact with the crowd shows up in open interest and funding: on November 3, 2026, BTC open interest on Binance was 99,526 BTC (about $7.73B) and the funding rate sat at the baseline 0.01% per 8 hours.
Common mistakes
- A market order on a thin pair. On BTC/USDT with about $1.07B in 24-hour volume (Binance, November 3, 2026) slippage on a small order is barely visible. On an altcoin with a few hundred thousand dollars of volume, the same market order can slip several percent.
- A stop-limit with no gap. Trigger $76,300 and limit $76,300 often do not fill in a crash: the price passes the level in one trade and the limit is left hanging above the market.
- A limit buy above the market. It fills immediately as a taker. If you wanted the maker fee, use post-only.
- A futures stop without reduce-only. Instead of closing the position you flip it.
- Last-price trigger on a thin market. A short wick on one exchange takes the stop out. On futures, a mark-price trigger is more robust.
- One GTC stop for the whole position, then forgotten. A week later the market is different, the stop is where it was.
Limitations
Names do not match across exchanges. What Binance calls STOP_LOSS is a Conditional order on Bybit and a Stop on Coinbase; a stop-limit may be called Stop Limit on one venue and Trigger Limit on another. Before the first trade on a new platform, read its documentation rather than relying on habit. Execution conditions differ too: Binance Spot does not accept GTD, Coinbase does not use GTX, and Bybit allows RPI only for designated market makers.
Decentralized exchanges built on automated market makers (Uniswap and the like) have no order book, so classic limit and stop orders do not exist there in their original form; slippage tolerance plays the role of a "limit". Perp DEXs with an order book, such as Hyperliquid, are closer to centralized exchanges.
Finally, no order type protects you from a trading halt, an exchange outage or a weekend gap on CME: a stop may fill at the first available price, not yours.
FAQ
What is the difference between a stop-loss and a stop-limit? A stop-loss becomes a market order after the trigger and almost always fills, but at book prices. A stop-limit becomes a limit order: the price is no worse than you set, but in a crash it may not fill at all.
Why did my limit order fill instantly with a taker fee? Because the limit price was already inside the book: a buy above the best ask or a sell below the best bid. To make sure the order rests in the book as a maker, use post-only; if it could fill immediately, the exchange rejects it.
What is an OCO order? One-Cancels-the-Other: two linked orders, usually a take-profit limit and a stop-loss. When one fires, the other is cancelled automatically. Binance also describes OTO (the second order activates after the first fills) and OTOCO (a filled order places an OCO pair).
Which price triggers a stop on futures? The one you chose in the settings: last trade (the default on Binance and Bybit) or mark price. The mark price is more robust to single-exchange wicks, and it is the price liquidations are calculated on.
This is not investment advice.



Comments