Bands Node

The Bands node draws lines at a center plus and minus multiples of a width, like the session open ± the average daily range. Because the engine computes each line per bar, a band plots, and a Crossover, a modifier or a Bracket Order can read it.

NodeBy AlgoLiftUpdated 4 min read
On this page 7How it worksExample: trade the move away from the openSettingsOutputsUse something else whenWhen it doesn't behaveGoing further

Plenty of strategies draw lines around a level: the 20 EMA plus and minus 2 ATRs, the session open plus and minus a fraction of the average day. Built from Math nodes, every one of those lines costs an Add or a Subtract and a Multiply, and a bracket can't measure from any of them. The Bands node draws them all from two inputs, a center and a width, with up to six multiples.

Takes
A center and a width, both values from completed bars
Gives
An upper and a lower line for each multiple
Reach for it
Lines around a level that you want to plot, cross, or place orders at

How it works

The Center is the middle the lines sit around: a moving average, the session open, a pivot. The Width is the unit the multiples count: an ATR, an average range, a standard deviation. Each multiple k gives one pair of lines, center + k × width and center − k × width. With multiples of 1 and 2 around a 20 EMA with an ATR as the width, you get four lines, one and two ATRs either side.

What sets Bands apart from the Math-node version is where it's computed. The engine works out each line once per bar, as a column, the same way it computes an indicator. That's what lets a band do things arithmetic can't:

  • it plots on the chart, on its center's panel, with each pair shaded, the first multiple solid and the wider ones dashed;
  • a Crossover reads a line on either clock, and a Comparison or a modifier reads it like any indicator;
  • a Bracket Order can measure a stop or target from a line, read once at the fill.

The price of being a column is that both inputs must be bar values from the same series: an indicator, Price History, Pivot Levels, price action, a modifier, or another Bands. Live price is refused, since a band is drawn from completed bars, and so is a Math node. If you want 1.5 ATRs, don't multiply the ATR first. Put 1.5 in the multiples.

Example: trade the move away from the open

Say you trade NQ 5m and your idea is that once price has travelled a quarter of a normal day from the 09:30 open, it tends to keep going. "A normal day" is the average daily range, and both ends of that sentence are Price History nodes.

For the center, set a Price History to Window RTH, So far, Field Open: today's 09:30 open. For the width, set another to Window Session, Prior, Field Range, Average across the last 10 sessions: the average daily range. Wire them into Center and Width and set the multiples to 0.25 and 0.5.

Wire Current Price into a of a Crossover and Upper 0.25× into b, direction Above, clock Intrabar, and send it to a long Entry. On the Bracket Order, measure the target from a Level and wire Upper 0.5× into it with a distance of 0. For the stop, wire the open itself (the center's Price History) into the stop's level input the same way. Both are read at the fill and then stay put.

Settings

Multiples of the width
Default 1×
One to six numbers, each above 0 and at most 20. Each one adds an Upper and a Lower line.

Outputs

Upper / Lower 1×
Number
The center plus and minus the first multiple times the width. Every multiple you add gets its own pair, named for its multiple (Upper 2×, Lower 2×), in the order you list them.

The chart draws the lines your strategy reads, or all of them while nothing reads one yet, in the node's one color.

Use something else when

A standard Bollinger or Keltner channel
If the band you want is the textbook one, the indicator already draws it, with its own settings.
How far price is from a level, as a number
Distance turns the gap into points, ticks, percent, ATRs or standard deviations for a Comparison.
Levels at ratios between a high and a low
The 61.8% of yesterday's range is a ratio of a range, not a multiple of a width.

When it doesn't behave

It won't take Current Price as the center

A band is drawn from completed bars, and Current Price on your traded series is the live price. Use a bar value, such as the session open from Price History, or a moving average.

It won't take my Multiply node as the width

Math nodes aren't columns, so Bands can't read them. Wire the plain value (the ATR, the average range) and put the arithmetic in the multiples: 1.5 × ATR is ATR with a multiple of 1.5.

My center and width come from different series

Both inputs have to come from one series, because each line is computed bar by bar on that series. Read both values off the same series, even if that means a second Price History or indicator.

Going further

Each multiple is a sweep row, in steps of 0.1. Width multiples are exactly the kind of number that looks brilliant on one stretch of history, so sweep a few wide steps around a value you chose for a reason, and remember every one counts against the search budget.

Price History's Move against the close, averaged across the last N sessions, is the typical size of a session's counter-move from its open. As a width around the open, it puts lines at the size of an ordinary day's counter-move, a different yardstick from the whole range and often a more useful one.

Or ask the copilot