Home / Guides / Stop-losses on the exchange
Why stop-losses should sit on the exchange
This page answers: how a stop watched by local software differs from a stop order placed on the exchange; what happens to each when the network, computer or app goes down; how to pick the trigger price on Binance, OKX and Bitget; and whether exchange stops can slip.
A stop has to work while your computer is offline, so it has to live on the exchange. Even then, the fill price is not fixed. In a fast market it can be noticeably worse than the trigger.
The difference is who watches the price
Local stop: the stop price exists only inside the software. The software watches the market, and when the price reaches the stop it sends a market order to close. Until then the exchange has no idea you have a stop.
Exchange-side conditional order: the stop is sent to the exchange when the position opens. The exchange stores the trigger and closes the position when the price gets there, whether your software is running or not.
On a quiet day you can't tell them apart. The difference shows up when something goes wrong, which is exactly what a stop is for.
When the network, computer or app fails
| Situation | Local stop | Exchange-side stop |
|---|---|---|
| Home internet drops | No prices, no close order. The stop is dead. | Still waiting on the exchange. |
| Computer sleeps, shuts down, loses power | Software not running. Stop is dead. | Unaffected. |
| App crashes or hangs | Stop is dead until the app recovers. | Unaffected. |
| Exchange API briefly unreachable | The close order may not get through. | Already on the exchange; triggering doesn't need your connection. |
| Very fast price move | Delay between seeing the price and sending the order can miss the moment. | Triggered by the exchange itself, without the round trip. |
Software on your own laptop and phone hits the first three all the time: a closed lid, an app sent to the background, a router restart. That is why TonyTrade does not use local stops. See How it works.
What TonyTrade does
- Every position opens with its stop on the exchange, using the exchange's own conditional order.
- No stop, no position. If the exchange rejects the stop or it can't be placed, the position is not opened.
- Reconcile on restart. Each time the app opens, it first asks the exchange for actual positions and open orders and lines up its records before doing anything else.
- Stop-all button to halt everything at once.
The AI only drafts plans. A fixed rule engine checks each plan against your limits (per-trade size, total exposure, maximum leverage, maximum daily loss, coin whitelist, daily order count). Anything outside them needs your own confirmation. See Safety design and Features.
TP/SL orders and trigger prices on each exchange
A conditional order watches one kind of price. For futures the usual choices are last price (the most recent trade) and mark price (the exchange's fair-value price, used for liquidation). OKX also offers index price.
| Binance | OKX | Bitget | |
|---|---|---|---|
| Futures stop order | TP/SL (Stop Market, Stop Limit and others); conditional orders in the API | TP/SL, an algo order | TP/SL |
| Trigger price options | Last or mark (API workingType: CONTRACT_PRICE / MARK_PRICE) | Last, mark or index (API slTriggerPxType: last / mark / index) | Last or mark (API slTriggerBy: market / mark) |
| API default | Last price | Last price | Last price |
| Spot | Stop-limit and similar orders, triggered by the pair's last price | TP/SL and trigger orders available | TP/SL available |
Compiled from each exchange's API docs and help center. Names and parameters change; follow the exchange's current docs. Supported markets are on Exchanges.
Choosing between last and mark price ties into wicks, covered in Wicks and how to handle them. In short: a last-price trigger fills closer to your level; a mark-price trigger is harder for a brief bad print to set off, but the fill can land further from the trigger.
Exchange stops can slip too
A triggered stop starts the exit. It does not fix the price. All three exchanges say so.
- Stop-market: once triggered, it fills against whatever is in the order book. In a fast or thin market, or when the price gaps, the fill can be some distance from the trigger, and a large order may walk through several levels. OKX's help page describes a price jumping straight across the trigger; Binance's own FAQ includes an example where the fill was far below the trigger.
- Stop-limit: once triggered, it only places a limit order. If the price runs through the limit, the order may never fill and the position stays open.
- Partial fills: one stop can fill in pieces at different prices. Your result is the average.
- Checks at trigger time: the exchange checks position, balance and price limits when the order fires, and can refuse it.
In normal conditions a stop-market usually fills near its trigger. Large slippage mostly happens in violent, illiquid moments. It is not the norm, but it happens, often when you need the stop most.
Practical checks
- After opening, look at the exchange's open orders or TP/SL page and confirm the stop is there.
- Check the stop's trigger type. Charts show last price by default; a mark-price stop may not fire even when the chart seems to touch it.
- After a manual partial close, check the stop quantity still matches.
- Don't place a futures stop too close to the liquidation price. Binance warns that liquidation may come first and the stop then expires.
- Don't edit the same position's stop by hand on the exchange while the app manages it. You risk closing twice or opening the other way.
Permissions needed to place stops: Safe API key permissions and API key setup. More on the FAQ. To hear when a version is available, leave your email. Site data handling is on Privacy; the team is on About. Back to the home page.
Sources
Official exchange pages cited here. Rules and screens change; the live page is what counts. Compiled by the TonyTrade team.
- Binance: How to Place Stop Loss and Take Profit Orders on Binance Futures (last or mark trigger; keep stops away from liquidation price)
- Binance: USDⓈ-M Futures New Algo Order (conditional orders, workingType)
- Binance: What Is a Stop Market Order?
- Binance: Different Order Types in Spot Trading (spot stops trigger on last price; fills depend on the book)
- OKX: OKX API v5 docs (algo orders, tpTriggerPxType / slTriggerPxType, default last)
- OKX: Why didn't the TP/SL execute at the set price? (slippage, unfilled limits, partial fills)
- OKX: How do I set TP/SL in futures trading?
- Bitget: Introduction to Take Profit and Stop Loss (TP/SL) in Futures Trading
- Bitget: Why Is My TP/SL Order Triggered but Not Executed?
- Bitget: Bitget UTA Place Order (tpTriggerBy / slTriggerBy: market / mark, default market)