@Jerseystranger
Added input to hide chart bubbles.
Added input to hide chart bubbles.
Ruby:
#Shows previous days High, Low, Open, Close, and High/Low of defined timeframe defaulted to premarket hours.
#Code by Svanoy
input Show_High = Yes;
input Show_Low = Yes;
input Show_Open = Yes;
input Show_Close = Yes;
input Show_Premarket_High_and_Low = Yes;
input Show_Chart_Bubbles = No;
input sPeriod = {default DAY};
def offset = 1;
def Today = if GetDay()==GetLastDay() then 1 else 0;
def varhigh = high(period = sPeriod)[offset];
def varlow = low(period = sPeriod)[offset];
def varopen = open(period = sPeriod)[offset];
def varclose = close(period = sPeriod)[offset];
def periodstart = 0400;
def periodend = 0930;
def activeperiod = If secondsFromTime(periodstart)>=0 and secondsTillTime(periodend)>0 then yes else Double.NaN;
def acriveperiodstartbar = if secondsFromTime(periodstart)==0 then barnumber() else acriveperiodstartbar[1];
def activeperiodendbar = fold i=0 to AbsValue(BarNumber()) while !IsNaN(GetValue(activeperiod,-i)) do GetValue(BarNumber(),-i);
def activeperiodlength = 1+(activeperiodendbar-acriveperiodstartbar);
def activeperiodhigh;
if secondsFromTime(periodstart)==0 {
activeperiodhigh = high;
}else if !IsNaN(activeperiod) and high>=activeperiodhigh[1]{
activeperiodhigh = high;
}else{
activeperiodhigh = activeperiodhigh[1];}
def activeperiodlow;
if secondsFromTime(periodstart)==0 {
activeperiodlow = low;
}else if !IsNaN(activeperiod) and low<=activeperiodlow[1]{
activeperiodlow = low;
}else{
activeperiodlow = activeperiodlow[1];}
def activephigh = fold iah=0 to AbsValue(activeperiodlength) while !IsNaN(activeperiod) do GetValue(activeperiodhigh,-iah);
def activeplow = fold ial=0 to AbsValue(activeperiodlength) while !IsNaN(activeperiod) do GetValue(activeperiodlow,-ial);
def aph = fold iaph = 0 to 1 while !IsNaN(close[10]) do activeperiodhigh;
def apl = fold iapl = 0 to 1 while !IsNaN(close[10]) do activeperiodlow;
def h = fold ih = 0 to 1 while !IsNaN(close[10]) do varhigh;
def l = fold il = 0 to 1 while !IsNaN(close[10]) do varlow;
def o = fold io = 0 to 1 while !IsNaN(close[10]) do varopen;
def c = fold ic = 0 to 1 while !IsNaN(close[10]) do varclose;
plot PreHigh = if !IsNaN(activeperiod) and activephigh>0 then activephigh else Double.NaN;
PreHigh.SetPaintingStrategy(PaintingStrategy.LINE);
PreHigh.SetDefaultColor(Color.LIME);
PreHigh.SetHiding(!Show_Premarket_High_and_Low);
plot PreLow = if !IsNaN(activeperiod) and activeplow>0 then activeplow else Double.NaN;
PreLow.SetPaintingStrategy(PaintingStrategy.LINE);
PreLow.SetDefaultColor(Color.PINK);
PreLow.SetHiding(!Show_Premarket_High_and_Low);
plot PMHigh = if IsNaN(activeperiod) and aph>0 then aph else Double.NaN;
PMHigh.SetPaintingStrategy(PaintingStrategy.DASHES);
PMHigh.SetDefaultColor(Color.LIME);
PMHigh.SetHiding(!Show_Premarket_High_and_Low);
plot PMLow = if IsNaN(activeperiod) and apl>0 then apl else Double.NaN;
PMLow.SetPaintingStrategy(PaintingStrategy.DASHES);
PMLow.SetDefaultColor(Color.PINK);
PreLow.SetHiding(!Show_Premarket_High_and_Low);
plot DayHigh = if h > 1 then h else Double.NaN;
DayHigh.SetPaintingStrategy(PaintingStrategy.DASHES);
DayHigh.SetDefaultColor(Color.LIGHT_GREEN);
DayHigh.SetHiding(!Show_High);
plot DayLow = if l > 1 then l else Double.NaN;
DayLow.SetPaintingStrategy(PaintingStrategy.DASHES);
DayLow.SetDefaultColor(Color.LIGHT_RED);
DayLow.SetHiding(!Show_Low);
plot DayOpen = if o > 1 then o else Double.NaN;
DayOpen.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
DayOpen.AssignValueColor(if varopen >= varclose then Color.GREEN else Color.RED);
DayOpen.SetHiding(!Show_Open);
plot DayClose = if c > 1 then c else Double.NaN;
DayClose.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
DayClose.AssignValueColor(if varopen >= varclose then Color.RED else Color.GREEN);
DayClose.SetHiding(!Show_Close);
AddChartBubble(IsNaN(PreHigh[1]) and !IsNaN(PreHigh) and Show_Premarket_High_and_Low and Show_Chart_Bubbles,PreHigh,"PreMarket High",Color.WHITE,yes);
AddChartBubble(IsNaN(PreLow[1]) and !IsNaN(PreLow) and Show_Premarket_High_and_Low and Show_Chart_Bubbles,PreLow,"PreMarketLow",Color.WHITE,no);
AddChartBubble(DayHigh!=DayHigh[1] and !IsNaN(close) and Show_High and Show_Chart_Bubbles,h,"PrevDayHigh",Color.WHITE,yes);
AddChartBubble(DayLow!=DayLow[1] and !IsNaN(close)and Show_Low and Show_Chart_Bubbles,l,"PrevDayLow",Color.WHITE,no);
AddChartBubble(DayOpen!=DayOpen[1] and !IsNaN(close) and Show_Open and Show_Chart_Bubbles,o,"PrevDayOpen",Color.WHITE,if o>=c then yes else no);
AddChartBubble(DayClose!=DayClose[1] and !IsNaN(close) and Show_Close and Show_Chart_Bubbles,c,"PrevDayClose",Color.WHITE, if o>=c then no else yes);
AddCloud(if Show_Premarket_High_and_Low then PreHigh else Double.NEGATIVE_INFINITY,if Show_Premarket_High_and_Low then PreLow else Double.NEGATIVE_INFINITY,color.LIGHT_GRAY,color.LIGHT_GRAY);