Tradovate

Tradovate OCO Order Latency Risk

An OCO bracket looks airtight until a fast market catches the cancel leg mid-flight. Here's why both sides can fill and how to keep it from flipping your position.

Verificato dal Trading Systems Team di PickMyTrade Ultimo aggiornamento
· 6 min read
Tradovate DOM showing an open position with an OCO bracket, a limit target above and a protective stop below

An OCO bracket looks airtight on screen. Target on top, stop below, and the moment one fills the other is supposed to vanish. Most of the time that's exactly what happens. But there's a small window where it doesn't, and in a fast market that window is wide enough to hurt. The short version: when your target fills, the cancel for your stop still has to travel to the exchange and be acknowledged. If price whips through your stop in those few milliseconds, both legs can execute, and you can walk away flat when you expected a profit, or worse, sitting in a fresh position pointing the wrong way.

This isn't a bug you fix once and forget. It's a structural quirk of how futures orders work, and it's worth understanding so you don't build a strategy that quietly depends on the cancel always winning the race.

What an OCO Actually Promises

OCO stands for “one cancels other.” You attach two exit orders to a position, usually a limit for your profit target and a stop for your risk, and the deal is simple: whichever one fills, the other gets pulled. On the ladder or the chart it feels like a single unit.

Here's the part that trips people up. The futures exchange, CME Globex, has no idea your two orders are linked. There is no native “cancel that other order when this one fills” instruction at the exchange level. Both orders sit there as independent working orders. The linking logic lives one layer up, in the platform. When one leg fills, the platform sees the fill and then fires off a cancel for the other leg. Two separate messages, one after the other, with real distance and real time between them.

So an OCO is a software promise, not an exchange guarantee. And any promise that depends on a message arriving in time can be broken when the timing gets tight.

Why the Cancel Leg Lags

Two things stack up here, and both are outside your control once the order is live.

The exchange fills before it cancels. If a fill and a cancel request land at the matching engine at the same moment, the exchange handles the fill first. That's the priority order. Your cancel might be a hair too late simply because the market reached your other price before the cancel got its turn. Tradovate has been direct about this: an OCO does not guarantee a cancellation. When both events collide, the fill wins.

There's always a round trip. The fill has to be detected, the cancel has to be generated, sent, received, and confirmed. Even with everything running server-side and sitting close to the exchange, that's not instant. In calm conditions it's fast enough that you never notice. The gap is a matter of milliseconds. But price in a hot market can move several ticks in those same milliseconds, and if it sweeps past your still-live stop before the cancel confirms, that stop fills.

Credit where it's due: because Tradovate manages the OCO server-side rather than on your laptop, it's far more dependable than a setup where your home PC watches for the fill over consumer internet and then sends the cancel. Server-side logic keeps working even if your connection drops, and the cancel goes out from a machine sitting close to the exchange. That shrinks the window. It doesn't erase it.

What It Looks Like on Your Account

The scenario that catches traders off guard goes like this. You're long. Your target hits, the limit fills, and your position closes at a profit. Good trade. Except a few milliseconds later, before the cancel for your stop was acknowledged, price snapped back down and tagged the stop. That stop fills too. Now you're not flat, you're short, from a stop order you thought was already dead. Price keeps running and that surprise short bleeds.

Tradovate Orders module listing both bracket legs with timestamps, one marked Filled and the other showing a late cancel or second fill

Reverse it and the same thing happens on the downside. Stop fills, closes your long for a loss, then the market bounces hard and your target fills a moment later, flipping you long again right as the bounce fades. The common thread is a second leg that filled inside the cancel window. If you ever check your fills and find both the target and the stop executed on what you thought was a one-and-done bracket, this is almost always why.

It's most likely during scheduled volatility, the top of an FOMC statement, the first tick after NFP, a CPI print, or any moment where the book thins out and price gaps between levels. That's exactly when a tight bracket, with target and stop only a few ticks apart, is most exposed. The tighter the two legs sit, the smaller the price move needed to catch them both.

How to Protect Your Position

You can't remove the physics of the round trip, but you can stop building setups that quietly bet on the cancel always winning. A few habits go a long way.

Give Your Legs Some Room

The narrower the distance between target and stop, the easier it is for one fast move to sweep through both. A wider gap means price has to travel further to catch the second leg during the cancel window. If your edge genuinely needs a razor-thin bracket, at least go in knowing that the tightness is what exposes you here.

Don't Lean on Tight OCOs Alone in Fast Markets

Around known events, treat a tight OCO as one layer of protection, not the whole plan. Size down, widen the bracket, or stay flat through the first burst. The goal is to avoid a position where a single scheduled release can trip both legs before either cancel confirms.

Consider Stop-Limit for the Stop Leg, with Eyes Open

Some traders use a stop-limit rather than a plain stop market for the protective leg so a chaotic fill can't drag them far past their intended price. That's a reasonable tool. Just be honest about the trade-off: a stop-limit can fail to fill at all if price jumps clean through your limit, which leaves you holding a position with no working stop. In a genuine gap, a stop that doesn't fill is its own kind of danger. Pick per instrument and per situation rather than switching everything over blindly.

Tradovate order ticket or ATM strategy panel where stop and stop-limit order types are selected for the protective leg

Watch the Positions Module Right After a Fill

The first few seconds after a leg fills are when the surprise second fill shows up. Keep the Positions and Orders modules in view around your exits, especially during news, so an unexpected opposite position doesn't sit there unnoticed while you've mentally moved on to the next setup.

Keep a Manual Flatten Ready

If you do get flipped, speed matters. Know where your flatten control is and be ready to close the accidental position and cancel any orphaned order in one move. A hotkey or a one-click flatten button beats hunting through menus while a wrong-way position runs.

Tradovate Positions module with a Flatten button used to quickly close an accidental opposite position

If you want the mechanics of building and adjusting these brackets in the first place, there's a separate walkthrough on setting up ATM strategies that covers the setup side. And if your bracket only partially fills rather than both legs firing, that's a different issue covered elsewhere.

Where Automation Fits In

If you're routing entries and exits from TradingView or a strategy, the same rule holds: the cancel still has to make the round trip, and a signal that fires a target and a stop microseconds apart is exposed to the same window. Good automation doesn't pretend the latency isn't there, it manages around it, reconciling your actual position against what the strategy thinks you hold so an accidental leg gets caught and cleaned up instead of running.

Latency risk isn't unique to any one broker or bridge. It's baked into how futures orders match. The traders who don't get burned by it are the ones who treat the OCO as a strong helper rather than an ironclad guarantee, and who keep a plan for the rare day the cancel loses the race.

Reconcile Every Fill Automatically

Want your TradingView alerts to place, manage, and reconcile Tradovate orders automatically, with position checks that catch a stray fill instead of letting it run?

Start Your Free 5-Day Trial

Frequently Asked Questions

No. An OCO is a software promise, not an exchange guarantee. When a fill and a cancel request arrive at the exchange at nearly the same instant, the exchange processes the fill first. The second leg can still execute before the cancel takes effect.

Yes. In the short window between the first leg filling and the cancel being confirmed, both the target and the stop can execute. In a fast market that window is enough to flip you into an opposite position.

Tradovate manages it server-side, which is more reliable than logic running on your own machine because it survives a disconnect. But the futures exchange has no native OCO, so a small cancel window always remains between the fill and the cancel confirmation.

Keep a sensible buffer between your target and stop, avoid razor-thin brackets during scheduled news, watch the Positions module in the seconds after a leg fills, and keep a manual flatten ready so you can close an accidental position fast.

Your target filled and closed the trade, but the stop had not cancelled yet and it filled too. That stop fill opened a brand-new position in the other direction. It's the classic symptom of the cancel leg lagging behind the fill.

This guide is for educational and informational purposes only and is not financial, investment, or trading advice. Trading futures and other leveraged products carries a substantial risk of loss and is not suitable for every investor. PickMyTrade is an independent third-party automation platform and is not affiliated with, endorsed by, or sponsored by Tradovate, Inc. All related names, logos, and trademarks are the property of their respective owners. Platform features and steps change over time, so always confirm the current process in the official platform documentation before acting.