Skip to main content

Stops, Targets & ATM Strategies

CrossTrade supports simple inline bracket fields (take_profit= / stop_loss=) on both destinations. NT8 can also attach a desktop ATM template via strategy=, while Tradovate can build a native multibracket inline with atm_* fields. The mechanisms behave differently around management, trailing, and platform requirements.

Frequently Asked Questions

How do I add a take profit and stop loss to a PLACE order?

Use the take_profit= and stop_loss= fields in the payload. Values can be absolute prices (take_profit=12345;), percentages (take_profit=1%;), or positive tick/point distances (take_profit=25 ticks;). CrossTrade derives above/below direction from the entry side, so you do not reverse signs for shorts.

What format does CrossTrade accept for take_profit and stop_loss?

Three formats are supported: absolute price level (take_profit=12345;), percentage offset (take_profit=1%;), or tick/point offset (take_profit=25 ticks;). NT8 calculates relative children from the actual entry fill. Tradovate relative values use CrossTrade Quote Consensus exclusively, never the user's Tradovate market-data entitlement or one personal Add-On quote.

How do I set offsets for a short / sell order?

Use positive distance magnitudes for both sides. CrossTrade automatically places a long target above and stop below the entry, then mirrors that direction for a short.

Do I need ATI enabled to use take_profit / stop_loss?

On the NT8 destination, yes: payload TP/SL uses ATI and NT8 must have ATI enabled. Tradovate inline brackets are sent directly to Tradovate's API and do not require NT8 or ATI.

Do ATM strategies also require ATI?

No. ATM strategy use does not require ATI — only payload-based take_profit / stop_loss brackets do. If your ATM orders work but adding TP/SL inline fails, ATI is the missing piece.

My entry fills but the TP/SL are not placing — why?

On NT8, common causes are ATI being disabled, NT8 needing a restart after ATI or Add-On changes, no valid live data feed, a prop-firm rule rejection, or a child price that is invalid for the current market. On Tradovate, check Alert History and the broker order-strategy state. In either destination, verify protection after entry because a broker can accept the entry and reject a child.

How are bundled TP/SL placed — are they a real OCO bracket?

The target and stop are an OCO pair, but the entry lifecycle differs by destination. On NT8, CrossTrade waits for the entry fill and then creates the ATI child orders from the actual fill and filled quantity. On Tradovate, CrossTrade submits the entry and absolute bracket prices together as one broker-side OSO request. In either case, verify protection because a broker can accept an entry while rejecting an invalid child.

Can I use TP/SL with a limit entry?

Yes. On NT8, CrossTrade defers payload TP/SL children until the primary entry reports a fill, then sizes protection from the actual filled quantity. On Tradovate, the entry and bracket are submitted together as one broker-side OSO so Tradovate owns the parent/child activation. An NT8 ATM or Tradovate inline atm_* multibracket is the better choice when you need trailing, breakeven, or more advanced management.

What happens when the bracket is too tight to the market?

On NT8, the entry can fill before NT8 rejects a child whose price is invalid for the current market. On Tradovate, the broker can reject the OSO or a managed child. Always verify that both protective legs exist and avoid levels on the wrong side of the market.

Can I link two separately-sent orders into one OCO?

On NT8, yes: supply the same oco_id on two separate orders. Tradovate does not accept manual oco_id values through this webhook; use take_profit plus stop_loss so CrossTrade creates the broker-side OCO bracket.

After I enter a trade, can I add SL/TP later via CrossTrade?

Yes. Use CANCELANDBRACKET to cancel the instrument's working protection and apply a new take-profit and/or stop-loss bracket to the existing position. For this command, BUY protects a long position and SELL protects a short. Tradovate also accepts LONG/SHORT aliases; NT8 requires BUY/SELL. See crosstrade.io/docs/webhooks/commands/cancel-and-bracket.

Can I modify SL or TP after entry?

Yes, but it's difficult. Changing an individual order requires knowing its Order ID, and in a one-way webhook system the only way to know the Order ID beforehand is to set it yourself via the order_id field on the PLACE. That means issuing the entry, TP, and SL as separate alerts, each with their own order_id, so you can later target them for modification. Unless you're comfortable doing this in Pine Script, it's usually more trouble than it's worth — prefer an ATM strategy for dynamic management.

Does CrossTrade support trailing stops?

NT8 trailing management belongs in a desktop ATM template. Tradovate natively supports trailingstop/trailingstoplimit orders and continuous per-tier ATM trailing. CrossTrade exclusively adds profit-triggered ATM trail activation: it tracks trusted consensus highs/lows, keeps the fixed stop working until the trigger, then converts and confirms a native Tradovate trail.

What is an ATM strategy and how do I use one from CrossTrade?

On NT8, an ATM is a desktop template attached with strategy=YourAtmTemplateName;. Tradovate cannot load that NT8 template. Instead, supply atm_targets, atm_stops, and related fields inline, or save a named CrossTrade Tradovate ATM Template and reference it with strategy= or atm_strategy=. The CrossTrade template is stored in CrossTrade, then expanded into a native Tradovate multibracket.

I'm getting "unable to load ATM strategy template" — what's wrong?

The template name must match the file exactly. Check for extra spaces, capitalization differences (though XT is case-insensitive, NT8's file lookup is stricter), or typos. When in doubt, rename the template to something simple and unambiguous.

Can one ATM template serve multiple instruments?

Yes, the same ATM can be applied to different tickers. You don't need a separate template per instrument.

Can stops/targets generated by an ATM be canceled with flatten_first?

When an NT8 position is active, flatten_first=true; closes it and its same-instrument ATM bracket orders before the next entry. If the account is already flat and orphan orders may remain, send CANCELORDERS explicitly.

When does an ATM create a limit order vs. a market order?

ATM strategies generate stop and target orders; they don't create a primary entry. The edge case is when you open a limit order with an ATM attached — the ATM fires only after the limit fills. For market orders with an ATM (the common path), the ATM fires at once on fill.

I'm using an ATM and every time TP/SL hits, a new opposite position opens — why?

That almost always means a new incoming signal is offsetting the still-pending ATM bracket instead of closing it first. Add flatten_first=true; to your payload so any new signal closes the existing ATM brackets before opening the next one.

What's the difference between payload TP/SL and an ATM strategy?

On NT8, payload TP/SL requires ATI and a desktop ATM supplies richer local management. Tradovate inline TP/SL creates a native broker-side OSO. Tradovate atm_* creates a native multibracket for entry, targets, stops, OCO, and continuous trailing; CrossTrade exclusively adds named cloud templates, target-fill breakeven, and consensus-triggered trail activation with durable restart replay.

Can I combine an ATM for stops with strategy-based exits?

Yes. Use strategy_exit_block=true; so the strategy's own exits are suppressed while the ATM manages TP/SL. Combine with flatten_first=true; so new entries don't conflict with existing brackets. You can also use an ATM for only the stop loss while letting your strategy handle exits, but you'll need to actively manage any orphaned pending orders.

Does cancel_after cancel the stop loss attached to an unfilled limit?

cancel_after cancels the primary unfilled limit order. Payload TP/SL children are not submitted until the entry fills, so an entry that expires unfilled has no attached child orders to leave behind.

If I copy trades to followers, do SL/TP / ATM brackets copy too?

Depends on destination and copier mode. NT8 Execution mode copies fills only; NT8 Order mode mirrors resulting child orders. Tradovate signal-mode copying recreates and resizes the native multibracket on each follower and schedules the same CrossTrade-managed breakeven or triggered-trail watcher. Tradovate fill-driven execution mode is beta; it copies fills as market orders and does not recreate the ATM structure.

Can I have the account stop trading once a stop loss / profit target is hit?

Yes. Account Manager supports both NT8-loaded accounts and directly linked Tradovate accounts. Set profit/loss thresholds and the monitor will flatten and block signals when the threshold is reached. Tandem Mode is specific to the NT8 Trade Copier; it does not apply to direct Tradovate copying.