Stop-Market Orders: Triggering Execution and Managing Slippage
Summary
A stop-market order waits for a specified trigger price and then submits a market order. Traders commonly use it to exit a long position with a sell order, cover a short with a buy order, or enter after a breakout. The document illustrates a BTC spot or margin sell order and identifies configurable properties such as trigger type, time in force, and quantity.
The key trade-off is execution priority after the trigger versus certainty about price. A fast or gapping market can result in substantial slippage, and triggering does not guarantee that the order will be filled; the market may be unavailable or the order may be rejected. A stop-limit order offers price protection but can remain unfilled. The examples explain order configuration rather than presenting performance data, so they do not quantify slippage or compare outcomes across venues.
Key ideas
- A stop-market order submits a market order after its trigger price is reached.
- It can be used for protective exits or entries after a price breakout.
- The trigger price does not guarantee the eventual execution price or a fill.
- Gaps and fast markets can cause substantial slippage, while unavailable markets or rejection can prevent execution.
- A stop-limit order adds price protection but may not execute.
Tags
Full text
# Stop-Market
# Stop-Market
`FIX OrdType <40>=3` (Stop)
A *Stop-Market* order releases a *Market* order when its trigger price is reached. It is often
used as a stop-loss: a SELL order against a LONG position or a BUY order against a SHORT position.
## Use cases
Use a *Stop-Market* order to prioritize execution after a price level is breached, such as for a
protective stop-loss or breakout entry. The trigger price is not a guaranteed fill price: a fast or
gapping market can produce substantial slippage, and the released order can still be rejected or
remain unfilled when no market is available. A *Stop-Limit* provides price protection instead but
may not fill.
## Example
In the following example we create a *Stop-Market* order on the Binance Spot/Margin exchange
to SELL 1 BTC at a trigger price of 100,000 USDT, active until further notice:
```rust tab="Rust"
use nautilus_model::{
enums::{OrderSide, TimeInForce, TriggerType},
identifiers::InstrumentId,
types::{Price, Quantity},
};
let order = self.order().stop_market(
InstrumentId::from("BTCUSDT.BINANCE"),
OrderSide::Sell,
Quantity::from(1),
Price::from("100000"),
Some(TriggerType::LastPrice), // optional (default DEFAULT)
Some(TimeInForce::Gtc), // optional (default GTC)
None, // expire_time
Some(false), // reduce_only (default false)
None, // quote_quantity (default false)
None, // display_qty
None, // emulation_trigger
None, // trigger_instrument_id
None, // exec_algorithm_id
None, // exec_algorithm_params
None, // tags
None, // client_order_id
);
```
```python tab="Python"
from nautilus_trader.model import InstrumentId
from nautilus_trader.model import OrderSide
from nautilus_trader.model import Price
from nautilus_trader.model import Quantity
from nautilus_trader.model import StopMarketOrder
from nautilus_trader.model import TimeInForce
from nautilus_trader.model import TriggerType
order: StopMarketOrder = self.order_factory.stop_market(
instrument_id=InstrumentId.from_str("BTCUSDT.BINANCE"),
order_side=OrderSide.SELL,
quantity=Quantity.from_int(1),
trigger_price=Price.from_int(100_000),
trigger_type=TriggerType.LAST_PRICE, # <-- optional (default DEFAULT)
time_in_force=TimeInForce.GTC, # <-- optional (default GTC)
expire_time=None, # <-- optional (default None)
reduce_only=False, # <-- optional (default False)
tags=None, # <-- optional (default None)
)
```
See the
[`StopMarketOrder` API reference](/docs/python-api-latest/model/orders.html#nautilus_trader.model.StopMarketOrder)
for further details.
## Related guides
- [Orders](index.md#trigger-type) - Trigger types and other execution instructions.
- [Emulated orders](emulated.md) - Emulating conditional orders on venues without native support.
- [Execution](../execution/) - How orders reach the venue and fills are handled.Shown in full with attribution under the source's licence. Licence: LGPL-3.0
This summary was written by Stratmill's research agent from the original; it is not a copy of the source.