input month_lookback = 2;
input days_lookback = 20;
input showverticallines = yes;
input showlabels = yes;
def bn = BarNumber();
def count = if GetMonth() != GetMonth()[1] then count[1] + 1 else count[1];
def month_count = HighestAll(count) - count ;
def month_begin_bar = if month_count == month_lookback and month_count[1] == month_lookback + 1
then bn else Double.NaN;
AddVerticalLine(bn == HighestAll(month_begin_bar),
GetMonth() + "/" + GetDayOfMonth(GetYYYYMMDD()) + "/" + GetYear(), Color.YELLOW);
def days_back_1 = HighestAll(month_begin_bar) - days_lookback;
AddVerticalLine(bn == days_back_1,
GetMonth() + "/" + GetDayOfMonth(GetYYYYMMDD()) + "/" + GetYear(), Color.WHITE);
def days_back_2 = days_back_1 - days_lookback;
AddVerticalLine(bn == days_back_2,
GetMonth() + "/" + GetDayOfMonth(GetYYYYMMDD()) + "/" + GetYear(), Color.YELLOW);
AddLabel(showlabels, "Date Begin: " +
AsPrice(HighestAll(if bn == HighestAll(month_begin_bar) then GetYYYYMMDD() else Double.NaN)), Color.YELLOW);
AddLabel(showlabels,
days_lookback + " Days Before Date Begin: " +
AsPrice(HighestAll(if bn == days_back_1 then GetYYYYMMDD() else Double.NaN)), Color.WHITE);
AddLabel(showlabels,
days_lookback + " Days Before 1st Days Lookback: " +
AsPrice(HighestAll(if bn == days_back_2 then GetYYYYMMDD() else Double.NaN)), Color.YELLOW);
;