exponential curve linear regression , use falloff multiplier to control curve falloff strength.
study("[RS]AA&DCL.V0", overlay=true) // ||--- Inputs: tempname = input("text") risingdecaymultiplier = (syminfo.mintick*input(30.000, type=float)) fallingdecaymultiplier = (syminfo.mintick*input(30.000, type=float)) marginmultiplier = input(10) hidefallingline = input(false) hiderisingline = input(false) hidetopmargin = input(false) hidebottommargin = input(false) // ||--- Get the decay averages for tops and bottoms. topdecay = high >= nz(topdecay[1]) ? high : nz(topdecay[1]) - nz(fallingdecay[1]) botdecay = n < 10 ? low : low <= nz(botdecay[1]) ? low : nz(botdecay[1]) + nz(risingdecay[1]) // ||--- Counters for decay falloffmultiplier = input(1.1) fallingdecaycounter = topdecay < topdecay[1] ? nz(fallingdecaycounter[1]) * sqrt(falloffmultiplier) : falloffmultiplier risingdecaycounter = botdecay > botdecay[1] ? nz(risingdecaycounter[1]) * sqrt(falloffmultiplier) : falloffmultiplier fallingdecay = (fallingdecaymultiplier * fallingdecaycounter)// * avgdecaymultiplier risingdecay = (risingdecaymultiplier * risingdecaycounter)// * avgdecaymultiplier //topdecay2 = topdecay - fallingdecay //botdecay2 = botdecay + risingdecay // ||--- Get the margin for entry tmargin = topdecay - (fallingdecaymultiplier*marginmultiplier) bmargin = botdecay + (risingdecaymultiplier*marginmultiplier) // ||--- Detect if price is in challenge zone or outside(trending/breakout) breakoutup = close > bmargin ? true : false breakoutdown = close < tmargin ? true : false // ||--- Color Switchs: topdecaycolor = breakoutdown ? topdecay < topdecay[1] and topdecay >= high ? maroon : na : topdecay < topdecay[1] and topdecay >= high ? gray : na botdecaycolor = breakoutup ? botdecay > botdecay[1] and botdecay <= low ? green : na : botdecay > botdecay[1] and botdecay <= low ? gray : na // ||--- Outputs: plot(hidefallingline ? na : topdecay, color=topdecaycolor, style=linebr, linewidth=2, join=true) plot(hiderisingline ? na : botdecay, color=botdecaycolor, style=linebr, linewidth=2, join=true) //plot(topdecay+fallingdecaymultiplier, color=topdecaycolor, style=circles, linewidth=2) //plot(botdecay-risingdecaymultiplier, color=botdecaycolor, style=circles, linewidth=2) plot(hidetopmargin ? na : tmargin, color=topdecaycolor, style=linebr, linewidth=1, join=true) plot(hidebottommargin ? na : bmargin, color=botdecaycolor, style=linebr, linewidth=1, join=true)