Support & Resistance Power Channel

Category: Indicators By: Iván González Created: October 10, 2025, 12:08 PM
October 10, 2025, 12:08 PM
Indicators
7 Comments

One-line summary:
A dynamic support/resistance channel that highlights recent extremes, projects actionable zones forward with ATR-based thickness, and quantifies “Buy vs. Sell Power” to gauge who’s in control.

1) What This Indicator Does

This tool builds a power channel using the highest high and lowest low over a configurable lookback. It then expands these bounds into support/resistance areas using a volatility buffer (ATR), plots a midline as a quick gravity center, and marks tests (touches/crosses) of the zones. On top of that, it tallies how many candles were bullish vs. bearish in the lookback window, displaying Buy Power and Sell Power as an ultra-fast market read.

At a glance, you get:

  • A resistance area around the recent highest high.

  • A support area around the recent lowest low.

  • A midline for mean-reversion context.

  • Arrows/points to call out zone tests and exact extremes.

  • Buy/Sell Power labels to judge recent pressure.

2) How It Works

a) Lookback highs & lows
The indicator computes:

  • maxVal = highest high over length.

  • minVal = lowest low over length.

  • midVal = (maxVal + minVal) / 2.

b) Volatility buffer (zone thickness)
It uses AverageTrueRange[200] * 0.5 to define half-ATR bands around the top and bottom levels. The result is a thickness that adapts to current volatility:

  • Resistance area spans maxVal + ATR*0.5 to maxVal - ATR*0.5.

  • Support area spans minVal + ATR*0.5 to minVal - ATR*0.5.

c) Forward projection
Zones are drawn from barindex - length (left anchor) to barindex + extend (right projection), so you see the channel ahead of current price action.

d) Buy vs. Sell Power
Over the last length candles, the script counts:

  • Buy Power: bars where close > open.

  • Sell Power: bars where close < open.
    Neutral candles (dojis) are ignored. Labels are placed near the support/resistance to keep context on the same vertical scale.

e) Zone tests & markers

  • A support test is flagged when price reclaims the top of the support band from below (low crosses above topOfSupport), printing an up arrow under the zone.

  • A resistance test is flagged when price rejects from the bottom of the resistance band (high crosses below bottomOfResistance), printing a down arrow above the zone.

  • Exact occurrences of the absolute high and absolute low in the window are point-marked for precision.

3) Inputs & Defaults

  • length (integer)Lookback window for highs/lows and power count.

    • Typical values: 100–200.

    • Example default: length = 130.

  • extend (integer)Forward projection (how far to extend drawings to the right).

    • Typical values: 15–50 depending on chart timeframe.

    • Example default: extend = 30.

  • Colors & opacity (RGBA)

    • Top zone (resistance): tcolR=255, tcolG=0, tcolB=255 (magenta tone)

    • Bottom zone (support): bcolR=0, bcolG=255, bcolB=0 (green tone)

    • Fill transparency: alpha = 60 (soft overlay)
      Tweak to match your chart theme.

  • ATR factor (implicit): AverageTrueRange[200] * 0.5

    • You can change the ATR period (e.g., 100, 50) or the multiplier (e.g., 0.35 / 0.75 / 1.0) to tighten or loosen the zones.

4) Plot Elements & Visual Guide

  • Resistance area:
    Rectangle + top guideline + “▲ #maxVal#” label at the right extension.
    Useful to spot supply and potential exhaustion.

  • Support area:
    Rectangle + lower guideline + “▼ #minVal#” label.
    Useful to spot demand and potential absorption.

  • Midline (dotted):
    Horizontal line at the midpoint between maxVal and minVal with a “▶ #midVal#” label.
    Think of this as a balance point—helpful for mean-reversion bias.

  • Tests:

    • Up arrows appear when price reclaims the top of support from below.

    • Down arrows appear when price rejects the bottom of resistance from above.

    • Points mark the exact bar(s) that set the window’s absolute high/low.

  • Buy/Sell Power labels:
    Plotted to the right of price (halfway into the extension), aligned with the top/bottom zones for instant context.

5) How to Use It in Practice

A) Bounce mindset (range conditions)

  • Prefer longs near support area when tests fire upward (up arrows) and Buy Power ≥ Sell Power.

  • Prefer shorts near resistance area when tests fire downward (down arrows) and Sell Power ≥ Buy Power.

B) Breakout mindset (trend conditions)

  • A strong close beyond the resistance area with rising Buy Power tilts bias to continuation.

  • A decisive close below the support area with rising Sell Power favors continuation down.

C) Midline behavior

  • In choppy markets, price frequently gravitates to the midline after an extreme; watch for reversion trades back to midline when tests appear at the band edges.

  • In strong trends, the midline often flips from magnet to support/resistance. Treat touches as continuation opportunities if power counts agree.

D) Multi-timeframe tips

  • Use a higher timeframe channel for regime and key levels, then execute on a lower timeframe when tests or breakouts align with the bigger picture.

Nothing here is financial advice; this is a visual decision aid. Always test and manage risk.

6) Parameter Tuning & Examples

  • Increase length for smoother, more stable zones (great for higher timeframes or swing bias).

  • Decrease length for reactive zones (scalping/intraday), at the cost of more frequent changes.

  • Increase extend when you want the levels to stay visible further into the right margin (handy for planning).

  • Decrease extend to declutter on smaller screens or lower timeframes.

  • ATR period & factor

    • Shorter ATR or larger multiplierthicker zones (more tolerance, fewer false tests).

    • Longer ATR or smaller multiplierthinner zones (tighter precision, more tests).

  • Color & opacity

    • Keep high contrast but avoid fully opaque fills; the default alpha=60 is a good balance.

7) Trade Ideas & Rules of Thumb (Non-Financial Advice)

  1. Conservative bounce

    • Wait for an up arrow at support (or down arrow at resistance), then a confirming candle in your direction.

    • Stops just outside the zone (e.g., beyond 1× to 1.5× the ATR buffer).

    • Consider partial profits near midline, trail remainder toward the opposite band.

  2. Aggressive breakout

    • Enter on a close beyond a band with power count in favor (Buy>Sell for upside, vice versa for downside).

    • Invalidations: return into the zone or power count flipping the other way.

    • Trail using recent swing structure or a multiple of ATR.

  3. Midline mean-reversion

    • If range-bound and power is balanced, look for fades from band → midline and midline → opposite band.

8) Limitations & Best Practices

  • Trending vs. ranging: Bounces are less reliable in strong trends; consider breakouts + pullbacks instead.

  • Late recognition: A very large length makes zones stable but slower to reflect regime shifts.

  • Noise: Ultra-short settings may cause over-signaling; pair with structure (swings/volume) to filter.

  • Clarity: If the chart feels busy, reduce extend, lighten fills, or hide midline until needed.

9) ProBuilder Code

// -----------------------------------------------
// PRC_Support and Resistance Power Channel [ChartPrime]
//version = 0
//07.10.2025
//Iván González @ www.prorealcode.com
//Sharing ProRealTime knowledge
// -----------------------------------------------
// INPUTS
// -----------------------------------------------
DEFPARAM DRAWONLASTBARONLY = true
length = 130
extend = 30
// COLOURS
tcolR = 255
tcolG = 0
tcolB = 255
bcolR = 0
bcolG = 255
bcolB = 0
alpha = 60
// -----------------------------------------------
// CALCULATION SUPPORT AND RESISTANCE AREA
// -----------------------------------------------
// ATR
atr = AverageTrueRange[200] * 0.5
// HIGHEST AND LOWEST PRICE
maxVal = HIGHEST[length](high)
minVal = LOWEST[length](low)
midVal = (maxVal + minVal) / 2
// -----------------------------------------------
// DRAW SUPPORT AND RESISTANCE AREA
// -----------------------------------------------
if islastbarupdate then
maxOffset = barssince(high=maxVal)
minOffset = barssince(low=minVal)
// RESISTANCE AREA
DRAWRECTANGLE(barindex - length, maxVal + atr, barindex + extend, maxVal - atr) fillcolor(tcolR, tcolG, tcolB, alpha)COLOURED(tcolR, tcolG, tcolB,0)
DRAWSEGMENT(barindex - length, maxVal + atr, barindex + extend + 30, maxVal + atr) COLOURED(tcolR, tcolG, tcolB)
DRAWTEXT("▲ #maxVal#", barindex + extend + 10, maxVal)
   
// SUPPORT AREA
DRAWRECTANGLE(barindex - length, minVal + atr, barindex + extend, minVal - atr) fillcolor(bcolR, bcolG, bcolB, alpha)COLOURED(bcolR, bcolG, bcolB, 0)
DRAWSEGMENT(barindex - length, minVal - atr, barindex + extend + 30, minVal - atr) COLOURED(bcolR, bcolG, bcolB)
DRAWTEXT("▼ #minVal#", barindex + extend + 10, minVal)
   
// MIDDLE LINE
DRAWSEGMENT(barindex - length, midVal, barindex + extend, midVal) COLOURED(128, 128, 128) STYLE(DOTTEDLINE, 1)
DRAWTEXT("▶ #midVal#", barindex + extend + 10, midVal) COLOURED(128, 128, 128)
   
// BUY AND SELL POWER
buyPower = 0
sellPower = 0
   
FOR i = 0 TO length - 1 DO
IF close[i] > open[i] THEN
buyPower = buyPower + 1
ELSIF close[i] < open[i] THEN
sellPower = sellPower + 1
ENDIF
NEXT
   
textPosX = barindex + round(extend*0.5)
DRAWTEXT("Sell Power: #sellpower#", textPosX, maxVal)
DRAWTEXT("Buy Power: #buypower#", textPosX, minVal)
   
// DRAW SUPPORT AND RESISTANCE TESTS
topOfSupport = minVal + atr
bottomOfResistance = maxVal - atr
   
FOR i = 0 TO length - 1 DO
IF low[i+1] <= topOfSupport AND low[i] > topOfSupport THEN
DRAWARROWUP(barindex - i, minval - atr*1.5) COLOURED(bcolR, bcolG, bcolB)
ENDIF
IF high[i+1] >= bottomOfResistance AND high[i] < bottomOfResistance THEN
DRAWARROWDOWN(barindex - i, maxval + 1.5*atr) COLOURED(tcolR, tcolG, tcolB)
ENDIF
if high[i]=maxval then
drawpoint(barindex[i],maxval,3)coloured(tcolR, tcolG, tcolB)
endif
if low[i]=minval then
drawpoint(barindex[i],minval,3)coloured(bcolR, bcolG, bcolB)
endif
NEXT
   
endif

return

Download
Filename: PRC_Support-Resistance-Pow-Ch.itf
Downloads: 146
Iván González Master
I usually let my code do the talking, which explains why my bio is as empty as a newly created file. Bio to be initialized...
Author’s Profile

Comments

Logo Logo
Loading...