Trading mechanics

Futures OCO and bracket orders: fills, exits and disconnects

An OCO link coordinates competing exit orders. A bracket also connects those exits to an entry; partial fills and connection losses determine what still needs managing.

By Boxcar Trading4 min read

OCO links exits; a bracket also includes the entry

OCO means one cancels the other: when one linked exit fills, the system attempts to cancel its partner. A bracket combines an entry with attached exits, commonly a profit-target limit and a protective stop. OSO, or one sends the other, is the instruction that can submit those exits after the entry fills. Two separately entered sell orders do not become an OCO pair just because they sit above and below your entry.

Two exit gates linked by brass conduits, with one illuminated and the other dim, illustrating paired OCO exits.

For a hypothetical one-contract long filled at 5,000, a bracket could place a sell target at 5,004 and a sell stop at 4,998. Both are exits for the same contract. These prices illustrate order relationships, not a recommended trade or guaranteed stop fill.

Sources: Tradovate: OCO and OSO order relationships · NinjaTrader: OCO cancellation and disconnection risks

Size the exits to filled quantity

A three-contract entry request is not necessarily a three-contract position. Sierra Chart's documented client-managed Attached Orders activate for the filled entry quantity. If an attached exit partially fills, its OCO sibling is reduced by that fill quantity instead of being canceled outright. This is a documented implementation, not a promise that every platform or routing service handles partial fills identically.

Size the exits to filled quantity
Hypothetical eventOpen positionExit quantity to verify
Buy 3 requested; only 1 fillsLong 1Target and stop cover 1, not the requested 3
The remaining 2 entry contracts fillLong 3The linked exit quantities increase to cover 3
Target sells 1 of those 3Long 2Target has 2 left; sibling stop is reduced to 2

Sources: Sierra Chart: attached orders, partial fills and server-side management

Order location and OCO management are separate

An accepted stop can remain at a broker or exchange while the software responsible for canceling it runs on your computer. NinjaTrader Desktop's connection-specific guide documents this distinction for Rithmic: accepted or working orders are held externally, but OCO functionality is simulated locally. That statement describes this Desktop connection, not every platform using Rithmic.

Sierra Chart also distinguishes server-side OCO from server-side brackets. Server-side OCO handles linked cancellation and quantity changes; a server-side bracket also sends the parent and children to the trading service together for management. Confirm the exact platform, connection and enabled settings before relying on either.

  • Entry attachment: which component creates or activates the stop and target when the entry fills?
  • OCO linkage: which component cancels or resizes the sibling exit?
  • Extra automation: where do trailing-stop or breakeven adjustments run?

Sources: NinjaTrader Desktop: where orders and OCO logic reside · Sierra Chart: attached orders, partial fills and server-side management

A cancellation request can lose the race

NinjaTrader warns that an OCO sibling can fill before its cancellation is acknowledged. In the one-contract example, the target sells the long position, then a rapid reversal fills the still-working sell stop. The account can become short one contract. An OCO label does not make the two fills impossible.

Manual actions can affect the pair too. In NinjaTrader's documented OCO behavior, canceling one member also attempts to cancel the other. Do not remove a target on the assumption that its linked stop will remain. After changing or closing a bracketed position, verify the resulting position and every remaining order, rather than treating a button click as confirmation.

Sources: NinjaTrader: OCO cancellation and disconnection risks

After a disconnect, reconcile before replacing exits

Local OCO management stops operating when NinjaTrader is offline. That does not establish that externally held orders disappeared. When access returns, compare the current position, fills and remaining stop/target orders for the same account and contract before submitting replacements. Otherwise you can add a second exit alongside an order that was already working.

Read the actual order state. Tradovate distinguishes a suspended contingent order from a working order, and a canceled order from a filled one. Its guidance says to contact support immediately for Pending New when exchange responses are not being received. If order status remains uncertain, use the provider's order-support route instead of assuming the account is flat.

Sources: NinjaTrader: OCO cancellation and disconnection risks · NinjaTrader Desktop: where orders and OCO logic reside · Tradovate: order status definitions

Practice behavior does not establish live execution

Boxcar evaluations and simulated-funded accounts use virtual funds; their orders do not enter live markets. Live access requires Boxcar's express designation and a separate written agreement. Practicing bracket controls in a simulated account does not verify how an exchange will fill the same orders or how a different live connection will manage them.

Sources: Boxcar: evaluation, simulated-funded and live stages