Extend Point of Control Line (Volume Profile) For ThinkOrSwim

yardley

New member
Hi,

I need some help redoing the VolumeProfile Indictor that comes with ThinkorSwim. Here's my ask:

I want to present the VolumeProfile indicator on a chart such that the POC of control line extends all the way to the right axis. Here's a pic to demonstrate.
Image

The first image shows a chart that displays the daily Volume Profile with the blue line being the POC. In the second image, I manually drew a line that extends the POC line to the right with the price displayed at the end. Can someone help me replicate this with the existing VolumeProfile indicator that comes with ThinkOrSwim? I'm not very savvy with ThinkOrSwim script. Greatly appreciate any help.
 
Solution
Hi,

I need some help redoing the VolumeProfile Indictor that comes with ThinkorSwim. Here's my ask:

I want to present the VolumeProfile indicator on a chart such that the POC of control line extends all the way to the right axis. Here's a pic to demonstrate.
Image

The first image shows a chart that displays the daily Volume Profile with the blue line being the POC. In the second image, I manually drew a line that extends the POC line to the right with the price displayed at the end. Can someone help me replicate this with the existing VolumeProfile indicator that comes with ThinkOrSwim? I'm not very savvy with ThinkOrSwim script. Greatly appreciate any help.

Just saw your request.

This script combines x number of...
Is it possible to display the values of POC, VAH & VAL in the label. Right now, it showing as POC: V1, VAH: VH1, VAL: VL1

Sure,

Ruby:
#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;
#Added Price to Most Recent Naked Labels

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(y) - daysback
                  then volp  else
               pc[1];
    plot x    = if y > HighestAll(y) - 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(y) - daysback
                  then volh  else
               ph[1];
    plot x    = if y > HighestAll(y) - 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(y) - daysback
                  then voll  else
               pl[1];
    plot x    = if y > HighestAll(y) - 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: " + v1 else
if IsNaN(LowestAll(v(2).x)) then "V2: " + v2 else
if IsNaN(LowestAll(v(3).x)) then "V3: " + v3 else
if IsNaN(LowestAll(v(4).x)) then "V4: " + v4 else
if IsNaN(LowestAll(v(5).x)) then "V5: " + v5 else
if IsNaN(LowestAll(v(6).x)) then "V6: " + v6 else
if IsNaN(LowestAll(v(7).x)) then "V7: " + v7 else
if IsNaN(LowestAll(v(8).x)) then "V8: " + v8 else
if IsNaN(LowestAll(v(9).x)) then "V9: " + v9 else
if IsNaN(LowestAll(v(10).x)) then "V10: " + v10 else
"NO V", Color.YELLOW) ;

plot vh1 =  vh(1).hva;
vh1.AssignValueColor(if IsNaN(LowestAll(vh(1).x)) then GlobalColor("NB") else GlobalColor("H"));
vh1.SetPaintingStrategy(PaintingStrategy.DASHES);
vh1.SetLineWeight(2);

plot vh2 =  vh(2).hva;
vh2.AssignValueColor(if IsNaN(LowestAll(vh(2).x)) then GlobalColor("NB") else GlobalColor("H"));
vh2.SetPaintingStrategy(PaintingStrategy.DASHES);
vh2.SetLineWeight(2);

plot vh3 =  vh(3).hva;
v3.AssignValueColor(if IsNaN(LowestAll(vh(3).x)) then GlobalColor("NB") else GlobalColor("H"));
v3.SetPaintingStrategy(PaintingStrategy.DASHES);
v3.SetLineWeight(2);

plot vh4 =  vh(4).hva;
vh4.AssignValueColor(if IsNaN(LowestAll(vh(4).x)) then GlobalColor("NB") else GlobalColor("H"));
vh4.SetPaintingStrategy(PaintingStrategy.DASHES);
vh4.SetLineWeight(2);

plot vh5 =  vh(5).hva;
vh5.AssignValueColor(if IsNaN(LowestAll(vh(5).x)) then GlobalColor("NB") else GlobalColor("H"));
vh5.SetPaintingStrategy(PaintingStrategy.DASHES);
vh5.SetLineWeight(2);

plot vh6 =  vh(6).hva;
vh6.AssignValueColor(if IsNaN(LowestAll(vh(6).x)) then GlobalColor("NB") else GlobalColor("H"));
vh6.SetPaintingStrategy(PaintingStrategy.DASHES);
vh6.SetLineWeight(2);

plot vh7 =  vh(7).hva;
vh7.AssignValueColor(if IsNaN(LowestAll(vh(7).x)) then GlobalColor("NB") else GlobalColor("H"));
vh7.SetPaintingStrategy(PaintingStrategy.DASHES);
vh7.SetLineWeight(2);

plot vh8 =  vh(8).hva;
vh8.AssignValueColor(if IsNaN(LowestAll(vh(8).x)) then GlobalColor("NB") else GlobalColor("H"));
vh8.SetPaintingStrategy(PaintingStrategy.DASHES);
vh8.SetLineWeight(2);

plot vh9 =  vh(9).hva;
vh9.AssignValueColor(if IsNaN(LowestAll(vh(9).x)) then GlobalColor("NB") else GlobalColor("H"));
vh9.SetPaintingStrategy(PaintingStrategy.DASHES);
vh9.SetLineWeight(2);

plot vh10 =  vh(10).hva;
vh10.AssignValueColor(if IsNaN(LowestAll(vh(10).x)) then GlobalColor("NB") else GlobalColor("H"));
vh10.SetPaintingStrategy(PaintingStrategy.DASHES);
vh10.SetLineWeight(2);
;

AddLabel(1, " VAH: " +
if IsNaN(LowestAll(vh(1).x)) then "VH1: " + vh1 else
if IsNaN(LowestAll(vh(2).x)) then "VH2: " + vh2 else
if IsNaN(LowestAll(vh(3).x)) then "VH3: " + vh3 else
if IsNaN(LowestAll(vh(4).x)) then "VH4: " + vh4 else
if IsNaN(LowestAll(vh(5).x)) then "VH5: " + vh5 else
if IsNaN(LowestAll(vh(6).x)) then "VH6: " + vh6 else
if IsNaN(LowestAll(vh(7).x)) then "VH7: " + vh7 else
if IsNaN(LowestAll(vh(8).x)) then "VH8: " + vh8 else
if IsNaN(LowestAll(vh(9).x)) then "VH9: " + vh9 else
if IsNaN(LowestAll(vh(10).x)) then "VH10: " + vh10 else
"NO VH", Color.WHITE) ;


plot vl1 =  vl(1).val;
vl1.AssignValueColor(if IsNaN(LowestAll(vl(1).x)) then GlobalColor("NB") else GlobalColor("L"));
vl1.SetPaintingStrategy(PaintingStrategy.DASHES);
vl1.SetLineWeight(2);

plot vl2 =  vl(2).val;
vl2.AssignValueColor(if IsNaN(LowestAll(vl(2).x)) then GlobalColor("NB") else GlobalColor("L"));
vl2.SetPaintingStrategy(PaintingStrategy.DASHES);
vl2.SetLineWeight(2);

plot vl3 =  vl(3).val;
vl3.AssignValueColor(if IsNaN(LowestAll(vl(3).x)) then GlobalColor("NB") else GlobalColor("L"));
vl3.SetPaintingStrategy(PaintingStrategy.DASHES);
vl3.SetLineWeight(2);

plot vl4 =  vl(4);
vl4.AssignValueColor(if IsNaN(LowestAll(vl(4).x)) then GlobalColor("NB") else GlobalColor("L"));
vl4.SetPaintingStrategy(PaintingStrategy.DASHES);
vl4.SetLineWeight(2);

plot vl5 =  vl(5).val;
vl5.AssignValueColor(if IsNaN(LowestAll(vl(5).x)) then GlobalColor("NB") else GlobalColor("L"));
vl5.SetPaintingStrategy(PaintingStrategy.DASHES);
vl5.SetLineWeight(2);

plot vl6 =  vl(6).val;
vl6.AssignValueColor(if IsNaN(LowestAll(vl(6).x)) then GlobalColor("NB") else GlobalColor("L"));
vl6.SetPaintingStrategy(PaintingStrategy.DASHES);
vl6.SetLineWeight(2);

plot vl7 =  vl(7).val;
vl7.AssignValueColor(if IsNaN(LowestAll(vl(7).x)) then GlobalColor("NB") else GlobalColor("L"));
vl7.SetPaintingStrategy(PaintingStrategy.DASHES);
vl7.SetLineWeight(2);

plot vl8 =  vl(8).val;
vl8.AssignValueColor(if IsNaN(LowestAll(vl(8).x)) then GlobalColor("NB") else GlobalColor("L"));
vl8.SetPaintingStrategy(PaintingStrategy.DASHES);
vl8.SetLineWeight(2);

plot vl9 =  vl(9).val;
vl9.AssignValueColor(if IsNaN(LowestAll(vl(9).x)) then GlobalColor("NB") else GlobalColor("L"));
vl9.SetPaintingStrategy(PaintingStrategy.DASHES);
vl9.SetLineWeight(2);

plot vl10 =  vl(10).val;
vl10.AssignValueColor(if IsNaN(LowestAll(vl(10).x)) then GlobalColor("NB") else GlobalColor("L"));
vl10.SetPaintingStrategy(PaintingStrategy.DASHES);
vl10.SetLineWeight(2);
;

AddLabel(1, " VAL: " +
if IsNaN(LowestAll(vl(1).x)) then "VL1: " + vl1 else
if IsNaN(LowestAll(vl(2).x)) then "VL2: " + vl2 else
if IsNaN(LowestAll(vl(3).x)) then "VL3: " + vl3 else
if IsNaN(LowestAll(vl(4).x)) then "VL4: " + vl4 else
if IsNaN(LowestAll(vl(5).x)) then "VL5: " + vl5 else
if IsNaN(LowestAll(vl(6).x)) then "VL6: " + vl6 else
if IsNaN(LowestAll(vl(7).x)) then "VL7: " + vl7 else
if IsNaN(LowestAll(vl(8).x)) then "VL8: " + vl8 else
if IsNaN(LowestAll(vl(9).x)) then "VL9: " + vl9 else
if IsNaN(LowestAll(vl(10).x)) then "VL10: " + vl10 else
"NO VL", Color.YELLOW) ;


#TPOprofile script with Defaults to match extended POC plots x daysback
#
# TD Ameritrade IP Company, Inc. (c) 2010-2022
#

input pricePerRowHeightMode = {AUTOMATIC, default TICKSIZE, CUSTOM};
input customRowHeight = 1.0;
input timePerProfile = {CHART, MINUTE, HOUR, default DAY, WEEK, MONTH, "OPT EXP", BAR};
input multiplier = 1;
input onExpansion = no;
input profiles = 1000;
input showPointOfControl = yes;
input showValueArea = yes;
input valueAreaPercent = 70;
input opacity = 50;

def period;
def yyyymmdd = GetYYYYMMDD();
def seconds = SecondsFromTime(0);
def month = GetYear() * 12 + GetMonth();
def day_number = DaysFromDate(First(yyyymmdd)) + GetDayOfWeek(First(yyyymmdd));
def dom = GetDayOfMonth(yyyymmdd);
def dow = GetDayOfWeek(yyyymmdd - dom + 1);
def expthismonth = (if dow > 5 then 27 else 20) - dow;
def exp_opt = month + (dom > expthismonth);
switch (timePerProfile) {
case CHART:
    period = 0;
case MINUTE:
    period = Floor(seconds / 60 + day_number * 24 * 60);
case HOUR:
    period = Floor(seconds / 3600 + day_number * 24);
case DAY:
    period = CountTradingDays(Min(First(yyyymmdd), yyyymmdd), yyyymmdd) - 1;
case WEEK:
    period = Floor(day_number / 7);
case MONTH:
    period = Floor(month - First(month));
case "OPT EXP":
    period = exp_opt - First(exp_opt);
case BAR:
    period = BarNumber() - 1;
}

def count = CompoundValue(1, if period != period[1] then (count[1] + period - period[1]) % multiplier else count[1], 0);
def cond = count < count[1] + period - period[1];
def height;
switch (pricePerRowHeightMode) {
case AUTOMATIC:
    height = PricePerRow.AUTOMATIC;
case TICKSIZE:
    height = PricePerRow.TICKSIZE;
case CUSTOM:
    height = customRowHeight;
}

profile tpo = TimeProfile("startNewProfile" = cond, "onExpansion" = onExpansion, "numberOfProfiles" = profiles, "pricePerRow" = height, "value area percent" = valueAreaPercent);
def con = CompoundValue(1, onExpansion, no);
def pc = if IsNaN(tpo.GetPointOfControl()) and con then pc[1] else tpo.GetPointOfControl();
def hVA = if IsNaN(tpo.GetHighestValueArea()) and con then hVA[1] else tpo.GetHighestValueArea();
def lVA = if IsNaN(tpo.GetLowestValueArea()) and con then lVA[1] else tpo.GetLowestValueArea();

def hProfile = if IsNaN(tpo.GetHighest()) and con then hProfile[1] else tpo.GetHighest();
def lProfile = if IsNaN(tpo.GetLowest()) and con then lProfile[1] else tpo.GetLowest();
def plotsDomain = IsNaN(close) == onExpansion;

plot POC = if plotsDomain then pc else Double.NaN;
plot ProfileHigh = if plotsDomain then hProfile else Double.NaN;
plot ProfileLow = if plotsDomain then lProfile else Double.NaN;
plot VAHigh = if plotsDomain then hVA else Double.NaN;
plot VALow = if plotsDomain then lVA else Double.NaN;

DefineGlobalColor("Profile", GetColor(1));
DefineGlobalColor("Point Of Control", GetColor(5));
DefineGlobalColor("Value Area", GetColor(8));

tpo.Show(GlobalColor("Profile"), if showPointOfControl then GlobalColor("Point Of Control") else Color.CURRENT, if showValueArea then GlobalColor("Value Area") else Color.CURRENT, opacity);
POC.SetDefaultColor(GlobalColor("Point Of Control"));
POC.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
VAHigh.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
VALow.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
VAHigh.SetDefaultColor(GlobalColor("Value Area"));
VALow.SetDefaultColor(GlobalColor("Value Area"));
ProfileHigh.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
ProfileLow.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
ProfileHigh.SetDefaultColor(GetColor(3));
ProfileLow.SetDefaultColor(GetColor(3));
ProfileHigh.Hide();
ProfileLow.Hide();
 
  • Like
Reactions: MTH

Join useThinkScript to post your question to a community of 21,000+ developers and traders.


You are not using the correct version. Use the code in post #61. https://usethinkscript.com/threads/extend-point-of-control-line-volume-profile.10893/post-112138

Also, uncheck all of the circled boxes in chart settings and then let me know if you are still having issues

Screenshot-2022-11-14-080520.png
 
Hi,hope all is well with everyone . im new here and was wondering if someone can help me please

I need some help with the VolumeProfile Indictor that comes with ThinkorSwim. can some one make it look like this?

I want the VolumeProfile indicator to look like this with the lines extended to the right and the info vahigh , low, poc just like the pic below and the $ i dont know how to code and i tried and failed miserably lol.


this is 30m with the week time for profile . i tried to post earlier but it didnt let me hopefully it will this time
image.png

thank u
 
Hi,hope all is well with everyone . im new here and was wondering if someone can help me please

I need some help with the VolumeProfile Indictor that comes with ThinkorSwim. can some one make it look like this?

I want the VolumeProfile indicator to look like this with the lines extended to the right and the info vahigh , low, poc just like the pic below and the $ i dont know how to code and i tried and failed miserably lol.


this is 30m with the week time for profile . i tried to post earlier but it didnt let me hopefully it will this time
image.png

thank u

This is a mod of the limited plot script in this thread to extend up to 10 sets of poc/vah/val lines to the right edge.

There is an input limit_display = 4; that will limit the sets displayed.

You can create more sets using the logic that was used to create the 10 sets.

Screenshot-2022-11-14-140020.png

Ruby:
#Extended_POCs_HVAs_LVAs_for_x_Daysback_
#More can be added using the logic below
#Sleepyz - usethinkscript request @yardlay
#Added HVA * LVA Lines and Plot limit when crossed for all 3;

input limit_display = 4;
script v {
    input daysback = 1;
    def volp = reference VolumeProfile("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(y) - daysback
                  then volp  else
               pc[1];
    plot poc = pc;
}
script vh {
    input daysback = 1;
    def volh = reference VolumeProfile("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(y) - daysback
                  then volh  else
               ph[1];

    plot hva = ph;
}
script vl {
    input daysback = 1;
    def voll = reference VolumeProfile("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(y) - daysback
                  then voll  else
               pl[1];

    plot val = pl;
}

DefineGlobalColor("H", Color.YELLOW);
DefineGlobalColor("L", Color.YELLOW);

plot v1 =  if limit_display < 1 then Double.NaN else v(1).poc;
v1.SetDefaultColor(Color.RED);
v1.SetPaintingStrategy(PaintingStrategy.DASHES);
v1.SetLineWeight(2);

plot v2 =  if limit_display < 2 then Double.NaN else v(2).poc;
v2.SetDefaultColor(Color.RED);
v2.SetPaintingStrategy(PaintingStrategy.DASHES);
v2.SetLineWeight(2);

plot v3 =  if limit_display < 3 then Double.NaN else v(3).poc;
v3.SetDefaultColor(Color.RED);
v3.SetPaintingStrategy(PaintingStrategy.DASHES);
v3.SetLineWeight(2);

plot v4 =  if limit_display < 4 then Double.NaN else v(4).poc;
v4.SetDefaultColor(Color.RED);
v4.SetPaintingStrategy(PaintingStrategy.DASHES);
v4.SetLineWeight(2);

plot v5 =  if limit_display < 5 then Double.NaN else v(5).poc;
v5.SetDefaultColor(Color.RED);
v5.SetPaintingStrategy(PaintingStrategy.DASHES);
v5.SetLineWeight(2);

plot v6 =  if limit_display < 6 then Double.NaN else v(6).poc;
v6.SetDefaultColor(Color.RED);
v6.SetPaintingStrategy(PaintingStrategy.DASHES);
v6.SetLineWeight(2);

plot v7 =  if limit_display < 7 then Double.NaN else v(7).poc;
v7.SetDefaultColor(Color.RED);
v7.SetPaintingStrategy(PaintingStrategy.DASHES);
v7.SetLineWeight(2);

plot v8 =  if limit_display < 8 then Double.NaN else v(8).poc;
v8.SetDefaultColor(Color.RED);
v8.SetPaintingStrategy(PaintingStrategy.DASHES);
v8.SetLineWeight(2);

plot v9 =  if limit_display < 9 then Double.NaN else v(9).poc;
v9.SetDefaultColor(Color.RED);
v9.SetPaintingStrategy(PaintingStrategy.DASHES);
v9.SetLineWeight(2);

plot v10 =  if limit_display < 10 then Double.NaN else v(10).poc;
v10.SetDefaultColor(Color.RED);
v10.SetPaintingStrategy(PaintingStrategy.DASHES);
v10.SetLineWeight(2);
;


plot vh1 =  if limit_display < 1 then Double.NaN else vh(1);
vh1.SetDefaultColor(GlobalColor("H"));
vh1.SetPaintingStrategy(PaintingStrategy.DASHES);
vh1.SetLineWeight(2);

plot vh2 =  if limit_display < 2 then Double.NaN else vh(2);
vh2.SetDefaultColor(GlobalColor("H"));
vh2.SetPaintingStrategy(PaintingStrategy.DASHES);
vh2.SetLineWeight(2);

plot vh3 =  if limit_display < 3 then Double.NaN else vh(3);
v3.SetDefaultColor(GlobalColor("H"));
v3.SetPaintingStrategy(PaintingStrategy.DASHES);
v3.SetLineWeight(2);

plot vh4 =  if limit_display < 4 then Double.NaN else vh(4);
vh4.SetDefaultColor(GlobalColor("H"));
vh4.SetPaintingStrategy(PaintingStrategy.DASHES);
vh4.SetLineWeight(2);

plot vh5 =  if limit_display < 5 then Double.NaN else vh(5);
vh5.SetDefaultColor(GlobalColor("H"));
vh5.SetPaintingStrategy(PaintingStrategy.DASHES);
vh5.SetLineWeight(2);

plot vh6 =  if limit_display < 6 then Double.NaN else vh(6);
vh6.SetDefaultColor(GlobalColor("H"));
vh6.SetPaintingStrategy(PaintingStrategy.DASHES);
vh6.SetLineWeight(2);

plot vh7 =  if limit_display < 7 then Double.NaN else vh(7);
vh7.SetDefaultColor(GlobalColor("H"));
vh7.SetPaintingStrategy(PaintingStrategy.DASHES);
vh7.SetLineWeight(2);

plot vh8 =  if limit_display < 8 then Double.NaN else vh(8);
vh8.SetDefaultColor(GlobalColor("H"));
vh8.SetPaintingStrategy(PaintingStrategy.DASHES);
vh8.SetLineWeight(2);

plot vh9 =  if limit_display < 9 then Double.NaN else vh(9);
vh9.SetDefaultColor(GlobalColor("H"));
vh9.SetPaintingStrategy(PaintingStrategy.DASHES);
vh9.SetLineWeight(2);

plot vh10 =  if limit_display < 10 then Double.NaN else vh(10);
vh10.SetDefaultColor(GlobalColor("H"));
vh10.SetPaintingStrategy(PaintingStrategy.DASHES);
vh10.SetLineWeight(2);
;

plot vl1 =  if limit_display < 1 then Double.NaN else vl(1);
vl1.SetDefaultColor(GlobalColor("L"));
vl1.SetPaintingStrategy(PaintingStrategy.DASHES);
vl1.SetLineWeight(2);

plot vl2 =  if limit_display < 2 then Double.NaN else vl(2);
vl2.SetDefaultColor(GlobalColor("L"));
vl2.SetPaintingStrategy(PaintingStrategy.DASHES);
vl2.SetLineWeight(2);

plot vl3 =  if limit_display < 3 then Double.NaN else vl(3);
vl3.SetDefaultColor(GlobalColor("L"));
vl3.SetPaintingStrategy(PaintingStrategy.DASHES);
vl3.SetLineWeight(2);

plot vl4 =  if limit_display < 4 then Double.NaN else vl(4);
vl4.SetDefaultColor(GlobalColor("L"));
vl4.SetPaintingStrategy(PaintingStrategy.DASHES);
vl4.SetLineWeight(2);

plot vl5 =  if limit_display < 5 then Double.NaN else vl(5);
vl5.SetDefaultColor(GlobalColor("L"));
vl5.SetPaintingStrategy(PaintingStrategy.DASHES);
vl5.SetLineWeight(2);

plot vl6 =  if limit_display < 6 then Double.NaN else vl(6);
vl6.SetDefaultColor(GlobalColor("L"));
vl6.SetPaintingStrategy(PaintingStrategy.DASHES);
vl6.SetLineWeight(2);

plot vl7 =  if limit_display < 7 then Double.NaN else vl(7);
vl7.SetDefaultColor(GlobalColor("L"));
vl7.SetPaintingStrategy(PaintingStrategy.DASHES);
vl7.SetLineWeight(2);

plot vl8 =  if limit_display < 8 then Double.NaN else vl(8);
vl8.SetDefaultColor(GlobalColor("L"));
vl8.SetPaintingStrategy(PaintingStrategy.DASHES);
vl8.SetLineWeight(2);

plot vl9 =  if limit_display < 9 then Double.NaN else vl(9);
vl9.SetDefaultColor(GlobalColor("L"));
vl9.SetPaintingStrategy(PaintingStrategy.DASHES);
vl9.SetLineWeight(2);

plot vl10 =  if limit_display < 10 then Double.NaN else vl(10);
vl10.SetDefaultColor(GlobalColor("L"));
vl10.SetPaintingStrategy(PaintingStrategy.DASHES);
vl10.SetLineWeight(2);
;
 
Last edited:
Hi,hope all is well with everyone . im new here and was wondering if someone can help me please

I need some help with the VolumeProfile Indictor that comes with ThinkorSwim. can some one make it look like this?

I want the VolumeProfile indicator to look like this with the lines extended to the right and the info vahigh , low, poc just like the pic below and the $ i dont know how to code and i tried and failed miserably lol.


this is 30m with the week time for profile . i tried to post earlier but it didnt let me hopefully it will this time
image.png

thank u
May I know how you got this chart?
 
This is a mod of the limited plot script in this thread to extend up to 10 sets of poc/vah/val lines to the right edge.

There is an input limit_display = 4; that will limit the sets displayed.

You can create more sets using the logic that was used to create the 10 sets.
@SleepyZ may I know why this doesn't plot any levels higher than the current day price i.e 4017.5, it always plots only lower levels.


Workspace link: http://tos.mx/VvakvDi
 
@SleepyZ may I know why this doesn't plot any levels higher than the current day price i.e 4017.5, it always plots only lower levels.


Workspace link: http://tos.mx/VvakvDi

The indicator only plots lines based upon the volumbprofilee indicator's poc/vah/val levels. There are none higher than the last day's for those. Here is a chart with the volumeprofile indicator added to show the basis for the plots.

The profilehigh/profilelow were not requested. The TOS volumeprofile indicator in fact hides them.

 
You are not using the correct version. Use the code in post #61. https://usethinkscript.com/threads/extend-point-of-control-line-volume-profile.10893/post-112138

Also, uncheck all of the circled boxes in chart settings and then let me know if you are still having issues
I copied the script in post#1 and unchecked all of the circled boxes, lines are shown now but still labels don't display the price.

May I know what does NB stands for?
Magenta colored lines are untested POC's/VAH's & VAL's right?
Why it doesn't display higher price profiles than the current price?


http://tos.mx/GEWGxZm
 
This is a mod of the limited plot script in this thread to extend up to 10 sets of poc/vah/val lines to the right edge.

There is an input limit_display = 4; that will limit the sets displayed.

You can create more sets using the logic that was used to create the 10 sets.
thank you
 
I copied the script in post#1 and unchecked all of the circled boxes, lines are shown now but still labels don't display the price.

May I know what does NB stands for?
Magenta colored lines are untested POC's/VAH's & VAL's right?
Why it doesn't display higher price profiles than the current price?


http://tos.mx/GEWGxZm

Most of your problems are in chart settings.

Your unchecking the circled boxes on the price axis settings helped.

However, your time axis chart settings need adjusted.
You have set a time interval of 90 days and an expansion area of 92 bars. Although the time interval set to 90 days still seems to work, I would reduce that as the code only does 10 days of volumeprofiles.
The expansion area reset to 10 bars brought all of the expected data including the prices in the labels. The 92 bar expansion area was too large causing a TOS resource issue. This causes problems with the code processing properly.

The NB is a code to color the plots magenta where there is no break in their plot, in other words, the naked plots

The code only displays the last 10 naked plot profiles. The actual volumeprofile code was included to show that those 10 naked profiles are sourced from the actual profiles. The naked profiles are only lines and would not be able to be tested without the acutal volumeprofiles. If you want to see more naked profiles than 10, you could create more using the logic used to create the 10. However, I do not intend to do that. It is for you to do. The more you create, the more resource intensive it becomes, slowing down TOS and possibly not plotting correctly.

Note: The original naked plot code was 90 naked profiles. It was too resource intensive and had a looping process that might not complete if the chart was too large/complex for TOS to handle.
 
This code almost has exactly what I am looking for. Good Stuff!
I went through the thread and didnt see the variation I was looking for so please excuse me if it is in there already.

I use the standard Volume profile for ToS.
I use 3 different Vol Profiles on each chart. All 3 show POC, VAL, and VAH. I turn everything else off.
I use 1 for the daily, 1 for the weekly and 2 for the monthly.

What I am looking for is to extend the lines all the way to the right axis ( I see this has been resolved already) and to add a label but not a number label. I would like to label it Daily VAL, or Monthly POC, etc. Also I dont want them to disappear once they have been touched.
 
This code almost has exactly what I am looking for. Good Stuff!
I went through the thread and didnt see the variation I was looking for so please excuse me if it is in there already.

I use the standard Volume profile for ToS.
I use 3 different Vol Profiles on each chart. All 3 show POC, VAL, and VAH. I turn everything else off.
I use 1 for the daily, 1 for the weekly and 2 for the monthly.

What I am looking for is to extend the lines all the way to the right axis ( I see this has been resolved already) and to add a label but not a number label. I would like to label it Daily VAL, or Monthly POC, etc. Also I dont want them to disappear once they have been touched.

To do what you requested. Add multiple versions of the following script and change the inputs to your criteria.
Input daysback set to zero is the current period's timeframe selected.
Input showtodayonly will display for the current day, only the extended lines for each timeframe selected
Input timeframe now has "DAY", "WEEK", "MONTH" options. You need the chart to have it's timeframe include the necessary days for each option
The bubbles have a "D"/"W"/"M" + "POC"/"VAH"/"VAL" + daysback input
You can move the bubbles sideways at the bubblemover input.

The image shows the 3 timeframes (3 studies)with showtodayonly off and for the "0"/current timeframes selected.

Screenshot-2022-11-21-072039.png
Ruby:
#Volumeprofile_POC_VAH_VAL_Extended_Plots_to_RightAxis

input daysback        = 0;
input showontodayonly = yes;
input timeframe = {default "DAY", "WEEK", "MONTH"};
def ymd      = if timeframe==timeframe."MONTH"
               then getmonth()
               else if timeframe==timeframe."WEEK"
               then getweek()
               else 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) ;

def poc      = if isnan(close)
               then poc[1]
               else if thisDay == daysback then reference VolumeProfile("price per row height mode" = "TICKSIZE", "time per profile" = timeframe, "on expansion" = no)
               else poc[1];
def vahigh   = if isnan(close)
               then vahigh[1]
               else if thisDay == daysback then reference VolumeProfile("price per row height mode" = "TICKSIZE", "time per profile" = timeframe, "on expansion" = no).VAHigh
               else vahigh[1];
def valow    = if isnan(close)
               then valow[1]
               else if thisDay == daysback then reference VolumeProfile("price per row height mode" = "TICKSIZE", "time per profile" = timeframe, "on expansion" = no).VALow
                else valow[1];

plot poc1    = if thisDay > daysback or
                  showontodayonly and getday()!=getlastday()
               then Double.NaN
               else poc;
plot vahigh1 = if thisDay > daysback or
                  showontodayonly and getday()!=getlastday()
               then Double.NaN
               else vahigh;
plot valow1  = if thisDay > daysback or
                  showontodayonly and getday()!=getlastday()
               then Double.NaN
               else valow;

poc1.setdefaultColor(color.cyan);
vahigh1.setdefaultColor(color.yellow);
valow1.setdefaultColor(color.yellow);

input bubblemover = 3;
def b  = bubblemover;
def b1 = b + 1;
input showbubbles = yes;
addchartBubble(showbubbles and isnan(close[b]) and !isnan(close[b1]), poc1[b1],
(if timeframe==timeframe."MONTH"
then "M"
else if timeframe==timeframe."WEEK"
then "W"
else "D") + "POC - " + daysback, color.cyan);
addchartBubble(showbubbles and isnan(close[b]) and !isnan(close[b1]), vahigh1[b1],
(if timeframe==timeframe."MONTH"
then "M"
else if timeframe==timeframe."WEEK"
then "W"
else "D") + "VAH - " + daysback, color.yellow);
addchartBubble(showbubbles and isnan(close[b]) and !isnan(close[b1]), valow1[b1],
(if timeframe==timeframe."MONTH"
then "M"
else if timeframe==timeframe."WEEK"
then "W"
else "D") + "VAL - " + daysback, color.yellow);
 
Most of your problems are in chart settings.

Your unchecking the circled boxes on the price axis settings helped.

However, your time axis chart settings need adjusted.
You have set a time interval of 90 days and an expansion area of 92 bars. Although the time interval set to 90 days still seems to work, I would reduce that as the code only does 10 days of volumeprofiles.
The expansion area reset to 10 bars brought all of the expected data including the prices in the labels. The 92 bar expansion area was too large causing a TOS resource issue. This causes problems with the code processing properly.

The NB is a code to color the plots magenta where there is no break in their plot, in other words, the naked plots

The code only displays the last 10 naked plot profiles. The actual volumeprofile code was included to show that those 10 naked profiles are sourced from the actual profiles. The naked profiles are only lines and would not be able to be tested without the acutal volumeprofiles. If you want to see more naked profiles than 10, you could create more using the logic used to create the 10. However, I do not intend to do that. It is for you to do. The more you create, the more resource intensive it becomes, slowing down TOS and possibly not plotting correctly.

Note: The original naked plot code was 90 naked profiles. It was too resource intensive and had a looping process that might not complete if the chart was too large/complex for TOS to handle.
@SleepyZ I'm trying to add a bubble to the most recent naked POC/VAL/VAH as shown in the below image

I attempted adding the bubble to the below code but getting syntax error, can you help?

Code:
#VolumeProfile_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;
#Added Price to Most Recent Naked Labels

script v {
    input daysback = 1;
    def volp = reference VolumeProfile("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(y) - daysback
                  then volp  else
               pc[1];
    plot x    = if y > HighestAll(y) - 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 VolumeProfile("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(y) - daysback
                  then volh  else
               ph[1];
    plot x    = if y > HighestAll(y) - 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 VolumeProfile("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(y) - daysback
                  then voll  else
               pl[1];
    plot x    = if y > HighestAll(y) - 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.WHITE);
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(1);

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(1);

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(1);

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(1);

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(1);

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(1);

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(1);

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(1);

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(1);

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(1);
;

AddLabel(1, "Most Recent Naked --> POC: " +
if IsNaN(LowestAll(v(1).x)) then "V1: " + v1 else
if IsNaN(LowestAll(v(2).x)) then "V2: " + v2 else
if IsNaN(LowestAll(v(3).x)) then "V3: " + v3 else
if IsNaN(LowestAll(v(4).x)) then "V4: " + v4 else
if IsNaN(LowestAll(v(5).x)) then "V5: " + v5 else
if IsNaN(LowestAll(v(6).x)) then "V6: " + v6 else
if IsNaN(LowestAll(v(7).x)) then "V7: " + v7 else
if IsNaN(LowestAll(v(8).x)) then "V8: " + v8 else
if IsNaN(LowestAll(v(9).x)) then "V9: " + v9 else
if IsNaN(LowestAll(v(10).x)) then "V10: " + v10 else
"NO V", Color.YELLOW) ;

plot vh1 =  vh(1).hva;
vh1.AssignValueColor(if IsNaN(LowestAll(vh(1).x)) then GlobalColor("NB") else GlobalColor("H"));
vh1.SetPaintingStrategy(PaintingStrategy.DASHES);
vh1.SetLineWeight(1);

plot vh2 =  vh(2).hva;
vh2.AssignValueColor(if IsNaN(LowestAll(vh(2).x)) then GlobalColor("NB") else GlobalColor("H"));
vh2.SetPaintingStrategy(PaintingStrategy.DASHES);
vh2.SetLineWeight(1);

plot vh3 =  vh(3).hva;
v3.AssignValueColor(if IsNaN(LowestAll(vh(3).x)) then GlobalColor("NB") else GlobalColor("H"));
v3.SetPaintingStrategy(PaintingStrategy.DASHES);
v3.SetLineWeight(1);

plot vh4 =  vh(4).hva;
vh4.AssignValueColor(if IsNaN(LowestAll(vh(4).x)) then GlobalColor("NB") else GlobalColor("H"));
vh4.SetPaintingStrategy(PaintingStrategy.DASHES);
vh4.SetLineWeight(1);

plot vh5 =  vh(5).hva;
vh5.AssignValueColor(if IsNaN(LowestAll(vh(5).x)) then GlobalColor("NB") else GlobalColor("H"));
vh5.SetPaintingStrategy(PaintingStrategy.DASHES);
vh5.SetLineWeight(1);

plot vh6 =  vh(6).hva;
vh6.AssignValueColor(if IsNaN(LowestAll(vh(6).x)) then GlobalColor("NB") else GlobalColor("H"));
vh6.SetPaintingStrategy(PaintingStrategy.DASHES);
vh6.SetLineWeight(1);

plot vh7 =  vh(7).hva;
vh7.AssignValueColor(if IsNaN(LowestAll(vh(7).x)) then GlobalColor("NB") else GlobalColor("H"));
vh7.SetPaintingStrategy(PaintingStrategy.DASHES);
vh7.SetLineWeight(1);

plot vh8 =  vh(8).hva;
vh8.AssignValueColor(if IsNaN(LowestAll(vh(8).x)) then GlobalColor("NB") else GlobalColor("H"));
vh8.SetPaintingStrategy(PaintingStrategy.DASHES);
vh8.SetLineWeight(1);

plot vh9 =  vh(9).hva;
vh9.AssignValueColor(if IsNaN(LowestAll(vh(9).x)) then GlobalColor("NB") else GlobalColor("H"));
vh9.SetPaintingStrategy(PaintingStrategy.DASHES);
vh9.SetLineWeight(1);

plot vh10 =  vh(10).hva;
vh10.AssignValueColor(if IsNaN(LowestAll(vh(10).x)) then GlobalColor("NB") else GlobalColor("H"));
vh10.SetPaintingStrategy(PaintingStrategy.DASHES);
vh10.SetLineWeight(1);
;

AddLabel(1, " VAH: " +
if IsNaN(LowestAll(vh(1).x)) then "VH1: " + vh1 else
if IsNaN(LowestAll(vh(2).x)) then "VH2: " + vh2 else
if IsNaN(LowestAll(vh(3).x)) then "VH3: " + vh3 else
if IsNaN(LowestAll(vh(4).x)) then "VH4: " + vh4 else
if IsNaN(LowestAll(vh(5).x)) then "VH5: " + vh5 else
if IsNaN(LowestAll(vh(6).x)) then "VH6: " + vh6 else
if IsNaN(LowestAll(vh(7).x)) then "VH7: " + vh7 else
if IsNaN(LowestAll(vh(8).x)) then "VH8: " + vh8 else
if IsNaN(LowestAll(vh(9).x)) then "VH9: " + vh9 else
if IsNaN(LowestAll(vh(10).x)) then "VH10: " + vh10 else
"NO VH", Color.WHITE) ;


plot vl1 =  vl(1).val;
vl1.AssignValueColor(if IsNaN(LowestAll(vl(1).x)) then GlobalColor("NB") else GlobalColor("L"));
vl1.SetPaintingStrategy(PaintingStrategy.DASHES);
vl1.SetLineWeight(1);

plot vl2 =  vl(2).val;
vl2.AssignValueColor(if IsNaN(LowestAll(vl(2).x)) then GlobalColor("NB") else GlobalColor("L"));
vl2.SetPaintingStrategy(PaintingStrategy.DASHES);
vl2.SetLineWeight(1);

plot vl3 =  vl(3).val;
vl3.AssignValueColor(if IsNaN(LowestAll(vl(3).x)) then GlobalColor("NB") else GlobalColor("L"));
vl3.SetPaintingStrategy(PaintingStrategy.DASHES);
vl3.SetLineWeight(1);

plot vl4 =  vl(4);
vl4.AssignValueColor(if IsNaN(LowestAll(vl(4).x)) then GlobalColor("NB") else GlobalColor("L"));
vl4.SetPaintingStrategy(PaintingStrategy.DASHES);
vl4.SetLineWeight(1);

plot vl5 =  vl(5).val;
vl5.AssignValueColor(if IsNaN(LowestAll(vl(5).x)) then GlobalColor("NB") else GlobalColor("L"));
vl5.SetPaintingStrategy(PaintingStrategy.DASHES);
vl5.SetLineWeight(1);

plot vl6 =  vl(6).val;
vl6.AssignValueColor(if IsNaN(LowestAll(vl(6).x)) then GlobalColor("NB") else GlobalColor("L"));
vl6.SetPaintingStrategy(PaintingStrategy.DASHES);
vl6.SetLineWeight(1);

plot vl7 =  vl(7).val;
vl7.AssignValueColor(if IsNaN(LowestAll(vl(7).x)) then GlobalColor("NB") else GlobalColor("L"));
vl7.SetPaintingStrategy(PaintingStrategy.DASHES);
vl7.SetLineWeight(1);

plot vl8 =  vl(8).val;
vl8.AssignValueColor(if IsNaN(LowestAll(vl(8).x)) then GlobalColor("NB") else GlobalColor("L"));
vl8.SetPaintingStrategy(PaintingStrategy.DASHES);
vl8.SetLineWeight(1);

plot vl9 =  vl(9).val;
vl9.AssignValueColor(if IsNaN(LowestAll(vl(9).x)) then GlobalColor("NB") else GlobalColor("L"));
vl9.SetPaintingStrategy(PaintingStrategy.DASHES);
vl9.SetLineWeight(1);

plot vl10 =  vl(10).val;
vl10.AssignValueColor(if IsNaN(LowestAll(vl(10).x)) then GlobalColor("NB") else GlobalColor("L"));
vl10.SetPaintingStrategy(PaintingStrategy.DASHES);
vl10.SetLineWeight(1);
;

AddLabel(1, " VAL: " +
if IsNaN(LowestAll(vl(1).x)) then "VL1: " + vl1 else
if IsNaN(LowestAll(vl(2).x)) then "VL2: " + vl2 else
if IsNaN(LowestAll(vl(3).x)) then "VL3: " + vl3 else
if IsNaN(LowestAll(vl(4).x)) then "VL4: " + vl4 else
if IsNaN(LowestAll(vl(5).x)) then "VL5: " + vl5 else
if IsNaN(LowestAll(vl(6).x)) then "VL6: " + vl6 else
if IsNaN(LowestAll(vl(7).x)) then "VL7: " + vl7 else
if IsNaN(LowestAll(vl(8).x)) then "VL8: " + vl8 else
if IsNaN(LowestAll(vl(9).x)) then "VL9: " + vl9 else
if IsNaN(LowestAll(vl(10).x)) then "VL10: " + vl10 else
"NO VL", Color.YELLOW) ;

def rval =
if IsNaN(LowestAll(vl(1).x)) then "VL1: " + vl1 else
if IsNaN(LowestAll(vl(2).x)) then "VL2: " + vl2 else
if IsNaN(LowestAll(vl(3).x)) then "VL3: " + vl3 else
if IsNaN(LowestAll(vl(4).x)) then "VL4: " + vl4 else
if IsNaN(LowestAll(vl(5).x)) then "VL5: " + vl5 else
if IsNaN(LowestAll(vl(6).x)) then "VL6: " + vl6 else
if IsNaN(LowestAll(vl(7).x)) then "VL7: " + vl7 else
if IsNaN(LowestAll(vl(8).x)) then "VL8: " + vl8 else
if IsNaN(LowestAll(vl(9).x)) then "VL9: " + vl9 else
if IsNaN(LowestAll(vl(10).x)) then "VL10: " + vl10 else "NO VL";

input bubblemover = 3;
def b  = bubblemover;
def b1 = b + 1;
def bm = bubblemover;
def bm1 = bm + 1;

AddChartBubble(showbubbles and IsNaN(close[b]) and !IsNaN(close[b1]), p0[b1], "VAL $" + rval , GlobalColor("L"));


Workspace link:http://tos.mx/cJjw92r
 
@SleepyZ I'm trying to add a bubble to the most recent naked POC/VAL/VAH as shown in the below image

I attempted adding the bubble to the below code but getting syntax error, can you help?

Code:
#VolumeProfile_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;
#Added Price to Most Recent Naked Labels

script v {
    input daysback = 1;
    def volp = reference VolumeProfile("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(y) - daysback
                  then volp  else
               pc[1];
    plot x    = if y > HighestAll(y) - 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 VolumeProfile("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(y) - daysback
                  then volh  else
               ph[1];
    plot x    = if y > HighestAll(y) - 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 VolumeProfile("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(y) - daysback
                  then voll  else
               pl[1];
    plot x    = if y > HighestAll(y) - 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.WHITE);
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(1);

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(1);

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(1);

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(1);

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(1);

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(1);

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(1);

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(1);

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(1);

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(1);
;

AddLabel(1, "Most Recent Naked --> POC: " +
if IsNaN(LowestAll(v(1).x)) then "V1: " + v1 else
if IsNaN(LowestAll(v(2).x)) then "V2: " + v2 else
if IsNaN(LowestAll(v(3).x)) then "V3: " + v3 else
if IsNaN(LowestAll(v(4).x)) then "V4: " + v4 else
if IsNaN(LowestAll(v(5).x)) then "V5: " + v5 else
if IsNaN(LowestAll(v(6).x)) then "V6: " + v6 else
if IsNaN(LowestAll(v(7).x)) then "V7: " + v7 else
if IsNaN(LowestAll(v(8).x)) then "V8: " + v8 else
if IsNaN(LowestAll(v(9).x)) then "V9: " + v9 else
if IsNaN(LowestAll(v(10).x)) then "V10: " + v10 else
"NO V", Color.YELLOW) ;

plot vh1 =  vh(1).hva;
vh1.AssignValueColor(if IsNaN(LowestAll(vh(1).x)) then GlobalColor("NB") else GlobalColor("H"));
vh1.SetPaintingStrategy(PaintingStrategy.DASHES);
vh1.SetLineWeight(1);

plot vh2 =  vh(2).hva;
vh2.AssignValueColor(if IsNaN(LowestAll(vh(2).x)) then GlobalColor("NB") else GlobalColor("H"));
vh2.SetPaintingStrategy(PaintingStrategy.DASHES);
vh2.SetLineWeight(1);

plot vh3 =  vh(3).hva;
v3.AssignValueColor(if IsNaN(LowestAll(vh(3).x)) then GlobalColor("NB") else GlobalColor("H"));
v3.SetPaintingStrategy(PaintingStrategy.DASHES);
v3.SetLineWeight(1);

plot vh4 =  vh(4).hva;
vh4.AssignValueColor(if IsNaN(LowestAll(vh(4).x)) then GlobalColor("NB") else GlobalColor("H"));
vh4.SetPaintingStrategy(PaintingStrategy.DASHES);
vh4.SetLineWeight(1);

plot vh5 =  vh(5).hva;
vh5.AssignValueColor(if IsNaN(LowestAll(vh(5).x)) then GlobalColor("NB") else GlobalColor("H"));
vh5.SetPaintingStrategy(PaintingStrategy.DASHES);
vh5.SetLineWeight(1);

plot vh6 =  vh(6).hva;
vh6.AssignValueColor(if IsNaN(LowestAll(vh(6).x)) then GlobalColor("NB") else GlobalColor("H"));
vh6.SetPaintingStrategy(PaintingStrategy.DASHES);
vh6.SetLineWeight(1);

plot vh7 =  vh(7).hva;
vh7.AssignValueColor(if IsNaN(LowestAll(vh(7).x)) then GlobalColor("NB") else GlobalColor("H"));
vh7.SetPaintingStrategy(PaintingStrategy.DASHES);
vh7.SetLineWeight(1);

plot vh8 =  vh(8).hva;
vh8.AssignValueColor(if IsNaN(LowestAll(vh(8).x)) then GlobalColor("NB") else GlobalColor("H"));
vh8.SetPaintingStrategy(PaintingStrategy.DASHES);
vh8.SetLineWeight(1);

plot vh9 =  vh(9).hva;
vh9.AssignValueColor(if IsNaN(LowestAll(vh(9).x)) then GlobalColor("NB") else GlobalColor("H"));
vh9.SetPaintingStrategy(PaintingStrategy.DASHES);
vh9.SetLineWeight(1);

plot vh10 =  vh(10).hva;
vh10.AssignValueColor(if IsNaN(LowestAll(vh(10).x)) then GlobalColor("NB") else GlobalColor("H"));
vh10.SetPaintingStrategy(PaintingStrategy.DASHES);
vh10.SetLineWeight(1);
;

AddLabel(1, " VAH: " +
if IsNaN(LowestAll(vh(1).x)) then "VH1: " + vh1 else
if IsNaN(LowestAll(vh(2).x)) then "VH2: " + vh2 else
if IsNaN(LowestAll(vh(3).x)) then "VH3: " + vh3 else
if IsNaN(LowestAll(vh(4).x)) then "VH4: " + vh4 else
if IsNaN(LowestAll(vh(5).x)) then "VH5: " + vh5 else
if IsNaN(LowestAll(vh(6).x)) then "VH6: " + vh6 else
if IsNaN(LowestAll(vh(7).x)) then "VH7: " + vh7 else
if IsNaN(LowestAll(vh(8).x)) then "VH8: " + vh8 else
if IsNaN(LowestAll(vh(9).x)) then "VH9: " + vh9 else
if IsNaN(LowestAll(vh(10).x)) then "VH10: " + vh10 else
"NO VH", Color.WHITE) ;


plot vl1 =  vl(1).val;
vl1.AssignValueColor(if IsNaN(LowestAll(vl(1).x)) then GlobalColor("NB") else GlobalColor("L"));
vl1.SetPaintingStrategy(PaintingStrategy.DASHES);
vl1.SetLineWeight(1);

plot vl2 =  vl(2).val;
vl2.AssignValueColor(if IsNaN(LowestAll(vl(2).x)) then GlobalColor("NB") else GlobalColor("L"));
vl2.SetPaintingStrategy(PaintingStrategy.DASHES);
vl2.SetLineWeight(1);

plot vl3 =  vl(3).val;
vl3.AssignValueColor(if IsNaN(LowestAll(vl(3).x)) then GlobalColor("NB") else GlobalColor("L"));
vl3.SetPaintingStrategy(PaintingStrategy.DASHES);
vl3.SetLineWeight(1);

plot vl4 =  vl(4);
vl4.AssignValueColor(if IsNaN(LowestAll(vl(4).x)) then GlobalColor("NB") else GlobalColor("L"));
vl4.SetPaintingStrategy(PaintingStrategy.DASHES);
vl4.SetLineWeight(1);

plot vl5 =  vl(5).val;
vl5.AssignValueColor(if IsNaN(LowestAll(vl(5).x)) then GlobalColor("NB") else GlobalColor("L"));
vl5.SetPaintingStrategy(PaintingStrategy.DASHES);
vl5.SetLineWeight(1);

plot vl6 =  vl(6).val;
vl6.AssignValueColor(if IsNaN(LowestAll(vl(6).x)) then GlobalColor("NB") else GlobalColor("L"));
vl6.SetPaintingStrategy(PaintingStrategy.DASHES);
vl6.SetLineWeight(1);

plot vl7 =  vl(7).val;
vl7.AssignValueColor(if IsNaN(LowestAll(vl(7).x)) then GlobalColor("NB") else GlobalColor("L"));
vl7.SetPaintingStrategy(PaintingStrategy.DASHES);
vl7.SetLineWeight(1);

plot vl8 =  vl(8).val;
vl8.AssignValueColor(if IsNaN(LowestAll(vl(8).x)) then GlobalColor("NB") else GlobalColor("L"));
vl8.SetPaintingStrategy(PaintingStrategy.DASHES);
vl8.SetLineWeight(1);

plot vl9 =  vl(9).val;
vl9.AssignValueColor(if IsNaN(LowestAll(vl(9).x)) then GlobalColor("NB") else GlobalColor("L"));
vl9.SetPaintingStrategy(PaintingStrategy.DASHES);
vl9.SetLineWeight(1);

plot vl10 =  vl(10).val;
vl10.AssignValueColor(if IsNaN(LowestAll(vl(10).x)) then GlobalColor("NB") else GlobalColor("L"));
vl10.SetPaintingStrategy(PaintingStrategy.DASHES);
vl10.SetLineWeight(1);
;

AddLabel(1, " VAL: " +
if IsNaN(LowestAll(vl(1).x)) then "VL1: " + vl1 else
if IsNaN(LowestAll(vl(2).x)) then "VL2: " + vl2 else
if IsNaN(LowestAll(vl(3).x)) then "VL3: " + vl3 else
if IsNaN(LowestAll(vl(4).x)) then "VL4: " + vl4 else
if IsNaN(LowestAll(vl(5).x)) then "VL5: " + vl5 else
if IsNaN(LowestAll(vl(6).x)) then "VL6: " + vl6 else
if IsNaN(LowestAll(vl(7).x)) then "VL7: " + vl7 else
if IsNaN(LowestAll(vl(8).x)) then "VL8: " + vl8 else
if IsNaN(LowestAll(vl(9).x)) then "VL9: " + vl9 else
if IsNaN(LowestAll(vl(10).x)) then "VL10: " + vl10 else
"NO VL", Color.YELLOW) ;

def rval =
if IsNaN(LowestAll(vl(1).x)) then "VL1: " + vl1 else
if IsNaN(LowestAll(vl(2).x)) then "VL2: " + vl2 else
if IsNaN(LowestAll(vl(3).x)) then "VL3: " + vl3 else
if IsNaN(LowestAll(vl(4).x)) then "VL4: " + vl4 else
if IsNaN(LowestAll(vl(5).x)) then "VL5: " + vl5 else
if IsNaN(LowestAll(vl(6).x)) then "VL6: " + vl6 else
if IsNaN(LowestAll(vl(7).x)) then "VL7: " + vl7 else
if IsNaN(LowestAll(vl(8).x)) then "VL8: " + vl8 else
if IsNaN(LowestAll(vl(9).x)) then "VL9: " + vl9 else
if IsNaN(LowestAll(vl(10).x)) then "VL10: " + vl10 else "NO VL";

input bubblemover = 3;
def b  = bubblemover;
def b1 = b + 1;
def bm = bubblemover;
def bm1 = bm + 1;

AddChartBubble(showbubbles and IsNaN(close[b]) and !IsNaN(close[b1]), p0[b1], "VAL $" + rval , GlobalColor("L"));


Workspace link:http://tos.mx/cJjw92r

Here are bubbles added for the Naked Lines

Screenshot-2022-12-18-084954.png
Ruby:
#VolumeProfile_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;
#Added Price to Most Recent Naked Labels

script v {
    input daysback = 1;
    def volp = reference VolumeProfile("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(y) - daysback
                  then volp  else
               pc[1];
    plot x    = if y > HighestAll(y) - 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 VolumeProfile("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(y) - daysback
                  then volh  else
               ph[1];
    plot x    = if y > HighestAll(y) - 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 VolumeProfile("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(y) - daysback
                  then voll  else
               pl[1];
    plot x    = if y > HighestAll(y) - 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.WHITE);
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(1);

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(1);

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(1);

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(1);

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(1);

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(1);

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(1);

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(1);

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(1);

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(1);
;

AddLabel(1, "Most Recent Naked --> POC: " +
if IsNaN(LowestAll(v(1).x)) then "V1: " + v1 else
if IsNaN(LowestAll(v(2).x)) then "V2: " + v2 else
if IsNaN(LowestAll(v(3).x)) then "V3: " + v3 else
if IsNaN(LowestAll(v(4).x)) then "V4: " + v4 else
if IsNaN(LowestAll(v(5).x)) then "V5: " + v5 else
if IsNaN(LowestAll(v(6).x)) then "V6: " + v6 else
if IsNaN(LowestAll(v(7).x)) then "V7: " + v7 else
if IsNaN(LowestAll(v(8).x)) then "V8: " + v8 else
if IsNaN(LowestAll(v(9).x)) then "V9: " + v9 else
if IsNaN(LowestAll(v(10).x)) then "V10: " + v10 else
"NO V", Color.YELLOW) ;

plot vh1 =  vh(1).hva;
vh1.AssignValueColor(if IsNaN(LowestAll(vh(1).x)) then GlobalColor("NB") else GlobalColor("H"));
vh1.SetPaintingStrategy(PaintingStrategy.DASHES);
vh1.SetLineWeight(1);

plot vh2 =  vh(2).hva;
vh2.AssignValueColor(if IsNaN(LowestAll(vh(2).x)) then GlobalColor("NB") else GlobalColor("H"));
vh2.SetPaintingStrategy(PaintingStrategy.DASHES);
vh2.SetLineWeight(1);

plot vh3 =  vh(3).hva;
vh3.AssignValueColor(if IsNaN(LowestAll(vh(3).x)) then GlobalColor("NB") else GlobalColor("H"));
vh3.SetPaintingStrategy(PaintingStrategy.DASHES);
vh3.SetLineWeight(1);

plot vh4 =  vh(4).hva;
vh4.AssignValueColor(if IsNaN(LowestAll(vh(4).x)) then GlobalColor("NB") else GlobalColor("H"));
vh4.SetPaintingStrategy(PaintingStrategy.DASHES);
vh4.SetLineWeight(1);

plot vh5 =  vh(5).hva;
vh5.AssignValueColor(if IsNaN(LowestAll(vh(5).x)) then GlobalColor("NB") else GlobalColor("H"));
vh5.SetPaintingStrategy(PaintingStrategy.DASHES);
vh5.SetLineWeight(1);

plot vh6 =  vh(6).hva;
vh6.AssignValueColor(if IsNaN(LowestAll(vh(6).x)) then GlobalColor("NB") else GlobalColor("H"));
vh6.SetPaintingStrategy(PaintingStrategy.DASHES);
vh6.SetLineWeight(1);

plot vh7 =  vh(7).hva;
vh7.AssignValueColor(if IsNaN(LowestAll(vh(7).x)) then GlobalColor("NB") else GlobalColor("H"));
vh7.SetPaintingStrategy(PaintingStrategy.DASHES);
vh7.SetLineWeight(1);

plot vh8 =  vh(8).hva;
vh8.AssignValueColor(if IsNaN(LowestAll(vh(8).x)) then GlobalColor("NB") else GlobalColor("H"));
vh8.SetPaintingStrategy(PaintingStrategy.DASHES);
vh8.SetLineWeight(1);

plot vh9 =  vh(9).hva;
vh9.AssignValueColor(if IsNaN(LowestAll(vh(9).x)) then GlobalColor("NB") else GlobalColor("H"));
vh9.SetPaintingStrategy(PaintingStrategy.DASHES);
vh9.SetLineWeight(1);

plot vh10 =  vh(10).hva;
vh10.AssignValueColor(if IsNaN(LowestAll(vh(10).x)) then GlobalColor("NB") else GlobalColor("H"));
vh10.SetPaintingStrategy(PaintingStrategy.DASHES);
vh10.SetLineWeight(1);
;

AddLabel(1, " VAH: " +
if IsNaN(LowestAll(vh(1).x)) then "VH1: " + vh1 else
if IsNaN(LowestAll(vh(2).x)) then "VH2: " + vh2 else
if IsNaN(LowestAll(vh(3).x)) then "VH3: " + vh3 else
if IsNaN(LowestAll(vh(4).x)) then "VH4: " + vh4 else
if IsNaN(LowestAll(vh(5).x)) then "VH5: " + vh5 else
if IsNaN(LowestAll(vh(6).x)) then "VH6: " + vh6 else
if IsNaN(LowestAll(vh(7).x)) then "VH7: " + vh7 else
if IsNaN(LowestAll(vh(8).x)) then "VH8: " + vh8 else
if IsNaN(LowestAll(vh(9).x)) then "VH9: " + vh9 else
if IsNaN(LowestAll(vh(10).x)) then "VH10: " + vh10 else
"NO VH", Color.WHITE) ;


plot vl1 =  vl(1).val;
vl1.AssignValueColor(if IsNaN(LowestAll(vl(1).x)) then GlobalColor("NB") else GlobalColor("L"));
vl1.SetPaintingStrategy(PaintingStrategy.DASHES);
vl1.SetLineWeight(1);

plot vl2 =  vl(2).val;
vl2.AssignValueColor(if IsNaN(LowestAll(vl(2).x)) then GlobalColor("NB") else GlobalColor("L"));
vl2.SetPaintingStrategy(PaintingStrategy.DASHES);
vl2.SetLineWeight(1);

plot vl3 =  vl(3).val;
vl3.AssignValueColor(if IsNaN(LowestAll(vl(3).x)) then GlobalColor("NB") else GlobalColor("L"));
vl3.SetPaintingStrategy(PaintingStrategy.DASHES);
vl3.SetLineWeight(1);

plot vl4 =  vl(4);
vl4.AssignValueColor(if IsNaN(LowestAll(vl(4).x)) then GlobalColor("NB") else GlobalColor("L"));
vl4.SetPaintingStrategy(PaintingStrategy.DASHES);
vl4.SetLineWeight(1);

plot vl5 =  vl(5).val;
vl5.AssignValueColor(if IsNaN(LowestAll(vl(5).x)) then GlobalColor("NB") else GlobalColor("L"));
vl5.SetPaintingStrategy(PaintingStrategy.DASHES);
vl5.SetLineWeight(1);

plot vl6 =  vl(6).val;
vl6.AssignValueColor(if IsNaN(LowestAll(vl(6).x)) then GlobalColor("NB") else GlobalColor("L"));
vl6.SetPaintingStrategy(PaintingStrategy.DASHES);
vl6.SetLineWeight(1);

plot vl7 =  vl(7).val;
vl7.AssignValueColor(if IsNaN(LowestAll(vl(7).x)) then GlobalColor("NB") else GlobalColor("L"));
vl7.SetPaintingStrategy(PaintingStrategy.DASHES);
vl7.SetLineWeight(1);

plot vl8 =  vl(8).val;
vl8.AssignValueColor(if IsNaN(LowestAll(vl(8).x)) then GlobalColor("NB") else GlobalColor("L"));
vl8.SetPaintingStrategy(PaintingStrategy.DASHES);
vl8.SetLineWeight(1);

plot vl9 =  vl(9).val;
vl9.AssignValueColor(if IsNaN(LowestAll(vl(9).x)) then GlobalColor("NB") else GlobalColor("L"));
vl9.SetPaintingStrategy(PaintingStrategy.DASHES);
vl9.SetLineWeight(1);

plot vl10 =  vl(10).val;
vl10.AssignValueColor(if IsNaN(LowestAll(vl(10).x)) then GlobalColor("NB") else GlobalColor("L"));
vl10.SetPaintingStrategy(PaintingStrategy.DASHES);
vl10.SetLineWeight(1);
;

AddLabel(1, " VAL: " +
if IsNaN(LowestAll(vl(1).x)) then "VL1: " + vl1 else
if IsNaN(LowestAll(vl(2).x)) then "VL2: " + vl2 else
if IsNaN(LowestAll(vl(3).x)) then "VL3: " + vl3 else
if IsNaN(LowestAll(vl(4).x)) then "VL4: " + vl4 else
if IsNaN(LowestAll(vl(5).x)) then "VL5: " + vl5 else
if IsNaN(LowestAll(vl(6).x)) then "VL6: " + vl6 else
if IsNaN(LowestAll(vl(7).x)) then "VL7: " + vl7 else
if IsNaN(LowestAll(vl(8).x)) then "VL8: " + vl8 else
if IsNaN(LowestAll(vl(9).x)) then "VL9: " + vl9 else
if IsNaN(LowestAll(vl(10).x)) then "VL10: " + vl10 else
"NO VL", Color.YELLOW) ;


input showbubbles = yes;
input bubblemover = 3;
def b  = bubblemover;
def b1 = b + 1;

AddChartBubble(showbubbles and IsNaN(close[b]) and !IsNaN(close[b1]), v1[b], "1P " + v1 , GlobalColor("P"));
AddChartBubble(showbubbles and IsNaN(close[b]) and !IsNaN(close[b1]), v2[b], "2P " + v2 , GlobalColor("P"));
AddChartBubble(showbubbles and IsNaN(close[b]) and !IsNaN(close[b1]), v3[b], "3P " + v3 , GlobalColor("P"));
AddChartBubble(showbubbles and IsNaN(close[b]) and !IsNaN(close[b1]), v4[b], "4P " + v4 , GlobalColor("P"));
AddChartBubble(showbubbles and IsNaN(close[b]) and !IsNaN(close[b1]), v5[b], "5P " + v5 , GlobalColor("P"));
AddChartBubble(showbubbles and IsNaN(close[b]) and !IsNaN(close[b1]), v6[b], "6P " + v6 , GlobalColor("P"));
AddChartBubble(showbubbles and IsNaN(close[b]) and !IsNaN(close[b1]), v7[b], "7P " + v7 , GlobalColor("P"));
AddChartBubble(showbubbles and IsNaN(close[b]) and !IsNaN(close[b1]), v8[b], "8P " + v8 , GlobalColor("P"));
AddChartBubble(showbubbles and IsNaN(close[b]) and !IsNaN(close[b1]), v9[b], "9P " + v9 , GlobalColor("P"));
AddChartBubble(showbubbles and IsNaN(close[b]) and !IsNaN(close[b1]), v10[b], "10P " + v10 , GlobalColor("P"));

AddChartBubble(showbubbles and IsNaN(close[b]) and !IsNaN(close[b1]), vh1[b], "1H " + vh1 , GlobalColor("H"));
AddChartBubble(showbubbles and IsNaN(close[b]) and !IsNaN(close[b1]), vh2[b], "2H " + vh2 , GlobalColor("H"));
AddChartBubble(showbubbles and IsNaN(close[b]) and !IsNaN(close[b1]), vh3[b], "3H " + vh3 , GlobalColor("H"));
AddChartBubble(showbubbles and IsNaN(close[b]) and !IsNaN(close[b1]), vh4[b], "4H " + vh4 , GlobalColor("H"));
AddChartBubble(showbubbles and IsNaN(close[b]) and !IsNaN(close[b1]), vh5[b], "5H " + vh5 , GlobalColor("H"));
AddChartBubble(showbubbles and IsNaN(close[b]) and !IsNaN(close[b1]), vh6[b], "6H " + vh6 , GlobalColor("H"));
AddChartBubble(showbubbles and IsNaN(close[b]) and !IsNaN(close[b1]), vh7[b], "7H " + vh7 , GlobalColor("H"));
AddChartBubble(showbubbles and IsNaN(close[b]) and !IsNaN(close[b1]), vh8[b], "8H " + vh8 , GlobalColor("H"));
AddChartBubble(showbubbles and IsNaN(close[b]) and !IsNaN(close[b1]), vh9[b], "9H " + vh9 , GlobalColor("H"));
AddChartBubble(showbubbles and IsNaN(close[b]) and !IsNaN(close[b1]), vh10[b], "10H " + vh10 , GlobalColor("H"));

AddChartBubble(showbubbles and IsNaN(close[b]) and !IsNaN(close[b1]), vl1[b], "1L " + vl1 , GlobalColor("L"));
AddChartBubble(showbubbles and IsNaN(close[b]) and !IsNaN(close[b1]), vl2[b], "2L " + vl2 , GlobalColor("L"));
AddChartBubble(showbubbles and IsNaN(close[b]) and !IsNaN(close[b1]), vl3[b], "3L " + vl3 , GlobalColor("L"));
AddChartBubble(showbubbles and IsNaN(close[b]) and !IsNaN(close[b1]), vl4[b], "4L " + vl4 , GlobalColor("L"));
AddChartBubble(showbubbles and IsNaN(close[b]) and !IsNaN(close[b1]), vl5[b], "5L " + vl5 , GlobalColor("L"));
AddChartBubble(showbubbles and IsNaN(close[b]) and !IsNaN(close[b1]), vl6[b], "6L " + vl6 , GlobalColor("L"));
AddChartBubble(showbubbles and IsNaN(close[b]) and !IsNaN(close[b1]), vl7[b], "7L " + vl7 , GlobalColor("L"));
AddChartBubble(showbubbles and IsNaN(close[b]) and !IsNaN(close[b1]), vl8[b], "8L " + vl8 , GlobalColor("L"));
AddChartBubble(showbubbles and IsNaN(close[b]) and !IsNaN(close[b1]), vl9[b], "9L " + vl9 , GlobalColor("L"));
AddChartBubble(showbubbles and IsNaN(close[b]) and !IsNaN(close[b1]), vl10[b], "10L " + vl10 , GlobalColor("L"));

v1.HideBubble();
v2.HideBubble();
v3.HideBubble();
v4.HideBubble();
v5.HideBubble();
v6.HideBubble();
v7.HideBubble();
v8.HideBubble();
v9.HideBubble();
v10.HideBubble();

vh1.HideBubble();
vh2.HideBubble();
vh3.HideBubble();
vh4.HideBubble();
vh5.HideBubble();
vh6.HideBubble();
vh7.HideBubble();
vh8.HideBubble();
vh9.HideBubble();
vh10.HideBubble();

vl1.HideBubble();
vl2.HideBubble();
vl3.HideBubble();
vl4.HideBubble();
vl5.HideBubble();
vl6.HideBubble();
vl7.HideBubble();
vl8.HideBubble();
vl9.HideBubble();
vl10.HideBubble();
 
Just saw your request.

This script combines x number of extended plots of the POC of the Volumeprofile indicator, also included in the script. You can add more extended plots by using the logic used to create the 10 included in the script. You could also change the def volp to be one of the other profile plots available in the box to the right when you click on the reference volumeprofile portion of the def volp.
Hi SleepyZ - Great work! I was wondering if you could modify this to extend Monthly VPOCs on a daily chart? Also, I'm just getting into TOS and coding - Have any suggestions on where a noob should start to learn TOS coding? Thx buddy!
 
Hi SleepyZ - Great work! I was wondering if you could modify this to extend Monthly VPOCs on a daily chart? Also, I'm just getting into TOS and coding - Have any suggestions on where a noob should start to learn TOS coding? Thx buddy!

This adjusts the above script to plot monthly extended POCs on a Daily timeframe chart.

@halcyonguy posted an excellent response to learning to script:
https://usethinkscript.com/threads/is-there-a-course-to-learn-thinkscript.682/post-89840

Screenshot-2023-04-08-152601.png
Code:
#Extended_POCs_for_x_Months_Back
#More can be added using the logic below
#Sleepyz - usethinkscript request @yardlay


script v {
    input daysback = 1;
    def volp = reference VolumeProfile("time per profile" = "MONTH", "on expansion" = no, "price per row height mode" = "TICKSIZE");
    def ymd  = GetMonth();
    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(y) - daysback
                  then volp  else
               pc[1];
    plot poc = pc;

}

plot v1 =  v(1).poc;
v1.SetDefaultColor(Color.RED);
v1.SetPaintingStrategy(PaintingStrategy.DASHES);
v1.SetLineWeight(2);

plot v2 =  v(2).poc;
v2.SetDefaultColor(Color.RED);
v2.SetPaintingStrategy(PaintingStrategy.DASHES);
v2.SetLineWeight(2);

plot v3 =  v(3).poc;
v3.SetDefaultColor(Color.RED);
v3.SetPaintingStrategy(PaintingStrategy.DASHES);
v3.SetLineWeight(2);

plot v4 =  v(4).poc;
v4.SetDefaultColor(Color.RED);
v4.SetPaintingStrategy(PaintingStrategy.DASHES);
v4.SetLineWeight(2);

plot v5 =  v(5).poc;
v5.SetDefaultColor(Color.RED);
v5.SetPaintingStrategy(PaintingStrategy.DASHES);
v5.SetLineWeight(2);

plot v6 =  v(6).poc;
v6.SetDefaultColor(Color.RED);
v6.SetPaintingStrategy(PaintingStrategy.DASHES);
v6.SetLineWeight(2);

plot v7 =  v(7).poc;
v7.SetDefaultColor(Color.RED);
v7.SetPaintingStrategy(PaintingStrategy.DASHES);
v7.SetLineWeight(2);

plot v8 =  v(8).poc;
v8.SetDefaultColor(Color.RED);
v8.SetPaintingStrategy(PaintingStrategy.DASHES);
v8.SetLineWeight(2);

plot v9 =  v(9).poc;
v9.SetDefaultColor(Color.RED);
v9.SetPaintingStrategy(PaintingStrategy.DASHES);
v9.SetLineWeight(2);

plot v10 =  v(10).poc;
v10.SetDefaultColor(Color.RED);
v10.SetPaintingStrategy(PaintingStrategy.DASHES);
v10.SetLineWeight(2);
;


#Volumeprofile script with Defaults to match extended POC plots x daysback
#
# TD Ameritrade IP Company, Inc. (c) 2010-2022
#

input pricePerRowHeightMode = {AUTOMATIC, default TICKSIZE, CUSTOM};
input customRowHeight = 1.0;
input timePerProfile = {CHART, MINUTE, HOUR, default DAY, WEEK, MONTH, "OPT EXP", BAR};
input multiplier = 1;
input onExpansion = no;
input profiles = 1000;
input showPointOfControl = yes;
input showValueArea = yes;
input valueAreaPercent = 70;
input opacity = 50;

def period;
def yyyymmdd = GetYYYYMMDD();
def seconds = SecondsFromTime(0);
def month = GetYear() * 12 + GetMonth();
def day_number = DaysFromDate(First(yyyymmdd)) + GetDayOfWeek(First(yyyymmdd));
def dom = GetDayOfMonth(yyyymmdd);
def dow = GetDayOfWeek(yyyymmdd - dom + 1);
def expthismonth = (if dow > 5 then 27 else 20) - dow;
def exp_opt = month + (dom > expthismonth);
switch (timePerProfile) {
case CHART:
    period = 0;
case MINUTE:
    period = Floor(seconds / 60 + day_number * 24 * 60);
case HOUR:
    period = Floor(seconds / 3600 + day_number * 24);
case DAY:
    period = CountTradingDays(Min(First(yyyymmdd), yyyymmdd), yyyymmdd) - 1;
case WEEK:
    period = Floor(day_number / 7);
case MONTH:
    period = Floor(month - First(month));
case "OPT EXP":
    period = exp_opt - First(exp_opt);
case BAR:
    period = BarNumber() - 1;
}

def count = CompoundValue(1, if period != period[1] then (count[1] + period - period[1]) % multiplier else count[1], 0);
def cond = count < count[1] + period - period[1];
def height;
switch (pricePerRowHeightMode) {
case AUTOMATIC:
    height = PricePerRow.AUTOMATIC;
case TICKSIZE:
    height = PricePerRow.TICKSIZE;
case CUSTOM:
    height = customRowHeight;
}

profile vol = VolumeProfile("startNewProfile" = cond, "onExpansion" = onExpansion, "numberOfProfiles" = profiles, "pricePerRow" = height, "value area percent" = valueAreaPercent);
def con = CompoundValue(1, onExpansion, no);
def pc = if IsNaN(vol.GetPointOfControl()) and con then pc[1] else vol.GetPointOfControl();
def hVA = if IsNaN(vol.GetHighestValueArea()) and con then hVA[1] else vol.GetHighestValueArea();
def lVA = if IsNaN(vol.GetLowestValueArea()) and con then lVA[1] else vol.GetLowestValueArea();

def hProfile = if IsNaN(vol.GetHighest()) and con then hProfile[1] else vol.GetHighest();
def lProfile = if IsNaN(vol.GetLowest()) and con then lProfile[1] else vol.GetLowest();
def plotsDomain = IsNaN(close) == onExpansion;

plot POC = if plotsDomain then pc else Double.NaN;
plot ProfileHigh = if plotsDomain then hProfile else Double.NaN;
plot ProfileLow = if plotsDomain then lProfile else Double.NaN;
plot VAHigh = if plotsDomain then hVA else Double.NaN;
plot VALow = if plotsDomain then lVA else Double.NaN;

DefineGlobalColor("Profile", GetColor(1));
DefineGlobalColor("Point Of Control", GetColor(5));
DefineGlobalColor("Value Area", GetColor(8));

vol.Show(GlobalColor("Profile"), if showPointOfControl then GlobalColor("Point Of Control") else Color.CURRENT, if showValueArea then GlobalColor("Value Area") else Color.CURRENT, opacity);
POC.SetDefaultColor(GlobalColor("Point Of Control"));
POC.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
VAHigh.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
VALow.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
VAHigh.SetDefaultColor(GlobalColor("Value Area"));
VALow.SetDefaultColor(GlobalColor("Value Area"));
ProfileHigh.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
ProfileLow.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
ProfileHigh.SetDefaultColor(GetColor(3));
ProfileLow.SetDefaultColor(GetColor(3));
ProfileHigh.Hide();
ProfileLow.Hide();
 
Here is the TPO script from above using VolumeProfile instead. Added is an input option to only show naked (virgin) plots.

The image uses a 1hr chart with 3 copies of the script starting at input start of 0, 30, and 90 and showing on naked plots, so more can be seen.
Hello @SleepyZ , first i want to thank you for your continued efforts. I have an issue. Attached is a 30m:30D chart of SPY. Looking at the screenshot, the red lines are vPOCs that werent plotted by the script. I have extended hours off, have 3 copies of the script with input starting at 0,30 and 90. But if i turn on extended hours, it seems to plot all vPOCs. Same behavior for individual stocks also. Can you help? Thanks
 

Attachments

  • ETH_Off.png
    ETH_Off.png
    339.8 KB · Views: 87
  • ETH_On.png
    ETH_On.png
    347.5 KB · Views: 86

Similar threads

Not the exact question you're looking for?

Start a new thread and receive assistance from our community.

87k+ Posts
238 Online
Create Post

Similar threads

Similar threads

The Market Trading Game Changer

Join 2,500+ subscribers inside the useThinkScript VIP Membership Club
  • Exclusive indicators
  • Proven strategies & setups
  • Private Discord community
  • ‘Buy The Dip’ signal alerts
  • Exclusive members-only content
  • Add-ons and resources
  • 1 full year of unlimited support

Frequently Asked Questions

What is useThinkScript?

useThinkScript is the #1 community of stock market investors using indicators and other tools to power their trading strategies. Traders of all skill levels use our forums to learn about scripting and indicators, help each other, and discover new ways to gain an edge in the markets.

How do I get started?

We get it. Our forum can be intimidating, if not overwhelming. With thousands of topics, tens of thousands of posts, our community has created an incredibly deep knowledge base for stock traders. No one can ever exhaust every resource provided on our site.

If you are new, or just looking for guidance, here are some helpful links to get you started.

What are the benefits of VIP Membership?
VIP members get exclusive access to these proven and tested premium indicators: Buy the Dip, Advanced Market Moves 2.0, Take Profit, and Volatility Trading Range. In addition, VIP members get access to over 50 VIP-only custom indicators, add-ons, and strategies, private VIP-only forums, private Discord channel to discuss trades and strategies in real-time, customer support, trade alerts, and much more. Learn all about VIP membership here.
How can I access the premium indicators?
To access the premium indicators, which are plug and play ready, sign up for VIP membership here.
Back
Top