How to set a stop-loss and take-profit together
A stop-loss on its own tells the exchange when you are wrong. A take-profit on its own tells it when you are done. Placing both at once, linked so that one cancels the other, is what lets you walk away from the screen. Binance offers three different ways to build that pair, and they do not behave the same when something goes slightly wrong — a buy that only partly fills, a stop that triggers into a gap, a futures order that is rejected because you already have too many. This guide works one trade through all of it, with the fees included, because the fees change the answer more than most people expect.

KEY TAKEAWAYS
- An OCO is one order with two legs. Binance cancels the second leg as soon as the first one triggers — you can never be filled on both.
- A limit buy with TP/SL attached does nothing protective until the buy fills completely. A partial fill leaves the coins you did get with no exit at all, and locked.
- On our worked trade the fees turn a planned $50 loss into $56.75, and a 1:1 target needs a 56.8% win rate just to break even — not 50%.
- Binance Futures behaves the opposite way on partial fills: it places TP and SL for the full order size regardless. Same idea, different screen, different rule.
Which of the three ways should you use?
Pick by what you are holding right now, not by which name you have heard. If the coin is already in your spot wallet, use an OCO. If you are about to buy and want the exits in place from the first second, use a limit order with TP/SL ticked. If you are trading a perpetual contract, use the TP/SL box on the futures order form.
The three look alike in screenshots, which is exactly why people mix them up. The differences sit in the fine print of three separate Binance help pages, so here they are side by side.
| Spot OCO | Spot limit buy + TP/SL | Futures order + TP/SL | |
|---|---|---|---|
| Use it when | You already hold the coin | You are placing the buy now | You are opening a perpetual position |
| Where it lives | [Trade] → [Spot] → order type [OCO] | [Limit] → tick [TP/SL] | Order form → tick [TP/SL] |
| Legs | Take-profit limit + stop-limit | Limit buy, then TP, SL or both | Entry, then TP and SL |
| If the entry only partly fills | Not applicable — no entry leg | TP/SL never activates | TP/SL placed for the full order size |
| When one exit goes | The other is cancelled | The other is cancelled | The other is cancelled |
| Trigger reference | Last traded price | Last traded price | [Last Price] or [Mark Price], your choice |
Compiled from Binance’s help pages on OCO orders (updated 6 Jan 2026), OTO and OTOCO orders (updated 4 Feb 2026) and futures Limit TP/SL orders, all read 2 Oct 2026, plus the spot API documentation for the price rule. Labels in brackets are quoted from those pages.
If none of these words is familiar yet, read market, limit and stop orders first — this page assumes you know what a limit order and a stop-limit are.
How do you place an OCO when you already hold the coin?
Open spot trading, choose OCO, fill four boxes, press Sell. Binance’s own instructions are four steps: go to [Trade] → [Spot], pick [OCO] from the order-type dropdown, enter the details, and submit. The care goes into the four boxes.
Our worked trade: a $5,000 account risking 1%, so a $50 budget. You bought 0.04 BTC at $60,000. The chart says you are wrong below $58,800, so that is the stop. (Round numbers, chosen so the arithmetic is easy to follow; bitcoin traded near $85,000 on the day this was written, and every percentage below carries over to any price.) The four boxes, in the order Binance names them:
- [Limit] under Take Profit — $62,400. A plain limit sell resting on the book. It is your target.
- [Stop] — $58,800. The trigger price of the stop-limit. Nothing happens until the last traded price reaches it.
- [Limit] under Stop Loss — $58,700. The worst price the triggered stop is allowed to sell at. The $100 gap below the trigger gives the order room to fill on a fast move; it costs you
0.04 × $100 = $4in the case where it is used. - [Amount] — 0.04 BTC. One amount for both legs, which is the whole point.
Binance enforces one ordering rule for a sell OCO, stated in its API documentation: take-profit limit price > last traded price > stop price. Put the target below the current price, or the stop above it, and the order is refused. That is a feature, not an obstacle — an OCO is a bracket around where the price is now.
When one leg triggers, Binance cancels the other. The help page puts it in one line: “If one is triggered, the other is canceled.” So you cannot be filled twice, and you cannot end up short by accident. The developer documentation adds a detail that matters if you trade several coins: an OCO counts as two open orders against the exchange’s order limits, not one.
When this advice is wrong: the stop leg is a stop-limit, not a stop-market. If bitcoin gaps from $58,900 to $58,500 between two trades, the trigger fires, but no buyer exists at $58,700 or better, and your sell sits unfilled while the price keeps going. The $100 buffer makes that rarer on bitcoin. On a thin altcoin, where the book can be empty for a full percent, widen the buffer — and accept that a wider buffer is a bigger loss on the days it is used. Our stop-limit order page works through that trade-off.
How do you attach both exits while you are still buying?
Choose [Limit], enter the buy price and amount, then tick [TP/SL] and fill in a take-profit and a stop-loss. Binance calls the result an OTOCO — one triggers a one-cancels-the-other. The buy is the “one”; once it fills, it switches on an OCO built from your two exits.
Binance’s help page lists two shapes: OTO, a limit order plus either a take-profit or a stop-loss, and OTOCO, a limit order plus both. It also says plainly that only limit orders support the [TP/SL] function on spot, so a market buy cannot carry its exits with it. If you want both in place from the start, you are placing a limit buy.
This is the most convenient of the three, and the one with the sharpest edge, which is the next section.
What happens if the buy only partly fills?
Nothing protective happens at all. Binance’s page says it in one sentence: “If the limit order is only partially filled, the TP/SL will not be triggered.” The exits wait for a full fill. Until then, whatever you did buy has neither a target nor a stop.
Run our trade through it. You place a limit buy for 0.04 BTC at $60,000 with both exits ticked. The price touches $60,000, sellers hand you 0.025 BTC, then the price turns up and never comes back for the rest. You own $1,500 of bitcoin and the screen still shows a neat bracket. It is not live. If bitcoin then falls to $55,000, the loss on what you hold is 0.025 × $5,000 = $125 — two and a half times the $50 your plan allowed, on a smaller position than you meant to have.
The same Binance page adds the second half of the trap: on a buy, the coins you received from a partial fill cannot be withdrawn or used in new orders while the primary order is open. So you cannot simply place your own stop on the 0.025 BTC while the original order is still waiting. The repair is in a fixed order: cancel the unfilled remainder, open your spot balance and confirm the bitcoin now shows as available, then place a standalone OCO for the amount you actually hold — 0.025 BTC, not 0.04.
When this advice is wrong: on a deep pair like BTC/USDT, a small limit buy at or just inside the best price usually fills in one go, and the trap never springs. It bites on altcoins, on large orders relative to the book, and on limit prices set below the market in the hope of a dip — the exact situation where a partial fill followed by a move away is most likely.
Where should the two prices go once fees are counted?
Put the stop where the chart proves you wrong, size the position from that, and then check the target against the win rate it demands after fees. The fee step is the one people skip, and on spot it is bigger than it looks.
On Binance spot a regular account pays 0.10% as maker and 0.10% as taker, per the public fee table we read on 11 Sep 2026. So the take-profit resting as a limit order saves nothing over a market exit — at this tier both sides cost the same. Every round trip pays twice.
| Target | Take-profit | Gross gain | Net gain after fees | Break-even win rate, no fees | Break-even win rate, with fees |
|---|---|---|---|---|---|
| 1R | $61,200 | $48.00 | $43.15 | 50.0% | 56.8% |
| 2R | $62,400 | $96.00 | $91.10 | 33.3% | 38.4% |
| 3R | $63,600 | $144.00 | $139.06 | 25.0% | 29.0% |
Our own calculation. 0.04 BTC bought at $60,000; stop trigger $58,800, stop limit $58,700; Binance spot regular-tier fee of 0.10% on entry and on exit, read 11 Sep 2026. Loss if the stop fills at its limit: $52.00 of price plus $2.40 entry fee plus $2.35 exit fee = $56.75. “R” is the $1,200 distance from entry to the stop trigger. Break-even win rate = loss ÷ (loss + net gain).
Read the right-hand column. With a target as far away as the stop — the 1R row — you need to be right 56.8% of the time just to stand still. The fee-free textbook answer of 50% is wrong by almost seven points, and seven points is the difference between a strategy that works and one that slowly drains the account.
Two cheaper levers exist. Paying fees in BNB cuts the spot rate by 25% at the regular tier, which brings the 1R break-even down to about 55.6% on the same trade. And a target further away dilutes the fixed fee: at 3R the fees add four points rather than seven. Neither lever helps if the target sits somewhere the price is unlikely to reach — the chart decides where the target can go, and the table only tells you whether that place is worth the trade.
Fixing both prices at the start has one more cost. A common way of managing a winner is to take part of it once the move shows signs of tiring and move the stop on the rest up to the entry price. An OCO cannot do that by itself: it covers the amount you entered when you placed it. Managing a trade in stages means cancelling the bracket and placing a new one each time — deliberately, not as an afterthought. Our take-profit order page compares a single fixed target with partial exits and trailing stops.
Is it different on Binance Futures?
Yes, in three ways that matter. The box is the same — tick [TP/SL] on the order form — but the rules under it are not.
- Partial fills go the other way. Binance’s futures page: “Whether the primary order is fully or partially filled, the system always places the Take Profit and Stop Loss orders for the same size as the primary order.” The spot trap above does not exist here — but check the size, because the exits are sized to the order you placed, not to what filled.
- You choose the trigger reference. Either [Last Price] or [Mark Price]. Liquidation on futures runs on mark price whatever you choose, so a stop on last price can fire on a wick that never touched your liquidation level, and vice versa. You can also enter the levels as PnL, ROI% or Offset% instead of a price — useful for checking, dangerous as a way of choosing.
- There is a cap, and the stop is the order that hits it. Binance allows 10 open conditional orders per symbol on USDⓈ-M futures. Opening a position with TP/SL uses one slot for the take-profit and one for the stop. Binance itself describes the case where the take-profit is accepted and the stop is rejected because the cap was reached — a position with a target and no stop.
Binance also warns that if the exit is set too close to the entry, “there is a high likelihood that the secondary order will be canceled when the primary order is executed.” Leave room. If you are new to perpetuals, read leverage and margin and how to calculate your liquidation price before using any of this with borrowed money; the stop has to sit nearer than liquidation or it never gets the chance to work.
What should you check after placing the pair?
Four things, read from the order list rather than from memory or the chart:
- Both legs exist. An OCO appears in [Open Orders]; a limit buy with exits shows the exits behind a [View] link under TP/SL on the primary order. A line drawn on the chart is not proof that an order exists.
- The amount matches what you hold. After a partial fill, a manual sale or a second buy, the bracket covers the old number.
- The stop has a buffer. The limit under the stop should sit below the trigger on a sell, with room for a fast candle.
- Say it as one sentence. “If bitcoin trades at $58,800, sell 0.04 BTC at $58,700 or better; if it reaches $62,400, sell at $62,400; either one cancels the other.” If the screen does not say that, fix the screen.
Common mistakes
Trusting a bracket on a buy that has not finished filling. On spot, the exits attached to a limit buy wait for a full fill. Check the fill, not the bracket.
Setting the stop-limit equal to the trigger. A zero buffer means the stop can trigger and then sit unfilled on any fast candle. Leave a gap and price it into the plan.
Choosing the target first and the stop second. The stop comes from the chart and decides the size. The target then has to pass the after-fees break-even test, not the other way round.
Forgetting to rebuild the bracket after changing the position. A partial sale, a second buy or a manual close leaves the OCO covering the wrong amount.
Assuming spot and futures behave alike. Partial fills, trigger references and order caps all differ. A rule learned on one screen can be the wrong rule on the other.
Counting the take-profit as a guaranteed fee saving. At Binance’s regular spot tier, maker and taker are both 0.10%. The limit target gives you a price, not a discount.
Frequently asked questions
Can both the stop-loss and the take-profit fill on the same OCO?
No. An OCO is built so that when one leg triggers, Binance cancels the other. The worst case is the opposite problem: the stop-limit triggers in a fast move and does not fill, while the take-profit has already been cancelled — which is why the stop needs a price buffer.
Why did my take-profit and stop-loss not activate after my limit buy?
Most likely the buy only partly filled. Binance states that if the limit order is only partially filled, the TP/SL will not be triggered, and the coins from the partial fill cannot be used in new orders while the primary order is open. Cancel the remainder, confirm the coins are available, then place a standalone OCO for the amount you hold.
Can I attach a stop-loss and take-profit to a market buy on Binance spot?
Not through the TP/SL box. Binance says only limit orders support the TP/SL function on spot. After a market buy, place an OCO sell for the amount you received.
Where should I put the take-profit relative to the stop-loss?
Put the stop where the trade idea is proven wrong, then test the target against the win rate it requires after fees. In our worked trade on Binance spot, a target the same distance as the stop needs a 56.8% win rate to break even once both fees are counted, against 38.4% for a target twice as far.