Bracket Order Node

The Bracket Order gives a trade leg its target and stop as distances, fixed when the trade fills. What each distance is measured from, the stop modes, the time exit, and the inputs for logic of your own.

NodeBy AlgoLiftUpdated 8 min read
On this page 10How it worksThe target and the stopStop modes: the one-click trailing stopThe time exitInputs for logic of your ownExample: stop under the signal bar, flat by 15:55SettingsUse something else whenWhen it doesn't behaveGoing further

Every trade needs two prices the moment it opens: where you're wrong, and where you'll take the money. The Bracket Order sets both for one leg. Each is a distance from something (the fill price, the signal bar, or a level you wire in), and it's fixed when the trade fills. On top of that it can trail the stop, close the trade on the clock, and hand either price to logic of your own.

Takes
Distances, plus optional levels and logic wired into its inputs
Gives
A target and a stop for one leg, set when the trade fills
Reach for it
Giving a trade its exits, which is nearly always

How it works

A bracket isn't wired to its trade; it's attached. Click Attach to a trade, then click the Trade node it should exit. The button turns to ✓ Exits Trade (or ✓ Exits Trade 1 when the canvas has several Trade nodes) and takes on that trade's color. One bracket per trade.

The target and the stop

Each row holds a distance, 10 points for the target and 5 for the stop until you change them. You type a positive number, and the + and − badges beside it follow the entry's direction: a long's target sits above its anchor and its stop below, a short's the other way round. Flip the Entry to short and the bracket flips with it.

The button at the start of each row is its anchor, what the distance is measured from:

AnchorMeasured from
Fill price (the default)The price the trade filled at
Signal barThe last completed bar when the trade fills: its high for a level above, its low for a level below
LevelA value you wire into the row's level input, like an indicator, a swing or a price-action level

Whatever the anchor, it's read once, when the trade fills. A stop 2 points under the signal bar's low stays there as new bars print, and a stop measured from an EMA doesn't follow the EMA. That's the real difference between a bracket and logic you build yourself, which is re-read on every tick.

A level has to be market data, like an indicator, a Price History or a price-action output. The live price can't be one (that's what Fill price is for), and neither can a Math node: put the arithmetic in the distance instead.

A distance doesn't have to be in points. The pts button after each number switches it to ×, and the number becomes a multiple of a value you wire into the row's new input: 1.5 with an ATR wired in is a stop 1.5 ATRs from its anchor. Like the anchor, that value is taken when the trade fills, so the stop doesn't stretch and shrink with volatility mid-trade. It has to be market data too; put any arithmetic in the multiple.

The TARGET label is a menu. Pick No target and the leg has no take-profit at all: only the stop (with any stop mode), an exit condition, the time exit or the end of the data closes it. That's the honest way to build a runner, rather than a target so far away no market reaches it. The distance you had is kept and comes back if you turn the target on again.

Stop modes: the one-click trailing stop

Stop Mode moves the stop after entry. Its menu opens once the bracket is attached to a trade.

ModeThe stop
Fixed (the default)Stays where the bracket put it
TrailingFollows price at a fixed distance, 10 points to start, and never moves back
Armed trailingHolds still until price is 10 points past the entry, then trails
BreakevenMoves to the entry price once price is 10 points past it
ATR trailingFollows price at 2 × ATR(14), read live, and never moves back

Nothing is hidden. A mode lays its logic out on the canvas as ordinary nodes wired into the stop's input, and its numbers live on the Constant nodes it adds, so that's where you change the trail or the trigger. Back on Fixed, those nodes go away. The stop row now reads Initial: the bracket's stop is where the trade starts, and the mode takes over from there.

The time exit

Add time exit, under the stop, closes the trade on the clock, whichever comes first with the stop and the target:

Time exitCloses a trade
After minutesOnce it has been open that many minutes
After barsAfter that many bar closes
At a timeAt a New York clock time, in the trading day it opened
Before the closeThat many minutes before the RTH close or the session close, half days included

Inputs for logic of your own

Each row has an input on its left edge. Logic wired into it owns the level once the trade is open, re-read on every tick, and the row's number becomes the Initial level, where it starts (0 starts with your logic alone). For a trailing stop of your own, read the current stop back with a Trade Variable and keep the higher of the two for a long (Max), the lower for a short (Min).

One exact rule sits under all of this. A long whose stop is at or above the fill price, or whose target is at or below it, never opens, the way a broker would reject the order (shorts mirror it). The Entry tries again on the next tick and fills once the levels make sense.

Example: stop under the signal bar, flat by 15:55

Say you trade NQ 5m breakouts, long. You want the stop 2 points under the bar that gave the signal, a 40-point target, and nothing held into the close.

Attach a Bracket Order to the entry's Trade node. Set the target to 40 from the fill price. Set the stop's anchor to Signal bar and its distance to 2; the note under the row confirms it reads the low of the last completed bar. Then Add time exit, At a time, 15:55. Last, AND a Time Window (Until 15:55, Intrabar) into the Entry's condition so no trade opens after the deadline.

The stop now sits where each setup is proven wrong, so the risk in points changes with the size of the signal bar, and anything still open at 15:55 is closed.

Settings

The + and − of each row follow the entry's direction, so they aren't listed here.

Target
Default On
The TARGET label's menu: Target, or No target for a leg only the stop, an exit condition or the time exit can close.
Target distance
Default 10
How far the target sits from its anchor. Always positive; the side comes from the trade's direction.
Target anchor
Default Fill price
Fill price, Signal bar or Level. Read once, when the trade fills.
Target unit
Default Points
Points, or × for a multiple of the value wired into the row, taken at the fill.
Stop distance
Default 5
How far the stop sits from its anchor. Under a stop mode or your own logic, it's where the stop starts.
Stop anchor
Default Fill price
Fill price, Signal bar or Level.
Stop unit
Default Points
Points, or × for a multiple of a wired value.
Signal bar series
Default Primary series
Whose last completed bar a Signal bar anchor reads. Offered when the strategy has more than one series.
Stop Mode
Default Fixed
Fixed, Trailing, Armed trailing, Breakeven or ATR trailing. Each lays its logic out on the canvas.
Time exit
Default Off
After minutes (up to a week), After bars (up to 500), At a time, or Before the close.

Use something else when

Exit when a signal fires
Drag Exit Condition off the leg's Trade node. It works beside a bracket, with the bracket's stop behind it.
Limit when trades may start
The Time exit closes trades; a Time Window decides when they may open. A clock-time exit needs both.

When it doesn't behave

The strategy stopped trading when I changed the stop

The stop is landing at or through the fill price, so the engine refuses every entry. A 0 distance from the fill does it (the builder warns about that one), and so does a level on the wrong side of price, like an EMA above price on a long. Measure from the fill or the signal bar, or wire a level that sits on the losing side of your entries.

My trades close the moment they open

Usually the time exit. An At a time exit closes any trade that opens at or after its deadline. Add the Intrabar Until cutoff from the example.

My trailing stop never moves

The trail only takes over once price minus the trail distance passes the starting stop. With a 5-point stop and a 10-point trail, price has to be 5 points in profit first. Shorten the trail on its Constant node, or start from a wider stop.

My stop follows the EMA instead of staying put

That's logic wired into the stop's input, which is re-read on every tick. If you meant "3 points under the EMA as it was at entry", set the stop's anchor to Level, wire the EMA into the level input and use a distance of 3. The level is read once, at the fill.

Going further

The target and stop distances can be swept, and so can the time exit's amount; anchors can't. A grid over target and stop is one of the easiest ways to fit noise, because some pair always suited the past best. Every pair you try counts against the project's search budget, so keep the grid coarse and have a reason for each value before you look.

Anchors and multiples combine. Measure the target from a Level with the session's open wired in, as a multiple of a Price History reading the average session range over the last 10 sessions, and you have "0.9 of a normal day's range past the open", fixed when the trade fills.

Or ask the copilot