← Back to blog
execution
order types
trading automation

Limit vs Market Orders: Execution Strategy for Algo Traders

Market orders bleed the spread; limit orders carry fill risk and adverse selection. A practitioner's guide to maker vs taker, order flags, and execution rules that protect your bottom line.

D&T Systems··10 min read

Maker vs taker: the real distinction

Every order you send does one of two things to the order book: it either removes resting liquidity or it adds it. A market order, or a limit order priced through the spread, crosses the book and removes liquidity. That makes you a taker. A passive limit order that rests on the book until someone else trades against it adds liquidity. That makes you a maker.

This distinction is not academic. Exchanges price the two roles differently because makers provide the liquidity that takers consume. Takers pay more; makers pay less, and on many venues makers are paid a rebate. The fills also differ: a taker order fills immediately at whatever price the book offers, while a maker order fills only if and when price comes to it. Choosing maker or taker is therefore a trade between certainty of execution and quality of price, and it is the first decision in any execution model.

Market orders: guaranteed fill, paid for in full

A market order does exactly one thing well: it fills. You give up control of price in exchange for certainty of execution. The cost of that certainty has three parts. You pay the spread (the gap between best bid and best ask), you pay the taker fee, and on any non-trivial size you pay market impact as your order walks up or down the book through successive price levels.

None of this makes market orders wrong. There are situations where the only correct choice is to cross the spread and be done:

  • Protective stops: a stop must fill; non-fill is the one outcome you cannot accept
  • Time-critical entries: a signal with a short shelf life is worth the spread
  • Illiquid exits: when you need out of a thin market, fill certainty beats price

Market orders are not the mistake. Using them by default on every trade is, including patient entries where you had no reason to pay the spread at all.

Limit orders: better price, real fill risk

A limit order specifies the worst price you will accept. Rest it on the passive side and you become a maker: you skip the spread and you pay the lower maker fee, or collect a rebate. The cost shows up elsewhere. Your order might never fill, so you miss the trade. And the fills you do get are biased against you, a problem we cover in the next section.

The fee difference alone is large enough to flip the math on a high-turnover system. Compare a $50,000 entry executed as a taker versus as a maker:

$50,000 entry, single side

Bybit perp taker (0.055%): $50,000 × 0.055% = $27.50

Bybit perp maker (0.020%): $50,000 × 0.020% = $10.00

Binance USDT-M taker (0.040%): $50,000 × 0.040% = $20.00

Binance USDT-M maker (0.020%): $50,000 × 0.020% = $10.00

Maker saving per side: $17.50 (Bybit), $10.00 (Binance)

Plus the spread you avoid by not crossing the book.

On a round trip the Bybit difference is roughly $35 of fees alone before spread. Run that strategy 200 times a month and the order type decision is worth $7,000 in fees, on the same trades, with no change to your edge.

Adverse selection: the hidden cost of resting limits

The fee saving on limit orders is real, but it is partly offset by a cost that never appears on your fee statement: adverse selection. A resting limit order is a standing offer that the rest of the market can hit whenever it wants. They hit it precisely when it is in their interest, which means precisely when it is against yours.

Picture a resting buy limit. It sits there harmlessly while price drifts up away from it, no fill. The moment a wave of selling pushes price down through your level, you get filled, in full, right as the market decides your level was too high. Your passive buys fill disproportionately when the next move is down; your passive sells fill when the next move is up. You are systematically the counterparty to informed flow.

This is why a backtest that assumes limit orders fill cleanly at the touch overstates your edge. In reality, the fills you would have gotten are the worst subset of the fills you modeled. Any honest execution model has to assume passive fills are slightly adversely selected, and weigh that against the fee saving. For a slow strategy the fee saving usually wins. For a strategy whose signal decays in seconds, adverse selection can eat the entire maker advantage.

Order flags: post-only, IOC, FOK, reduce-only, stop types

Beyond the limit/market choice, exchanges expose execution flags that change how an order behaves. Getting these right in code is the difference between a bot that does what you intended and one that quietly takes liquidity you meant to provide, or doubles a position you meant to close.

Execution flags quick reference

post-only: reject/reprice if it would take; guarantees maker. Use for passive entries.

IOC: fill what you can now, cancel the rest. Use to take liquidity without leaving a resting tail.

FOK: fill the entire size now or cancel completely. Use when a partial fill is useless.

reduce-only: can only shrink a position, never flip it. Use on every exit and stop.

stop-market: triggers, then sends a market order. Always fills, may slip.

stop-limit: triggers, then rests a limit. Better price, may not fill on a gap.

The two failure modes worth burning into memory: a protective stop should be stop-market so a gap cannot leave you unprotected, and every exit should carry reduce-only so a stale or duplicated order can never accidentally open a fresh position in the wrong direction.

Choosing by strategy frequency

The right order type is largely determined by how much your per-trade edge dwarfs your per-trade cost. The faster you trade, the smaller that ratio, and the more the order type decides whether you are profitable at all.

  • High-frequency and scalping: maker, non-negotiable

    When you target a few basis points per trade, a taker fee plus spread can exceed the entire edge. These strategies must post passively and live on the maker fee or rebate. Crossing the spread is a structural loss.

  • Slow swing: a taker entry is fine

    A position held for days to capture a multi-percent move can comfortably pay a 0.04% to 0.055% taker fee at entry. Certainty of getting filled on a high-conviction signal is worth more than saving two basis points.

  • Mean-reversion: limits at the extremes

    Mean-reversion wants to buy weakness and sell strength, which lines up naturally with resting limits at price extremes. You provide liquidity exactly where the strategy wants to act, earning the maker fee, and accept that some limits will not fill.

Maker vs taker fees flip the math →

Before you decide which order type your strategy can afford, compute your real per-trade cost. Our Trading Fee Calculator compares maker and taker fees across Bybit, Binance, Hyperliquid, and more for your exact position size.

Open fee calculator

Practical execution rules for a bot

Theory aside, a production execution layer comes down to a few rules that protect you from the predictable failure modes. These are the ones worth coding first.

  • Passive entry with a timeout-to-aggressive fallback

    Post a limit order with post-only and start a timer. If it fills, you captured the maker fee. If it has not filled within your timeout, cancel and cross with an IOC. You get the best price when the market lets you and certainty when it does not.

  • Never run a naked stop-limit across a gap

    A stop-limit that triggers into a gap can leave price trading well past your limit with no fill and no protection. Use stop-market for protective stops, or pair a stop-limit with a wider stop-market backstop so something always closes the position.

  • Slice large orders instead of one market sweep

    A single market order for size walks the book and pays escalating impact. Break it into child orders over time, post passively where you can, and only cross for the remainder. The saving on impact frequently exceeds the spread you were worried about.

Summary

  • Every order is maker or taker; the role decides your fee and the quality of your fill
  • Market orders buy certainty; use them for stops, time-critical entries, and illiquid exits
  • Limit orders save the spread and the taker fee but carry fill risk and adverse selection
  • Protective stops should be stop-market; every exit should be reduce-only
  • Faster strategies must be makers; slow swing can afford to take, mean-reversion likes limits
  • In code: passive entry with timeout-to-aggressive fallback, no naked stop-limits, slice large size

Frequently asked questions

Is a limit order always cheaper than a market order?

Not always. A limit order earns the maker rebate or a lower maker fee, and it avoids paying the spread, so the headline cost is lower. But if it never fills, you miss the move entirely, and resting limits suffer adverse selection: they fill fastest when price is about to run against you. The real comparison is expected cost including the probability and quality of fills, not just the posted fee.

What is the difference between a maker and a taker?

A taker removes liquidity from the order book by crossing the spread (a market order, or a limit order priced through the book). A maker adds liquidity by resting an order that someone else later trades against (a passive limit order). Exchanges charge takers more and often pay or discount makers. On Binance USDT-M futures the base tier is roughly 0.02% maker and 0.04% taker; on Bybit perpetuals it is about 0.02% maker and 0.055% taker.

What is a post-only order and when should I use it?

A post-only order is rejected (or repriced) if it would immediately match and take liquidity, guaranteeing you stay a maker. It is the default entry flag for any latency-sensitive or high-frequency strategy that depends on the maker fee or rebate. The trade-off is rejections in fast markets, so your code must handle the reject and decide whether to retry passively or fall back to crossing.

Should I use a stop-market or a stop-limit for my stop loss?

Use a stop-market for stops you cannot afford to skip. A stop-limit can fail to fill if price gaps straight through your limit, leaving you in a losing position with no protection, which is exactly when you needed the stop most. Stop-limits are reasonable for entries or take-profits where non-fill is acceptable, but a protective stop should almost always be stop-market.

Does order type matter more for high-frequency or for swing strategies?

It matters far more for high-frequency and scalping strategies, where fees and spread are a large fraction of the per-trade edge, so they must trade as makers to survive. A slow swing strategy holding for days can absorb a taker fee at entry because the move it targets dwarfs the cost. Mean-reversion sits in between and usually benefits from limit orders placed at extremes.

Know what each order type really costs you

Maker and taker fees flip the math on every strategy. Use our free Trading Fee Calculator to compute your real per-trade cost across Bybit, Binance, Hyperliquid, and more before you commit to an execution style.