How Do You Set a Stop-Loss/Take-Profit Order? What's Different About OCO and Conditional Orders
A stop-loss/take-profit order is an order type that automatically closes a position once a preset trigger price is hit. Binance offers four main tools: Stop-Limit, Stop-Market, OCO, and conditional orders. This post tests how each one actually triggers using a real BTC spot position.
You're holding BTC on Binance but you're at work all day and can't watch the chart — the simplest hedge is to preset a stop-loss/take-profit. But the order panel is full of "Stop-Limit", "Stop-Market", "OCO", "Trailing Stop" — first-time users often can't tell them apart. This time we used a 0.005 BTC spot position on the Binance Official Site to test the actual trigger flow of all 4 stop-loss tools, and we've posted the fill price, slippage, and fees for each one. The short answer up front: a Stop-Limit order places a limit order once triggered, which may not fill; a Stop-Market order fills immediately at market price once triggered but carries slippage; OCO is a pair of opposite-direction orders bundled together (once one triggers, the other cancels automatically); and a conditional order is the more general concept behind all of them.
The Core Logic of Stop-Loss/Take-Profit
No matter which stop-loss tool you use, the underlying mechanism is the same: you preset a Trigger Price, and once the market price reaches it, the system automatically fires off a trade order.
The difference between tools is "what order gets fired once triggered":
- Stop-Limit: fires a limit order once triggered
- Stop-Market: fires a market order once triggered
- OCO: two opposite-direction trigger orders placed at the same time
- Conditional order: a more general concept that can trigger any order type (limit/market/stop, etc.)
Let's go through the differences one by one.
Stop-Limit
The most common type of stop order. It has two price parameters:
- Stop Price: when the market price touches this number, the order activates
- Limit Price: the price of the limit order that actually gets placed once activated
Test Scenario
We held 0.005 BTC with an entry price of 95,200 and wanted to protect a stop point. Settings:
- Stop price: 94,000 (if it drops to 94,000, the stop kicks in)
- Limit price: 93,800 (once activated, a 93,800 limit sell order is placed)
Why is the limit price lower than the stop price? Because if the market is still dropping fast when the trigger fires, setting the limit price too high might mean it never fills. Leaving a 200 USDT buffer makes the limit order more likely to actually execute.
Test Results
Simulated test: when BTC dropped to 93,950, the trigger fired and the system placed a 0.005 BTC limit sell order at 93,800 on the order book. At that moment the best bid was 93,920, so the limit order was immediately filled, at an average price of 93,920.
The fill price of 93,920 was higher than the set limit price of 93,800, meaning the actual result was better than expected. That's the nature of a limit order — the fill price is always ≥ the limit price.
The Risk of Stop-Limit
What if the market drops so fast it blows straight through the limit range? For example, BTC drops from 94,100 to 92,000 in one second. The 94,000 stop price gets crossed, and a 93,800 limit sell order is placed — but by then the market price is already 92,000, and nobody wants to buy at 93,800. That order just sits there unfilled until the market bounces back above 93,800.
This is the biggest risk of Stop-Limit: during a fast crash, your stop-loss might never actually execute.
Stop-Market
Stop-Market exists to solve Stop-Limit's "might not fill" problem. It has only one price parameter: the stop price. Once triggered, it immediately fires a market order.
Test Scenario
Same 0.005 BTC position at an entry price of 95,200. Setting:
- Stop price: 94,000
Test Results
When BTC dropped to 93,950, the trigger fired and the system immediately sent a 0.005 BTC market sell order. At that moment the best bid was 93,920, and the market order filled immediately. But because it's a market order, it may eat through several price levels — the final average fill price was 93,902 (18 USDT lower than the 93,920 seen at the moment of triggering — that's slippage).
Characteristics of Stop-Market
- Guaranteed to fill (as long as liquidity is normal)
- But the fill price is not controllable, and slippage can be large during sharp moves
- Suited for "I need to get out no matter what, a few USDT doesn't matter" emergency stops
Our experience: for high-liquidity coins like BTC and ETH, Stop-Market slippage is typically under 0.1%, which is acceptable. For altcoins, Stop-Market slippage can exceed 1% — Stop-Limit is safer in that case.
OCO Orders (One Cancels Other)
OCO is an "either/or" combined order — it places a take-profit order and a stop-loss order in opposite directions at the same time, and once one triggers, the other cancels automatically.
Test Scenario
We held 0.005 BTC at an entry price of 95,200 and wanted both:
- Take profit automatically if price rises to 97,000
- Stop loss automatically if price drops to 94,000
Placing these one at a time would require two separate orders. OCO combines both into one bundle:
- Take-profit side: limit price 97,000
- Stop-loss side trigger price: 94,000
- Stop-loss side limit price: 93,800 (the actual limit order placed once activated)
Test Results
When BTC rose to 96,950, the ask price on the book had already reached 97,000, and the take-profit side's limit order filled. At the same time, the 94,000 stop-loss side was automatically cancelled.
If instead BTC had dropped to 94,000 first, the stop-loss would have triggered and the take-profit side would have been cancelled automatically. Only one of the two ever executes.
Advantages of OCO
- Manage take-profit and stop-loss together in one setup
- Automatically mutually exclusive — both sides can never trigger
- Reduces manual intervention
OCO Gotchas
OCO is available on both the Binance website and app, but the entry point on mobile is a bit hidden. On the order panel there's a "Spot / Margin / Stop Limit" tab set — you have to tap "Stop Limit" to see the OCO option.
OCO orders can't be edited — you can only cancel and recreate them. If you want to adjust the take-profit or stop-loss price, you need to cancel the entire OCO order first, then set up a new one.
Conditional Orders (Trigger Order / Conditional Order)
A conditional order is a more general type of preset order. Once triggered, it can fire a limit order, a market order, or even a stop order. Recent versions of Binance have folded this feature into "Advanced Orders" or "Strategy Orders".
Use Case
Conditional orders are suited for more complex strategies. For example, your logic might be "buy BTC only after it breaks above 96,500" — this kind of "breakout follow" can't be done with a regular limit order (a limit buy order priced ≥ the ask would fill immediately). But with a conditional order you can set:
- Trigger condition: BTC price ≥ 96,500
- Action once triggered: fire a market buy order
It will only buy if that level is actually broken — no breakout, no buy.
Test Scenario
We set up a conditional order: buy 0.005 BTC at market price once BTC touches 96,500.
We waited 4 hours after setting it up, and BTC did rise to 96,500 — the conditional order triggered and filled immediately, at an average price of 96,512.
How Conditional Orders Relate to Stop Orders
A stop order is fundamentally just a special type of conditional order. Giving stop orders their own separate tab is mostly for user-friendliness. Underneath, the logic is the same for both: "price triggers a condition → an action executes".
Comparing the 4 Tools
| Tool | Number of Parameters | Action on Trigger | Guaranteed Fill | Slippage Risk | Best For |
|---|---|---|---|---|---|
| Stop-Limit | Stop price + limit price | Places a limit order | No | Low | Normal stop-loss, stable price action |
| Stop-Market | Stop price only | Immediate market order | Yes (with normal liquidity) | High | Emergency hedging |
| OCO | 4 prices, two directions | One side triggers, the other cancels | Depends on setup | Medium | Managing take-profit and stop-loss together |
| Conditional order | Trigger condition + action | Any action | Depends on the action type | Depends on the action type | Breakout follow, complex strategies |
Hands-On: How to Place a Stop Order on Binance
Step 1: Go to the Trading Page
Open the Official Binance App, then go to the spot page for the coin you want to trade (e.g. BTC/USDT).
Step 2: Switch the Order Type
There are several tabs at the top of the order panel: Limit, Market, Stop Limit. Tap "Stop Limit".
Step 3: Choose the Specific Subtype
Once you're in the Stop Limit panel, there are more detailed options:
- Stop-Limit
- Stop-Market
- Take Profit Limit
- Take Profit Market
- OCO
Note that although "stop-loss" and "take-profit" have different names, the underlying order-type logic is the same. "Stop-loss" triggers on an expected drop, "take-profit" triggers on an expected rise — the only difference is direction.
Step 4: Fill in the Parameters
Enter the stop price and limit price (if applicable) as explained above.
Step 5: Choose the Quantity
You can enter a specific BTC amount, or drag the percentage slider (25%/50%/75%/100% of your spot position).
Step 6: Confirm and Submit
Tap the "Sell" button, and a confirmation dialog will pop up. Check everything and confirm.
Step 7: Watch the Active Order Under "Open Orders"
After submitting, the stop order won't show up in "Trade History" right away — it goes into the "Open Orders" - "Conditional Orders" tab. That's where you can see the status of any stop orders that haven't triggered yet.
For a full walkthrough of what each tab on the order page means, see the note What Do the Tabs on Binance's Order Page Mean.
Stop Orders on Futures
The stop-loss/take-profit logic on futures is exactly the same as spot, with just a few detail differences:
- On futures, you can choose "Mark Price" or "Last Price" as the basis for the trigger price. Beginners should pick "Mark Price" to avoid being falsely triggered by a wick
- Futures supports "Trailing Stop", which lets the stop price automatically follow the market price
- Futures has a "Reverse Position" option, which opens a new position in the opposite direction the moment the stop order triggers
For more futures-related concepts, check out the other notes in the Glossary category.
Common Pitfalls
Pitfall 1: Setting Stop-Market to Protect Principal — and Getting Stopped Out Anyway
Setting the stop close to your entry price (say, entry at 95,200, stop at 95,150) looks like it only risks 50 USDT. But when the market is choppy, this can trigger the Stop-Market repeatedly — each time a small loss plus slippage plus fees — and after a few rounds the cumulative loss can end up bigger than one large stop would have been.
Lesson learned: set your stop at least 1.5%-2% away from your entry price to avoid getting knocked out by random noise.
Pitfall 2: Setting OCO Directions Backwards
Beginners sometimes mix up the take-profit and stop-loss directions, ending up with a setup that "stops out on the way up and takes profit on the way down". The Binance app will usually flag this automatically in the OCO panel, but you should still double-check carefully.
Pitfall 3: Setting the Stop-Limit Too Tight
Stop price 94,000, limit price 93,999 — the gap is too small. If the market gaps at all, this order is very unlikely to fill. Leave a 0.5%-1% buffer between the stop price and the limit price.
Pitfall 4: Forgetting to Cancel a Stop Order Before Opening a New Position
If you had a stop order placed and closed the position without cancelling it, that stop order is still sitting there. Your next new position could get accidentally triggered by the old stop order. Get in the habit of checking "Open Orders" after every position close.
Stop-Loss Strategies for Different Types of Traders
If you're new to Binance, start with the simplest possible approach:
- Beginners: set a Stop-Market on every position, with the trigger at entry price -2%. Simple logic, easy to execute
- Intermediate: use OCO to manage take-profit and stop-loss together — take profit at entry +5%, stop loss at -2%, for a 2.5:1 risk-reward ratio
- Experienced traders: adjust dynamically based on market structure, for example placing the stop below the most recent daily low
Whatever strategy you use, the key is to set it up before entering the trade, not to decide on the fly after you're already holding the position. Last-minute decisions are too easily swayed by emotion.
FAQ
Q: Does a stop order tie up margin? A: A spot stop order doesn't freeze funds (since it's selling an existing position). A futures stop order also doesn't require additional margin. However, OCO can freeze part of your balance under certain setups, depending on the conditional order type.
Q: Can I cancel a stop order after it's triggered? A: No. Once the stop is triggered and the trade order is fired off, it's already in the matching queue and can't be pulled back. You can only cancel the whole stop order before it triggers.
Q: Can I set the stop price as a "percentage"? A: The spot order panel only accepts a specific price number. But the Binance app's futures panel has a "percentage" shortcut input (e.g. typing -2% directly, which automatically converts to the corresponding price).
Q: Will a stop order still trigger if my network drops? A: Yes. Stop orders are set on Binance's servers, independent of your own network status. Even if your phone loses connection or the app is closed, the stop order remains active.
Q: Do stop orders have an expiration date? A: By default they're GTC (Good Till Cancelled — active until you cancel it). Some Binance order types support setting an expiration (e.g. 1 day, 1 week).
Q: Can I place multiple stop orders on the same coin? A: Yes. For example, on a single 1 BTC position, you could place a 0.5 BTC stop at 94,000 and a 0.5 BTC stop at 93,000, creating a laddered stop-loss.
Q: What are the fees on a stop-loss/take-profit order? A: Once triggered and actually filled, fees are charged according to the rate for that order type. Stop-Market is charged at the Taker rate of 0.1% (spot) or 0.05% (USDT-margined perpetual futures). A Stop-Limit order that fills as a Maker is cheaper.
Q: Can I see my stop orders on the Binance desktop client? A: Yes — the Official Binance App download page has Mac and Windows versions, and once you log in you can see the order page just the same way.
Q: Why does a stop order sometimes not trigger? A: Common reason 1: whether the trigger uses "Last Price" or "Mark Price" — the two can differ. Reason 2: a trading pair has low liquidity late at night, so the last price doesn't reflect the real market. Reason 3: you set a limit stop and, once triggered, the limit price couldn't fill. Checking these three things resolves 90% of the issue.