Support Resistance Channels draws support and resistance as filled bands on MT4 and MT5, not as lines. Red above price, green below, grey when price is inside one. Up to six of them, chosen by a scoring rule that is worth understanding before you use it.

Gold H1: four resistance bands, each sitting on a stretch of real congestion from the last few weeks

How a band gets built

Start with pivots. A pivot high is a bar whose high is the highest of the prd bars either side of it โ€” ten by default, so a pivot is confirmed ten bars after it happens. Pivot lows the same way. PPSource switches the pivots from high/low to close/open if you want them anchored to bodies instead of wicks.

Now take one pivot and ask which of the other pivots are close to it. Close means within ChannelW percent of the 300-bar price range โ€” five percent by default, so the tolerance scales with the instrument and with how volatile the last 300 bars were. Every pivot inside the tolerance is absorbed, and the band stretches to cover them all.

That's the crucial bit: the band is as wide as the pivots that clustered, not a fixed width. A level that was hit four times within a few dollars produces a thin band. A messy area where four pivots landed at the outer edge of the tolerance produces a thick one. You can see both on the EURUSD chart below โ€” one band is a hairline and the one beneath it is twenty pips deep.

EURUSD H4: five support bands of very different thicknesses, each one as wide as the pivots that clustered into it

How a band gets chosen

Every candidate band gets a strength score, and the score has two parts:

  • 20 points per pivot absorbed into the band
  • 1 point per bar in the last loopback bars (290) whose high or low fell inside the band

Then the strongest band is taken, every candidate that overlaps it is discarded, and the process repeats until MaxNumSR bands are found.

Look at what those two terms do against each other. Four pivots is 80 points. A band that price simply sat inside for a hundred bars scores 100 from the second term alone, with no pivots at all beyond the one that seeded it. The score is dominated by time spent, not by number of rejections.

That isn't wrong, it's a choice, and it's a defensible one โ€” an area price keeps returning to is a real area. But it means these bands are not the same thing as "levels that have been rejected the most times", and if you read them that way you'll be surprised by which ones survive. The minstrength input is counted in pivots, which is to say each unit is 20 points, so setting it to 3 asks for a band worth three pivots โ€” a threshold the bar-count term can clear on its own.

The loopback is 290 bars, and that matters

Everything above is computed from pivots inside a 290-bar window. On a lower timeframe that's a recent, relevant window. On H4 it reaches back most of a quarter, and in a trending market the result looks like this:

Gold H4: every band sitting hundreds of dollars below price, because the loopback reaches back into a completely different price regime

Five green bands, all of them far below the current price, all of them from June and July. The indicator is doing exactly what it was told. It just wasn't told that the market has moved on. If your bands are all clustered a long way from price, shorten loopback or drop a timeframe โ€” that is the fix.

A horizontal line tool Fractal/pivot indicator This
Output One price Marks on individual bars Filled bands
Width None None As wide as the pivot cluster
How many However many you drew All of them The strongest six
Ranking Your judgement None Pivots plus time spent inside
Updates Never Per pivot Rebuilt on every closed bar

What you get

Six bands by default, coloured by their position relative to the live price and recoloured on every tick as price moves through them. Optional pivot labels (showpp) mark the H and L points that fed the calculation, which is the fastest way to see why a band is where it is. Optional break markers put a triangle on the bar where a close broke out of a band, and that break is also what the alerts fire on โ€” alert, email, push or Telegram through the shared block.

Two optional moving averages are included, off by default, with independent length and SMA/EMA type. They're a convenience, not part of the level logic.

Where it's weak

The bands describe now, not then. The whole set is rebuilt from scratch on every closed bar. A band you see stretching back across three months of chart was not there three months ago โ€” it was computed this morning and drawn across the full width. Do not read the left-hand side of the chart as a record of what the indicator would have shown you at the time.

Pivots confirm ten bars late. With prd at 10 a pivot cannot be known until ten bars after it forms, so a new band appears ten bars after the swing that justifies it. That's inherent to pivot detection, not a flaw here, but it means the most recent swing is never in the calculation yet.

Notifications are off by default. noti_type starts at none on both platforms. You will get break triangles on the chart and nothing in your phone until you set it.

The fill is solid, not transparent. MetaTrader rectangles have no alpha, so a band is an opaque block with the candles drawn on top of it. On a chart with several wide bands it's visually heavy. Narrowing ChannelW or lowering MaxNumSR is the practical answer.

Break markers only fire from outside. The break test is skipped entirely while the close sits inside any band, so a bar that closes out of one band and straight into another is not marked. In a chart with six bands stacked close together, that happens.

inp_lookback caps the replay at 1000 bars. The full rebuild on every closed bar is expensive, and this is the guard. Scroll further back than that and the bands are still drawn โ€” computed from the last 1000 bars, not from what was on screen.

Nothing tells you a band has been used up. A band that price has already broken and left behind stays on the chart at full strength until the pivots feeding it age out of the loopback window.

Questions you'll have

Does it repaint? The bands are recalculated on every closed bar, so the set can change: a band can vanish, move, or be replaced when new pivots arrive. Nothing is anchored to history. Read them as the current picture.

Why is one band thin and another fat? Because the width is however far apart the clustered pivots were, up to the ChannelW tolerance. It's not a fixed size.

Why did a level I expected not get drawn? Either it lost the strength contest to an overlapping band, or its pivots are older than the 290-bar loopback.

Why are all my bands far away from price? The loopback is reaching back into a different price regime. Shorten loopback or use a lower timeframe.

What is strength actually counting? Twenty per pivot in the band, plus one for every bar in the loopback that touched it. The second term usually dominates.

Can I see which pivots built a band? Yes, turn showpp on and the H and L labels appear.

How do I get alerts? Set noti_type; it defaults to none. Alerts fire when a close breaks out of a band.

Can an EA read it? Only the two optional moving averages are buffers. The bands themselves are chart objects with the SRch_box_ prefix and would have to be read as objects.

Best timeframe? M30 to H1 for intraday levels. On H4 and above check that the 290-bar window still covers a price regime you care about.

MT4? Both platforms are included, one download each. Same pivots, same scoring, same bands.

Support

Send me a message with a screenshot, the symbol and the timeframe, and I'll tell you what the tool was doing on that bar.

Analysis tool. It places no trades and makes no profitability claim. Past price behaviour is not a guide to future price behaviour.