Skip to main content

Stops, Targets & ATM Strategies

CrossTrade gives you two ways to attach stop losses and take profits to an order: inline bracket fields (take_profit= / stop_loss=) inside a PLACE command, or an NT8 ATM (Automated Trade Management) strategy template via strategy=. The two mechanisms behave differently — especially around limit orders, OCO linkage, and what NT8 needs enabled.

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 expressed as price, percent, or ticks:

take_profit=12345; (price level)
take_profit=1%; (percentage above market)
take_profit=25 ticks; (ticks above market)

For shorts, flip the signs — take profit must be negative (below price) and stop loss positive (above price).

What format does CrossTrade accept for take_profit and stop_loss?

Three formats are supported: absolute price level (take_profit=12345;), percentage offset from market (take_profit=1%;), or tick offset (take_profit=25 ticks;). The offset is measured from the quote at the time of order entry — NT8 does not wait for the fill to back-calculate offsets. If exact-from-fill offsets matter, use an ATM strategy instead.

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

Flip the signs. For a long, stop loss is negative (below price) and take profit is positive. For a short, stop loss is positive (above price) and take profit is negative (below price). 150 ticks is above the underlying price; -150 ticks is below it.

Do I need ATI enabled to use take_profit / stop_loss?

Yes. The ATI (Automated Trading Interface) must be enabled in NT8 for any TP/SL bracket submitted inside a PLACE order to be placed. If ATI is disabled you'll see: Automated Trading Interface (ATI) is required but disabled. See installation step 3 to enable it, then restart NT8.

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?

Most common causes:

  • ATI is not enabled. Inline TP/SL brackets require it. Check the NT8 log for an ATI line immediately after the PLACE order.
  • NT8 needs a restart after enabling ATI or upgrading.
  • The account lacks a valid LIVE data feed. To submit orders XT needs a real-time feed from a prop firm or broker. Without one, stops and targets won't route even if the entry fills.
  • Prop firm rule violation or account disqualification can block downstream orders.
  • Wrong-side levels — if a stop would place on the wrong side of spot price (too tight to the market), NT8 rejects it while still letting the entry fill, leaving a naked position.

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

Yes, the TP/SL submitted alongside a PLACE command are placed as an OCO bracket. The caveat: they're not tied to the position the way they would be inside a strategy. Either they get hit, or you must cancel them some other way.

Can I use TP/SL with a limit entry?

It works, but it's discouraged. The TP/SL inside a PLACE command are submitted at the same time as the primary order — they're not waiting for the limit entry to fill. That means a TP can trigger before the buy fills, or a stop can be rejected for being on the wrong side of price while the entry still goes through.

If you need stops and targets that only activate after a limit entry fills, use an ATM strategy — its pending legs are only placed once the primary order executes.

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

NT8 will reject whichever leg is on the wrong side of the current spot price, but the other two (entry and the valid side) may still go through. You can end up in a position with no stop loss. There's no CrossTrade setting to atomically block all three — the orders are already downstream in NT8 by the time the rejection fires. ATMs suffer the same rejection, just in a different shape.

Yes. Supply your own oco_id on two separate orders and NT8 will link them into a single OCO group.

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

Yes — see the bracket orders docs. You can also send the entry as one alert with just the stop loss, then send the take profit in a second alert once the entry is confirmed filled.

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?

Not directly on individual positions. Use NT8's trailing function inside an ATM strategy template — you can configure breakeven, auto-trail, step-trail, etc. there. At the account level, CrossTrade Pro offers Trailing Drawdown and Minimum Profit Drawdown monitoring across the entire account.

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

An ATM is a NinjaTrader template (created in NT8) that defines stop, target, breakeven, and trail behavior for a position. CrossTrade attaches one via:

strategy=YourAtmTemplateName;

See ATM strategies and creating an ATM template for the full workflow. Capitalization in the strategy name does not matter; TIF does not matter; the ATM does not need to be loaded on the chart — leaving the chart's strategy selector on "none" still works.

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?

Yes. flatten_first=true; closes all positions and cancels all orders in the underlying instrument — including ATM-managed brackets.

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?

AspectPayload TP/SLATM strategy
Requires ATIYesNo
Waits for entry fillNo — submitted concurrentlyYes — pending legs place only after fill
Works well with limit entriesNo (unpredictable)Yes
Trailing / breakevenNot supportedFull NT8 support
Tied to positionNoYes
Set viatake_profit=, stop_loss=strategy=TemplateName;

Use an ATM when you're running limit entries, need trailing/breakeven, or want pending legs tied to the position. Use payload TP/SL with market orders for simple fixed brackets.

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?

No. cancel_after cancels only the primary limit order. Any attached TP/SL bracket legs will remain and must be canceled separately.

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

Depends on copier mode:

  • Execution mode — copies only fills (the executed entry). Stops, targets, and ATM-managed brackets are not replicated. Use this if you want followers to ignore SL/TP.
  • Order mode — copies orders at the moment they enter the NT8 queue, including pending stops/targets, and updates follower orders when the leader modifies them. Use this to mirror SL/TP moves across accounts.

ATM strategies can't be copied as ATMs, but Order mode replicates their resulting bracket orders so the effect is the same.

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

Yes, at the account level via the NT Account Manager. Set profit/loss thresholds and the monitor will flatten and block signals when the threshold is reached. For the copier, use Tandem Mode so followers stop receiving copies once the leader's monitor stops. See the Account Manager docs.