#Previous Lookback Day's Close extended to right edge with option to limit it to show only current day (thisday == 0)
input showtodayonly = no;
input lookback = 2;
#Defines each Day's Bars with zero for current day and +1 for each subsequent day
def ymd = GetYYYYMMDD();
def candles = !IsNaN(close);
def capture = candles and ymd != ymd[1];
def dayCount = CompoundValue(1, if capture then dayCount[1] + 1 else dayCount[1], 0);
def thisDay = (HighestAll(dayCount) - dayCount);
#Lookback Day's Close defined and extended to right edge
def closeday = if thisDay == lookback and
GetTime() <= RegularTradingEnd(GetYYYYMMDD())
then close
else closeday[1];
#Lookback Day's Close plotted from that Close to the right edge unless showtodayonly selected, limiting that plot to current day
plot dataclose = if showtodayonly and thisDay > 0
then Double.NaN
else closeday;
dataclose.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
dataclose.SetDefaultColor(Color.yellow);
#Lookback Day's Close defined and extended to right edge
def highday = if thisDay == lookback and
GetTime() <= RegularTradingEnd(GetYYYYMMDD())
then high(period=aggregationPeriod.DAY)
else highday[1];
#Lookback Day's High plotted to the right edge unless showtodayonly selected, limiting that plot to current day
plot datahigh = if showtodayonly and thisDay > 0
then Double.NaN
else highday;
datahigh.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
datahigh.SetDefaultColor(Color.green);
#Lookback Day's Low plotted to the right edge unless showtodayonly selected, limiting that plot to current day
def lowday = if thisDay == lookback and
GetTime() <= RegularTradingEnd(GetYYYYMMDD())
then low(period=aggregationPeriod.DAY)
else lowday[1];
plot datalow = if showtodayonly and thisDay > 0
then Double.NaN
else lowday;
datalow.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
datalow.SetDefaultColor(Color.red);
#Lookback Day's Low plotted to the right edge unless showtodayonly selected, limiting that plot to current day
def vwapday = if thisDay == lookback and
GetTime() <= RegularTradingEnd(GetYYYYMMDD())
then reference vwap
else vwapday[1];
plot datavwap = if showtodayonly and thisDay > 0
then Double.NaN
else vwapday;
datavwap.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
datavwap.SetDefaultColor(Color.cyan);
#Bubbles
input showbubbles = yes;
input bubblemover = 2;
def bm = bubblemover;
def bm1 = bm +1;
addchartBubble(showbubbles and isnan(close[bm]) and !isnan(close[bm1]), dataclose[bm], "C"+lookback, dataclose.takeValueColor());
addchartBubble(showbubbles and isnan(close[bm]) and !isnan(close[bm1]), datahigh[bm], "H"+lookback, datahigh.takeValueColor());
addchartBubble(showbubbles and isnan(close[bm]) and !isnan(close[bm1]), datalow[bm], "L"+lookback, datalow.takeValueColor());
addchartBubble(showbubbles and isnan(close[bm]) and !isnan(close[bm1]), datavwap[bm], "VWAP"+lookback, datavwap.takeValueColor());
#