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:
| Anchor | Measured from |
|---|---|
| Fill price (the default) | The price the trade filled at |
| Signal bar | The last completed bar when the trade fills: its high for a level above, its low for a level below |
| Level | A 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.
| Mode | The stop |
|---|---|
| Fixed (the default) | Stays where the bracket put it |
| Trailing | Follows price at a fixed distance, 10 points to start, and never moves back |
| Armed trailing | Holds still until price is 10 points past the entry, then trails |
| Breakeven | Moves to the entry price once price is 10 points past it |
| ATR trailing | Follows 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 exit | Closes a trade |
|---|---|
| After minutes | Once it has been open that many minutes |
| After bars | After that many bar closes |
| At a time | At a New York clock time, in the trading day it opened |
| Before the close | That 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.
Use something else when
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.