Consolidation Ranges [kingthies]

Consolidation Range Analysis
Published by Eric Thies, January 2021

Indicator Summary
  • This tool calculates, analyzes and plots the visualization of a relative range over a given period of time
  • By adding to charts, users are enabled to see the impulsive nature of market cycles, along with their efforts to consolidate thereafter
  • The default period is 30, and should be adjusted to users preference
  • The default input is the current close price, on the chosen timeframe of the chart

Script Source

// [pine]
//© kingthies || This source code is subject to the terms of the Mozilla Public License 2.0 at
study("Consolidation Ranges [kingthies]", shorttitle="CR [kingthies]", overlay=true)

// !<------ User Inputs -----> 
[symbol=src]src[/symbol] = input(close, title='Range Input (Default set to Close'), lengthEMA=input(30,title='Length'),zoneToggle = input(true, title="Toggle Zone Highlights"), iCol =, 100), 

// !<---- Declarations & Calculations ---- > 
trndUp = float(na),trndDwn = float(na), mid = float(na), e = [__tag__=ema]ema[/__tag__]([symbol=src]src[/symbol], lengthEMA)
trndUp := [symbol=src]src[/symbol] < [symbol=nz]nz[/symbol](trndUp[1]) and [symbol=src]src[/symbol] > trndDwn[1] ? [symbol=nz]nz[/symbol](trndUp[1]) : high, trndDwn := [symbol=src]src[/symbol] < [symbol=nz]nz[/symbol](trndUp[1]) and [symbol=src]src[/symbol] > trndDwn[1] ? [symbol=nz]nz[/symbol](trndDwn[1]) : low, mid := [symbol=avg]avg[/symbol](trndUp, trndDwn)

// !< ---- Plotting -----> 
highRange = plot(trndUp == [symbol=nz]nz[/symbol](trndUp[1]) ? trndUp : na, color=color.white, linewidth=2, style=plot.style_linebr, title="Top of Period Range")
lowRange = plot(trndDwn == [symbol=nz]nz[/symbol](trndDwn[1]) ? trndDwn : na, color=color.white, linewidth=2, style=plot.style_linebr, title="Bottom of Period Range")
xzone = plot(zoneToggle ? [symbol=src]src[/symbol] > e ? trndDwn : trndUp : na, color=iCol, style=plot.style_circles, linewidth=0, editable=false)
fill(highRange, xzone, color=color.lime,transp=70), fill(xzone, lowRange,,transp=70)
// [/pine]

Release Notes: Upgraded to pine v5
Open-source script

In true TradingView spirit, the author of this script has published it open-source, so traders can understand and verify it. Cheers to the author! You may use it for free, but reuse of this code in a publication is governed by House Rules. You can favorite it to use it on a chart.

Want to use this script on a chart?