https://www.tradingview.com/script/POdHcsHB-Laguerre-True-Range/ Jaggedsofts version. //@version=2 //Original by DonovanWall: https://www.tradingview.com/script/JwaPW9af-Laguerre-Multi-Filter-DW/ study("Laguerre True Range", shorttitle="LTR", overlay=true) src = input(defval=hl2, title="Source") drawRibbon = input(false, "Draw Ribbon?") showcross = input(true, "Show cross over/under") //Gamma Inputs gamma1 = input(defval=0.1, step=0.001, title="Gamma 1") gamma2 = input(defval=0.15, step=0.001, title="Gamma 2") gamma3 = input(defval=0.2, step=0.001, title="Gamma 3") gamma4 = input(defval=0.25, step=0.001, title="Gamma 4") gamma5 = input(defval=0.3, step=0.001, title="Gamma 5") gamma6 = input(defval=0.35, step=0.001, title="Gamma 6") gamma7 = input(defval=0.4, step=0.001, title="Gamma 7") gamma8 = input(defval=0.45, step=0.001, title="Gamma 8") gamma9 = input(defval=0.5, step=0.001, title="Gamma 9") gamma10 = input(defval=0.55, step=0.001, title="Gamma 10") gamma11 = input(defval=0.6, step=0.001, title="Gamma 11") gamma12 = input(defval=0.65, step=0.001, title="Gamma 12") gamma13 = input(defval=0.7, step=0.001, title="Gamma 13") gamma14 = input(defval=0.75, step=0.001, title="Gamma 14") gamma15 = input(defval=0.8, step=0.001, title="Gamma 15") gamma16 = input(defval=0.85, step=0.001, title="Gamma 16") gamma17 = input(defval=0.9, step=0.001, title="Gamma 17") gamma18 = input(defval=0.95, step=0.001, title="Gamma 18") //Laguerre Filter laguerre(a, b) => l0 = (1 - b)*a+b*nz(l0[1]) l1 = -b*l0+nz(l0[1])+b*nz(l1[1]) l2 = -b*l1+nz(l1[1])+b*nz(l2[1]) l3 = -b*l2+nz(l2[1])+b*nz(l3[1]) laguerre = (l0 + 2*l1 + 2*l2 + l3)/6 //Filter Values lag1 = laguerre(src, gamma1) lag2 = laguerre(src, gamma2) lag3 = laguerre(src, gamma3) lag4 = laguerre(src, gamma4) lag5 = laguerre(src, gamma5) lag6 = laguerre(src, gamma6) lag7 = laguerre(src, gamma7) lag8 = laguerre(src, gamma8) lag9 = laguerre(src, gamma9) lag10 = laguerre(src, gamma10) lag11 = laguerre(src, gamma11) lag12 = laguerre(src, gamma12) lag13 = laguerre(src, gamma13) lag14 = laguerre(src, gamma14) lag15 = laguerre(src, gamma15) lag16 = laguerre(src, gamma16) lag17 = laguerre(src, gamma17) lag18 = laguerre(src, gamma18) //Average Laguerre True Range altr = (laguerre(tr, gamma1) + laguerre(tr, gamma2) + laguerre(tr, gamma3) + laguerre(tr, gamma4) + laguerre(tr, gamma5) + laguerre(tr, gamma6) + laguerre(tr, gamma7) + laguerre(tr, gamma8) + laguerre(tr, gamma9) + laguerre(tr, gamma10) + laguerre(tr, gamma11) + laguerre(tr, gamma12) + laguerre(tr, gamma13) + laguerre(tr, gamma14) + laguerre(tr, gamma15) + laguerre(tr, gamma16) + laguerre(tr, gamma17) + laguerre(tr, gamma18))/18 amlag = (lag1 + lag2 + lag3 + lag4 + lag5 + lag6 + lag7 + lag8 + lag9 + lag10 + lag11 + lag12 + lag13 + lag14 + lag15 + lag16 + lag17 + lag18)/18 //Bands hb1 = amlag + altr*1.618 hb2 = amlag + 2*altr*1.618 lb1 = amlag - altr*1.618 lb2 = amlag - 2*altr*1.618 fcolor = amlag >= amlag[1] ? lime : red bcolor = #651FFF //Band Plots hplot2 = plot(hb2, color=bcolor, linewidth=2, title="High Band 2", transp=60) hplot1 = plot(hb1, color=bcolor, linewidth=2, title="High Band 1", transp=60) alplot = plot(amlag, color=bcolor, linewidth=1, title="Average Laguerre Filter", transp=80) lplot1 = plot(lb1, color=bcolor, linewidth=2, title="Low Band 1", transp=60) lplot2 = plot(lb2, color=bcolor, linewidth=2, title="Low Band 2", transp=60) //Band Fills fill(hplot1, hplot2, color=bcolor, title="High Band Fill", transp=80) fill(lplot1, lplot2, color=bcolor, title="Low Band Fill", transp=80) //Ribbon Plots plot(drawRibbon ? lag18 : na, color=lag18 >= lag18[1] ? lime : red, linewidth=1, title="Laguerre Filter 18") plot(drawRibbon ? lag17 : na, color=lag17 >= lag17[1] ? lime : red, linewidth=1, title="Laguerre Filter 17") plot(drawRibbon ? lag16 : na, color=lag16 >= lag16[1] ? lime : red, linewidth=1, title="Laguerre Filter 16") plot(drawRibbon ? lag15 : na, color=lag15 >= lag15[1] ? lime : red, linewidth=1, title="Laguerre Filter 15") plot(drawRibbon ? lag14 : na, color=lag14 >= lag14[1] ? lime : red, linewidth=1, title="Laguerre Filter 14") plot(drawRibbon ? lag13 : na, color=lag13 >= lag13[1] ? lime : red, linewidth=1, title="Laguerre Filter 13") plot(drawRibbon ? lag12 : na, color=lag12 >= lag12[1] ? lime : red, linewidth=1, title="Laguerre Filter 12") plot(drawRibbon ? lag11 : na, color=lag11 >= lag11[1] ? lime : red, linewidth=1, title="Laguerre Filter 11") plot(drawRibbon ? lag10 : na, color=lag10 >= lag10[1] ? lime : red, linewidth=1, title="Laguerre Filter 10") plot(drawRibbon ? lag9 : na, color=lag9 >= lag9[1] ? lime : red, linewidth=1, title="Laguerre Filter 9") plot(drawRibbon ? lag8 : na, color=lag8 >= lag8[1] ? lime : red, linewidth=1, title="Laguerre Filter 8") plot(drawRibbon ? lag7 : na, color=lag7 >= lag7[1] ? lime : red, linewidth=1, title="Laguerre Filter 7") plot(drawRibbon ? lag6 : na, color=lag6 >= lag6[1] ? lime : red, linewidth=1, title="Laguerre Filter 6") plot(drawRibbon ? lag5 : na, color=lag5 >= lag5[1] ? lime : red, linewidth=1, title="Laguerre Filter 5") plot(drawRibbon ? lag4 : na, color=lag4 >= lag4[1] ? lime : red, linewidth=1, title="Laguerre Filter 4") plot(drawRibbon ? lag3 : na, color=lag3 >= lag3[1] ? lime : red, linewidth=1, title="Laguerre Filter 3") plot(drawRibbon ? lag2 : na, color=lag2 >= lag2[1] ? lime : red, linewidth=1, title="Laguerre Filter 2") plot(drawRibbon ? lag1 : na, color=lag1 >= lag1[1] ? lime : red, linewidth=1, title="Laguerre Filter 1") crossdn = high < hb2[1] and high[1] >= hb2[1] //and src < src[1] crossup = low > lb2[1] and low[1] <= lb2[1] //and src > src[1] plotshape(showcross and crossdn ? hb2 : na, location=location.absolute, style=shape.labeldown, color=red, size=size.tiny, text="Sell", textcolor=white, transp=0, offset=-1) plotshape(showcross and crossup ? lb2 : na, location=location.absolute, style=shape.labelup, color=green, size=size.tiny, text="Buy", textcolor=white, transp=0, offset=-1) barcolor(fcolor)