An OCO — one-cancels-other — links two orders so that filling one automatically cancels the other. A bracket order is an entry with an OCO exit pair attached: when the entry fills, a protective stop and a profit target go live together, and whichever is reached first closes the trade and removes the other.
The mechanical description undersells what these orders actually do. A bracket forces you to name your exit before the trade exists. It is the closest thing an order ticket has to a written plan, and for most traders it is the single highest-leverage change available on the execution side of the process.
How an OCO works
Two orders, one link. Say you are long 100 shares from $50, your invalidation is $48, and your first target is $54. You submit:
- A sell stop at $48 — the protective exit.
- A sell limit at $54 — the target exit.
- Linked as OCO, so filling either one cancels the other.
The linkage is doing real work. Without it, both orders live independently — and if the target fills at $54, that $48 stop is still sitting there. Should price later fall to $48, it executes against a position you no longer own, which opens a fresh short. Traders discover this the expensive way: an unexplained losing position appearing hours after a winning trade closed. The OCO exists to make that impossible.
How a bracket order works
A bracket is one step earlier in the sequence. Instead of entering and then arranging exits, you define all three prices at once:
- Entry — a limit order at your level, or a stop order above a break.
- Stop — placed automatically once the entry fills, at your invalidation.
- Target — placed at the same moment, linked to the stop as an OCO.
The name is literal: the two exits bracket the entry, one above and one below. The critical property is that the exits are specified before you know whether the trade is working. You cannot widen a stop in a panic that has not happened yet, which is precisely why brackets improve results for traders whose problem is discipline rather than analysis — the failure mode dissected in revenge trading.
| OCO | Bracket | |
|---|---|---|
| What it links | Two exit orders | An entry plus an OCO exit pair |
| When you submit it | After you are in a position | Before the entry fills |
| Prevents | A stray order flipping your position | Entering without a defined exit |
| Main benefit | Clean order management | Discipline, enforced mechanically |
| Best for | Positions you built manually | Any planned setup with a known level |
Partial fills, scaling out, and the OCA group
The simple two-order picture breaks the moment you take partial profits. If your stop covers 100 shares and your first target sells 50, filling that target must reduce the stop to 50 — not cancel it, and not leave it covering a position twice the size that remains.
Better platforms handle this with a one-cancels-all or OCA group that resizes the remaining orders proportionally. Weaker ones simply cancel the stop, leaving the rest of your position naked until you notice. Test this deliberately, with minimum size, before you rely on it. Enter one bracket, take a partial, and look at what happened to the stop. Two minutes of testing beats discovering the answer with real size on, and it pairs directly with the mechanics in how to take partial profits.
Where the linkage actually lives — and why it matters
Here is the part most explanations skip. The individual stop and limit orders may rest at the exchange, but the cancel-the-other logic usually does not. On most retail platforms it runs on the broker's or the platform's server, which watches your fills and issues the cancel. That server is a dependency.
If your platform is down, your connection drops, or the broker has an outage, the linkage may not fire even though the individual orders exist. Worse, on some platforms a bracket's exit orders are held locally and are never sent to the exchange at all until triggered — meaning a disconnection leaves the position entirely unprotected. These are not equivalent architectures and they are not always documented clearly.
Ask your broker one specific question: if my platform disconnects right now, which of my orders are resting at the exchange? A firm that answers precisely is telling you something good. A firm that answers vaguely is telling you something too. That question belongs alongside the reliability checks in how to choose a broker for day trading.
Time-in-force: the setting that quietly cancels your protection
Every order carries a time-in-force instruction, and it decides how long your bracket survives. FINRA's summary of the common options is worth knowing (FINRA, Time Parameters and Qualifiers on Stock Orders):
- Day — the firm keeps trying to fill your order throughout the current trading day, then it expires. A day-order bracket on a position you hold overnight leaves you unprotected at the next open.
- Good 'til canceled (GTC) — the firm keeps working the order for a set period unless you cancel it. Confirm what your broker's period actually is; it is a firm-level policy, not a market-wide standard.
- Fill or kill (FOK) — the entire order executes immediately or not at all.
- Immediate or cancel (IOC) — fill as much as possible right away, cancel the rest.
- All or none (AON) — no partial fills, but without the immediacy of FOK.
The default on your platform is a setting somebody else chose. Check it once, deliberately, rather than assuming it matches how long you intend to hold. Anyone carrying positions past the close should read that alongside overnight and weekend gap risk.
What a bracket does not protect you from
Three limits worth stating plainly, because brackets are often sold as a safety net they are not:
- Gaps. A stop inside a bracket is still a stop. If price opens below it, you are filled at the open, not at your stop price.
- Halts. Nothing fills while trading is stopped. A market-wide circuit breaker triggers at three thresholds — 7% (Level 1), 13% (Level 2) and 20% (Level 3) single-day declines in the S&P 500 — and a Level 3 breach halts market-wide trading for the remainder of the trading day (SEC Investor.gov, Stock Market Circuit Breakers). Your bracket waits, exposed, for as long as the market is closed.
- A bad plan. A bracket executes the stop and target you chose. If the stop is at a level that has nothing to do with where your idea is wrong, the bracket will faithfully take you out at a meaningless price, on schedule.
Frequently Asked Questions
What is an OCO order?
OCO stands for one-cancels-other. It links two orders so that when one is filled, the other is automatically cancelled. The usual use is a stop below your position and a target above it: whichever is reached first closes the trade, and the linkage removes the other so you cannot be left holding a stray order that opens a new position.
What is a bracket order?
A bracket order is an entry order with an OCO exit pair attached. When the entry fills, the platform automatically submits a protective stop and a profit target linked as one-cancels-other. It is called a bracket because the two exits sit on either side of your entry price, bracketing the position.
Are OCO and bracket orders held at the exchange?
Usually not. On most platforms the linkage logic lives on the broker's or platform's server, which watches your fills and cancels the opposing order. The individual stop and limit orders may rest at the exchange, but the cancel-the-other step depends on that server being reachable. Ask your broker specifically where the logic runs before relying on it.
Do bracket orders work overnight or during a halt?
They rest, but they cannot fill while trading is stopped. A market-wide circuit breaker at the Level 3 threshold of a 20% single-day decline in the S&P 500 halts trading for the remainder of the day, and your bracket simply waits. Time-in-force also matters: a day order expires at the close, so a bracket meant to protect an overnight position must be entered as good-til-cancelled.
Bottom line
OCO and bracket orders are the cheapest discipline you can buy. They cost nothing, they take an extra ten seconds, and they move the exit decision from the moment you are least rational to the moment you are most. Use a bracket on every planned setup so the stop and target are submitted with the entry. Test how your platform handles partial fills before you need it to work, set the time-in-force deliberately, and find out where the cancel logic actually runs. Then remember what remains outside the order ticket: gaps, halts, and the quality of the levels themselves. The order types underneath it all are covered in market vs limit vs stop orders, and the case for choosing a plain stop over a stop-limit order inside your bracket is worth reading before you set one up.
