#bars_back_hilorng
#https://usethinkscript.com/threads/projection-indicator-high-and-low.20856/
def na = double.nan;
def bn = barnumber();
def lastbn = HighestAll(If(IsNaN(close), 0, bn));
def lastbar = if (bn == lastbn) then 1 else 0;
#def lastbar = !isnan(close[0]) and isnan(close[-1]);
#def last_close = highestall(if lastbar then close else 0);
input set_back = 2;
input bars_back = 20;
input range_factor = 1.0;
def hi = Highest(high[set_back], bars_back);
def lo = Lowest(low[set_back], bars_back);
def rng = range_factor * (hi-lo);
def mid = (high+low)/2;
# save line data on last bar
def hi2 = if bn == 1 then 0
# else if !isnan(close) and isnan(close) then mid + rng/2
else if lastbar then mid + rng/2
else hi2[1];
def lo2 = if bn == 1 then 0
# else if !isnan(close) and isnan(close) then mid - rng/2
else if lastbar then mid - rng/2
else lo2[1];
#plot zhi = if hi2 > 0 then hi2 else na;
#plot zlo = if lo2 > 0 then lo2 else na;
plot zhi = if (bn >= (lastbn-0)) and (bn <= (lastbn+2)) then hi2 else na;
plot zlo = if (bn >= (lastbn-0)) and (bn <= (lastbn+2)) then lo2 else na;
zhi.setdefaultcolor(color.cyan);
zlo.setdefaultcolor(color.cyan);
#