#TPO_Extended_POCs_HVAs_LVAs_for_x_Daysback_and_Limited_Plots_when_crossed
#More can be added using the logic below
#Sleepyz - usethinkscript request @yardlay
#Added HVA * LVA Lines and Plot limit when crossed for all 3;
script v {
    input daysback = 1;
    def volp = reference TPOProfile("time per profile" = "DAY", "on expansion" = no, "price per row height mode" = "TICKSIZE");
    def ymd  = GetYYYYMMDD();
    def y    = if ymd != ymd[1] then y[1] + 1 else y[1];
    def pc   = if IsNaN(close)
                  then pc[1] else
               if y == HighestAll

 - daysback
                  then volp  else
               pc[1];
    plot x    = if y > HighestAll

 - daysback and Between(pc, low, high)
           then BarNumber() else Double.NaN;
    plot poc = if IsNaN(LowestAll(x))
           then pc
           else if BarNumber() > LowestAll(x)
           then Double.NaN
           else pc;
}
script vh {
    input daysback = 1;
    def volh = reference TPOProfile("time per profile" = "DAY", "on expansion" = no, "price per row height mode" = "TICKSIZE").VAHigh;
    def ymd  = GetYYYYMMDD();
    def y    = if ymd != ymd[1] then y[1] + 1 else y[1];
    def ph   = if IsNaN(close)
                  then ph[1] else
               if y == HighestAll

 - daysback
                  then volh  else
               ph[1];
    plot x    = if y > HighestAll

 - daysback and Between(ph, low, high)
           then BarNumber() else Double.NaN;
    plot hva = if IsNaN(LowestAll(x))
           then ph
           else if BarNumber() > LowestAll(x)
           then Double.NaN
           else ph;
}
script vl {
    input daysback = 1;
    def voll = reference TPOProfile("time per profile" = "DAY", "on expansion" = no, "price per row height mode" = "TICKSIZE").VALow;
    def ymd  = GetYYYYMMDD();
    def y    = if ymd != ymd[1] then y[1] + 1 else y[1];
    def pl   = if IsNaN(close)
                  then pl[1] else
               if y == HighestAll

 - daysback
                  then voll  else
               pl[1];
    plot x    = if y > HighestAll

 - daysback and Between(pl, low, high)
           then BarNumber() else Double.NaN;
    plot val = if IsNaN(LowestAll(x))
           then pl
           else if BarNumber() > LowestAll(x)
           then Double.NaN
           else pl;
}
DefineGlobalColor("H", Color.YELLOW);
DefineGlobalColor("L", Color.YELLOW);
DefineGlobalColor("P", Color.DARK_RED);
DefineGlobalColor("NB", Color.MAGENTA);
plot v1 =  v(1).poc;
v1.AssignValueColor(if IsNaN(LowestAll(v(1).x)) then GlobalColor("NB") else GlobalColor("P"));
v1.SetPaintingStrategy(PaintingStrategy.DASHES);
v1.SetLineWeight(2);
plot v2 =  v(2).poc;
v2.AssignValueColor(if IsNaN(LowestAll(v(2).x)) then GlobalColor("NB") else GlobalColor("P"));
v2.SetPaintingStrategy(PaintingStrategy.DASHES);
v2.SetLineWeight(2);
plot v3 =  v(3).poc;
v3.AssignValueColor(if IsNaN(LowestAll(v(3).x)) then GlobalColor("NB") else GlobalColor("P"));
v3.SetPaintingStrategy(PaintingStrategy.DASHES);
v3.SetLineWeight(2);
plot v4 =  v(4).poc;
v4.AssignValueColor(if IsNaN(LowestAll(v(4).x)) then GlobalColor("NB") else GlobalColor("P"));
v4.SetPaintingStrategy(PaintingStrategy.DASHES);
v4.SetLineWeight(2);
plot v5 =  v(5).poc;
v5.AssignValueColor(if IsNaN(LowestAll(v(5).x)) then GlobalColor("NB") else GlobalColor("P"));
v5.SetPaintingStrategy(PaintingStrategy.DASHES);
v5.SetLineWeight(2);
plot v6 =  v(6).poc;
v6.AssignValueColor(if IsNaN(LowestAll(v(6).x)) then GlobalColor("NB") else GlobalColor("P"));
v6.SetPaintingStrategy(PaintingStrategy.DASHES);
v6.SetLineWeight(2);
plot v7 =  v(7).poc;
v7.AssignValueColor(if IsNaN(LowestAll(v(7).x)) then GlobalColor("NB") else GlobalColor("P"));
v7.SetPaintingStrategy(PaintingStrategy.DASHES);
v7.SetLineWeight(2);
plot v8 =  v(8).poc;
v8.AssignValueColor(if IsNaN(LowestAll(v(8).x)) then GlobalColor("NB") else GlobalColor("P"));
v8.SetPaintingStrategy(PaintingStrategy.DASHES);
v8.SetLineWeight(2);
plot v9 =  v(9).poc;
v9.AssignValueColor(if IsNaN(LowestAll(v(9).x)) then GlobalColor("NB") else GlobalColor("P"));
v9.SetPaintingStrategy(PaintingStrategy.DASHES);
v9.SetLineWeight(2);
plot v10 =  v(10).poc;
v10.AssignValueColor(if IsNaN(LowestAll(v(10).x)) then GlobalColor("NB") else GlobalColor("P"));
v10.SetPaintingStrategy(PaintingStrategy.DASHES);
v10.SetLineWeight(2);
;
AddLabel(1, "Most Recent Naked --> POC: " +
if IsNaN(LowestAll(v(1).x)) then "V1" else
if IsNaN(LowestAll(v(2).x)) then "V2" else
if IsNaN(LowestAll(v(3).x)) then "V3" else
if IsNaN(LowestAll(v(4).x)) then "V4" else
if IsNaN(LowestAll(v(5).x)) then "V5" else
if IsNaN(LowestAll(v(6).x)) then "V6" else
if IsNaN(LowestAll(v(7).x)) then "V7" else
if IsNaN(LowestAll(v(8).x)) then "V8" else
if IsNaN(LowestAll(v(9).x)) then "V9" else
if IsNaN(LowestAll(v(10).x)) then "V10" else
"NO V",GlobalColor("NB"));
input showbubbles_nakedPOC = yes;
AddChartBubble(showbubbles_nakedPOC and !IsNaN(close) and isnan(close[-1]), v1, "T1 " + astext(v1), GlobalColor("NB"));
AddChartBubble(showbubbles_nakedPOC and !IsNaN(close) and isnan(close[-1]), v2, "T2 " + astext(v2), GlobalColor("NB"));
AddChartBubble(showbubbles_nakedPOC and !IsNaN(close) and isnan(close[-1]), v3, "T3 " + astext(v3), GlobalColor("NB"));
AddChartBubble(showbubbles_nakedPOC and !IsNaN(close) and isnan(close[-1]), v4, "T4 " + astext(v4), GlobalColor("NB"));
AddChartBubble(showbubbles_nakedPOC and !IsNaN(close) and isnan(close[-1]), v5, "T5 " + astext(v5), GlobalColor("NB"));
AddChartBubble(showbubbles_nakedPOC and !IsNaN(close) and isnan(close[-1]), v6, "T6 " + astext(v6), GlobalColor("NB"));
AddChartBubble(showbubbles_nakedPOC and !IsNaN(close) and isnan(close[-1]), v7, "T7 " + astext(v7), GlobalColor("NB"));
AddChartBubble(showbubbles_nakedPOC and !IsNaN(close) and isnan(close[-1]), v8, "T8 " + astext(v8), GlobalColor("NB"));
AddChartBubble(showbubbles_nakedPOC and !IsNaN(close) and isnan(close[-1]), v9, "T9 " + astext(v9), GlobalColor("NB"));
AddChartBubble(showbubbles_nakedPOC and !IsNaN(close) and isnan(close[-1]), v10, "T10 " + astext(v10), GlobalColor("NB"));