Pivot Based Trailing Maxima & Minima (LuxAlgo)
Pivot Based Trailing Maxima & Minima (LuxAlgo)
0
International (CC BY-NC-SA 4.0) https://creativecommons.org/licenses/by-nc-sa/4.0/
// © LuxAlgo
//@version=5
indicator("Pivot Based Trailing Maxima & Minima [LuxAlgo]", "LuxAlgo - Pivot Based
Trailing Maxima & Minima", overlay = true, max_bars_back = 500, max_lines_count =
500)
//------------------------------------------------------------------------------
//Settings
//-----------------------------------------------------------------------------{
length = input.int(24, minval = 2, maxval = 500)
backpaint = input(false, tooltip = 'Backpainting offset displayed elements in the
past. Disable backpainting to see real time information returned by the
indicator.')
//Style
maxCss = input.color(color.teal, 'Trailing Maximum Color', group = 'Style')
minCss = input.color(color.red , 'Trailing Minimum Color', group = 'Style')
avgCss = input.color(#ff5d00 , 'Trailing Maximum Color', group = 'Style')
//-----------------------------------------------------------------------------}
//Calculation
//-----------------------------------------------------------------------------{
var float max = na
var float min = na
var offset = backpaint ? length : 0
ph = ta.pivothigh(length, length)
pl = ta.pivotlow(length, length)
if ph or pl
max := high[length]
min := low[length]
avg = math.avg(max,min)
//-----------------------------------------------------------------------------}
//Non offset trailing max/min
//-----------------------------------------------------------------------------{
n = bar_index
max_prev = max
min_prev = min
avg_prev = avg
max2 = max
min2 = min
//Set lines
line1 = line.new(n-(length-i), max_prev, n-(length-1-i), max2, color=
maxCss)
line2 = line.new(n-(length-i), min_prev, n-(length-1-i), min2, color=
minCss)
linefill.new(line1,line2,color.new(fill_css, 80))
max_prev := max2
min_prev := min2
avg_prev := avg2
//-----------------------------------------------------------------------------}
//Plots
//-----------------------------------------------------------------------------{
plot1 = plot(max, 'Trailing Maximum'
, ph or pl ? na : maxCss
, 1
, plot.style_linebr
, offset = -offset)
plot(avg, 'Average'
, ph or pl ? na : avgCss
, 1
, plot.style_linebr
, offset = -offset)
//Labels
plotshape(pl ? pl : na, "Pivot High"
, shape.labelup
, location.absolute
, maxCss
, -offset
, text = "▲"
, textcolor = color.white
, size = size.tiny)
//-----------------------------------------------------------------------------}