POC indicator with a twist.

ILIKESTOCKS

Member
Greetings, to all who have the magical gift of coding! I would like an indicator that follows the current days POC. When the price is above the POC the label turns green and displays current price percentage above, and when the price is below the POC it displays the current price percentage below, and turns red. If price is at the money it stays white. Also next to these labels I would like the POC displayed with price range. Id like it to work on an intraday chart for any time up to 15 minutes. I only would like a line on the chart representing current POC and that is all. Is this possible?
 
Solution
Greetings, to all who have the magical gift of coding! I would like an indicator that follows the current days POC. When the price is above the POC the label turns green and displays current price percentage above, and when the price is below the POC it displays the current price percentage below, and turns red. If price is at the money it stays white. Also next to these labels I would like the POC displayed with price range. Id like it to work on an intraday chart for any time up to 15 minutes. I only would like a line on the chart representing current POC and that is all. Is this possible?

This should provide volumeprofile POC/Close comparison data, except POC price range. TOS does not provide POC data on a bar by bar basis...
TOS, I understand runs all indicators at every tick/bar on a chart. So if you run 5 copies, it would only be most useful for testing/analysis of an entire day's whole regulart trading hours. The platform performance with even 1 of this indicator loaded, can really be affected at the lowest timeframes.

I have created a new regular trading hour version that makes a floating 60 (this can be modified by adding/deleting plots) bar script that plots the last 60 bars as the day progresses. You can select at the input start_type whether to use the floating auto or manual input, as before.

It is, as was the original, best run on a TODAY chart.

There are some minor fixes to the original code that are included in the new floating code below to try make sure that it works on most timeframes.
Ok let me see if I have this correct, on AUTOSTART it will start at the open go for 60 bars then restart on the 61st bar for another 60 regardless of time frame such as 1 min or 5 min? MANUALSTART will start at whatever time of the day I choose? 6am 7am etc? The other question I have is the parentheses: (this can be modified by adding/deleting plots) I dont understand this. Do you mean checking the plots box for each cline,LoVA,HIVA, Pointofcontrol, delta, delta spike? Ok thank you very much for your diligence.
 

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

Ok let me see if I have this correct, on AUTOSTART it will start at the open go for 60 bars then restart on the 61st bar for another 60 regardless of time frame such as 1 min or 5 min? MANUALSTART will start at whatever time of the day I choose? 6am 7am etc? The other question I have is the parentheses: (this can be modified by adding/deleting plots) I dont understand this. Do you mean checking the plots box for each cline,LoVA,HIVA, Pointofcontrol, delta, delta spike? Ok thank you very much for your diligence.
The autostart at 60 bars starts using a floating POC etc that will plot the previous 60 bars, remove 1 bar's data from the beginning and continues plotting new POCs etc for the rest of the day, no matter the chart timeframe.

Manual start will allow you to start at 0 or larger number you may want it to start at. This would allow you to have multiple copies of the code to display larger periods of POC etc data. I have other versions of this POC etc code that has up to 98 iterations and I just thought someone might be interested in controlling the plotting. It does not mean you can pick a start time, which is coded to be the beginning of regular trading hours

The parantheses discuss that if you want more or less than 60 bars, then it is just a matter of copying/pasting more iterations and changing the numbers in the code to sequentially number them as the logic used in the code for the 60 bars.
 
TOS, I understand runs all indicators at every tick/bar on a chart. So if you run 5 copies, it would only be most useful for testing/analysis of an entire day's whole regulart trading hours. The platform performance with even 1 of this indicator loaded, can really be affected at the lowest timeframes.

I have created a new regular trading hour version that makes a floating 60 (this can be modified by adding/deleting plots) bar script that plots the last 60 bars as the day progresses. You can select at the input start_type whether to use the floating auto or manual input, as before.

It is, as was the original, best run on a TODAY chart.

There are some minor fixes to the original code that are included in the new floating code below to try make sure that it works on most timeframes.
I tried this it worked then stopped floating around 7:40 am west coast time.
 
I tried this it worked then stopped floating around 7:40 am west coast time.
The code in this link is working/floating still on my computer, although the hard drive is spinning very fast.
https://usethinkscript.com/threads/poc-indicator-with-a-twist.11714/post-103497
Capture.jpg
 
In your image it looks like its 4 candles behind?
Thanks, I have made an adjustment and tested it online (about the only way as OnDemand has trouble with this script) this morrning and it seems to include the current bar and approximately 60 bars back.

Ruby:
#VolumeProfile_bar_bar_78bars
#Priceline
input priceline  = yes;
def price  = if IsNaN(close) then price[1] else close;
plot cline = if IsNaN(close[-1]) then price else Double.NaN;
cline.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
AddChartBubble(priceline and IsNaN(cline[4]) and !IsNaN(cline[3]),
               cline,
               AsText(price),
               if close[4] > open[4] then Color.GREEN else Color.RED);

#VolumeProfile_bar_by_bar_Flexible_98_Iterations

#POC
#VolumeProfile_78_bar_by_bar

# plots POC, VAH and VAL for profiles starting at RTH Open and ending 1,2,3 etc bars later
# Not a realistic solution to the problem
# Nube
# 20220712 Sleepyz - Modified Nube's (TOS lounge) script to add additional else if statements to allow this to track these 3 variables on 5m and greater intraday periods. This can be very resource intense

input start_type   = {default autostart, manualstart};
input manual_start = 0;

def bn = BarNumber();
def na = Double.NaN;

script TestPro {
    input Start = 1;
    input nBars = 0;
    def bn    = BarNumber();
    def na    = Double.NaN;
    def EndBar        = if   bn == Start + nBars
                        then bn else EndBar[1];
    def NewProfile    = bn == Start or
                        bn crosses above EndBar;

    profile testProfile = VolumeProfile("startNewProfile" = NewProfile
, "onExpansion" = no, "numberOfProfiles" = 99, "pricePerRow" = TickSize(), "value area percent" = 70);

    plot hva = if   bn == EndBar
           then testProfile.GetHighestValueArea()
           else na;
    plot lva = if   bn == EndBar
           then testProfile.GetLowestValueArea()
           else na;
    plot poc = if   bn == EndBar
           then testProfile.GetPointOfControl()
           else na;
}
def RTHOpen = GetDay() == GetLastDay()  &&
              GetTime() crosses above RegularTradingStart(GetYYYYMMDD());

def RTHBar  = HighestAll(CompoundValue(1,
              if RTHOpen
              then bn - 1
              else Double.NaN, 0));

def count = if bn < RTHBar or
            GetTime() > RegularTradingEnd(GetYYYYMMDD())
            then 0
            else if GetTime() crosses above RegularTradingStart(GetYYYYMMDD())
            then 1
            else if GetTime() < RegularTradingEnd(GetYYYYMMDD()) then count[1] + 1 
            else Double.NaN
            ;

def move  = if bn < RTHBar or
            GetTime() > RegularTradingEnd(GetYYYYMMDD())
            then 0 
            else if Between(count, 1, 60)
            then 0
            else if Between(count, 61, 370)
            then count - 59
            else 0
            ;


def start = if start_type == start_type.manualstart
            then manual_start
            else if start_type == start_type.autostart then if bn < RTHBar or
            GetTime() > RegularTradingEnd(GetYYYYMMDD())
            then 0 
            else if count < 340 then HighestAll(GetValue(move, 1)) - 30 
            else 330 else 0
            ;

def hva =
if  bn == RTHBar + start + 1 then TestPro(RTHBar,  start + 1).hva else
if  bn == RTHBar + start + 2 then TestPro(RTHBar,  start + 2).hva else
if  bn == RTHBar + start + 3 then TestPro(RTHBar,  start + 3).hva else
if  bn == RTHBar + start + 4 then TestPro(RTHBar,  start + 4).hva else
if  bn == RTHBar + start + 5 then TestPro(RTHBar,  start + 5).hva else
if  bn == RTHBar + start + 6 then TestPro(RTHBar,  start + 6).hva else
if  bn == RTHBar + start + 7 then TestPro(RTHBar,  start + 7).hva else
if  bn == RTHBar + start + 8 then TestPro(RTHBar,  start + 8).hva else
if  bn == RTHBar + start + 9 then TestPro(RTHBar,  start + 9).hva else
if  bn == RTHBar + start + 10 then TestPro(RTHBar,  start + 10).hva else
if  bn == RTHBar + start + 11 then TestPro(RTHBar,  start + 11).hva else
if  bn == RTHBar + start + 12 then TestPro(RTHBar,  start + 12).hva else
if  bn == RTHBar + start + 13 then TestPro(RTHBar,  start + 13).hva else
if  bn == RTHBar + start + 14 then TestPro(RTHBar,  start + 14).hva else
if  bn == RTHBar + start + 15 then TestPro(RTHBar,  start + 15).hva else
if  bn == RTHBar + start + 16 then TestPro(RTHBar,  start + 16).hva else
if  bn == RTHBar + start + 17 then TestPro(RTHBar,  start + 17).hva else
if  bn == RTHBar + start + 18 then TestPro(RTHBar,  start + 18).hva else
if  bn == RTHBar + start + 19 then TestPro(RTHBar,  start + 19).hva else
if  bn == RTHBar + start + 20 then TestPro(RTHBar,  start + 20).hva else
if  bn == RTHBar + start + 21 then TestPro(RTHBar,  start + 21).hva else
if  bn == RTHBar + start + 22 then TestPro(RTHBar,  start + 22).hva else
if  bn == RTHBar + start + 23 then TestPro(RTHBar,  start + 23).hva else
if  bn == RTHBar + start + 24 then TestPro(RTHBar,  start + 24).hva else
if  bn == RTHBar + start + 25 then TestPro(RTHBar,  start + 25).hva else
if  bn == RTHBar + start + 26 then TestPro(RTHBar,  start + 26).hva else
if  bn == RTHBar + start + 27 then TestPro(RTHBar,  start + 27).hva else
if  bn == RTHBar + start + 28 then TestPro(RTHBar,  start + 28).hva else
if  bn == RTHBar + start + 29 then TestPro(RTHBar,  start + 29).hva else
if  bn == RTHBar + start + 30 then TestPro(RTHBar,  start + 30).hva else
if  bn == RTHBar + start + 31 then TestPro(RTHBar,  start + 31).hva else
if  bn == RTHBar + start + 32 then TestPro(RTHBar,  start + 32).hva else
if  bn == RTHBar + start + 33 then TestPro(RTHBar,  start + 33).hva else
if  bn == RTHBar + start + 34 then TestPro(RTHBar,  start + 34).hva else
if  bn == RTHBar + start + 35 then TestPro(RTHBar,  start + 35).hva else
if  bn == RTHBar + start + 36 then TestPro(RTHBar,  start + 36).hva else
if  bn == RTHBar + start + 37 then TestPro(RTHBar,  start + 37).hva else
if  bn == RTHBar + start + 38 then TestPro(RTHBar,  start + 38).hva else
if  bn == RTHBar + start + 39 then TestPro(RTHBar,  start + 39).hva else
if  bn == RTHBar + start + 40 then TestPro(RTHBar,  start + 40).hva else
if  bn == RTHBar + start + 41 then TestPro(RTHBar,  start + 41).hva else
if  bn == RTHBar + start + 42 then TestPro(RTHBar,  start + 42).hva else
if  bn == RTHBar + start + 43 then TestPro(RTHBar,  start + 43).hva else
if  bn == RTHBar + start + 44 then TestPro(RTHBar,  start + 44).hva else
if  bn == RTHBar + start + 45 then TestPro(RTHBar,  start + 45).hva else
if  bn == RTHBar + start + 46 then TestPro(RTHBar,  start + 46).hva else
if  bn == RTHBar + start + 47 then TestPro(RTHBar,  start + 47).hva else
if  bn == RTHBar + start + 48 then TestPro(RTHBar,  start + 48).hva else
if  bn == RTHBar + start + 49 then TestPro(RTHBar,  start + 49).hva else
if  bn == RTHBar + start + 50 then TestPro(RTHBar,  start + 50).hva else
if  bn == RTHBar + start + 51 then TestPro(RTHBar,  start + 51).hva else
if  bn == RTHBar + start + 52 then TestPro(RTHBar,  start + 52).hva else
if  bn == RTHBar + start + 53 then TestPro(RTHBar,  start + 53).hva else
if  bn == RTHBar + start + 54 then TestPro(RTHBar,  start + 54).hva else
if  bn == RTHBar + start + 55 then TestPro(RTHBar,  start + 55).hva else
if  bn == RTHBar + start + 56 then TestPro(RTHBar,  start + 56).hva else
if  bn == RTHBar + start + 57 then TestPro(RTHBar,  start + 57).hva else
if  bn == RTHBar + start + 58 then TestPro(RTHBar,  start + 58).hva else
if  bn == RTHBar + start + 59 then TestPro(RTHBar,  start + 59).hva else
if  bn == RTHBar + start + 60 then TestPro(RTHBar,  start + 60).hva else
na;

def lva =
if  bn == RTHBar + start + 1 then TestPro(RTHBar,  start + 1).lva else
if  bn == RTHBar + start + 2 then TestPro(RTHBar,  start + 2).lva else
if  bn == RTHBar + start + 3 then TestPro(RTHBar,  start + 3).lva else
if  bn == RTHBar + start + 4 then TestPro(RTHBar,  start + 4).lva else
if  bn == RTHBar + start + 5 then TestPro(RTHBar,  start + 5).lva else
if  bn == RTHBar + start + 6 then TestPro(RTHBar,  start + 6).lva else
if  bn == RTHBar + start + 7 then TestPro(RTHBar,  start + 7).lva else
if  bn == RTHBar + start + 8 then TestPro(RTHBar,  start + 8).lva else
if  bn == RTHBar + start + 9 then TestPro(RTHBar,  start + 9).lva else
if  bn == RTHBar + start + 10 then TestPro(RTHBar,  start + 10).lva else
if  bn == RTHBar + start + 11 then TestPro(RTHBar,  start + 11).lva else
if  bn == RTHBar + start + 12 then TestPro(RTHBar,  start + 12).lva else
if  bn == RTHBar + start + 13 then TestPro(RTHBar,  start + 13).lva else
if  bn == RTHBar + start + 14 then TestPro(RTHBar,  start + 14).lva else
if  bn == RTHBar + start + 15 then TestPro(RTHBar,  start + 15).lva else
if  bn == RTHBar + start + 16 then TestPro(RTHBar,  start + 16).lva else
if  bn == RTHBar + start + 17 then TestPro(RTHBar,  start + 17).lva else
if  bn == RTHBar + start + 18 then TestPro(RTHBar,  start + 18).lva else
if  bn == RTHBar + start + 19 then TestPro(RTHBar,  start + 19).lva else
if  bn == RTHBar + start + 20 then TestPro(RTHBar,  start + 20).lva else
if  bn == RTHBar + start + 21 then TestPro(RTHBar,  start + 21).lva else
if  bn == RTHBar + start + 22 then TestPro(RTHBar,  start + 22).lva else
if  bn == RTHBar + start + 23 then TestPro(RTHBar,  start + 23).lva else
if  bn == RTHBar + start + 24 then TestPro(RTHBar,  start + 24).lva else
if  bn == RTHBar + start + 25 then TestPro(RTHBar,  start + 25).lva else
if  bn == RTHBar + start + 26 then TestPro(RTHBar,  start + 26).lva else
if  bn == RTHBar + start + 27 then TestPro(RTHBar,  start + 27).lva else
if  bn == RTHBar + start + 28 then TestPro(RTHBar,  start + 28).lva else
if  bn == RTHBar + start + 29 then TestPro(RTHBar,  start + 29).lva else
if  bn == RTHBar + start + 30 then TestPro(RTHBar,  start + 30).lva else
if  bn == RTHBar + start + 31 then TestPro(RTHBar,  start + 31).lva else
if  bn == RTHBar + start + 32 then TestPro(RTHBar,  start + 32).lva else
if  bn == RTHBar + start + 33 then TestPro(RTHBar,  start + 33).lva else
if  bn == RTHBar + start + 34 then TestPro(RTHBar,  start + 34).lva else
if  bn == RTHBar + start + 35 then TestPro(RTHBar,  start + 35).lva else
if  bn == RTHBar + start + 36 then TestPro(RTHBar,  start + 36).lva else
if  bn == RTHBar + start + 37 then TestPro(RTHBar,  start + 37).lva else
if  bn == RTHBar + start + 38 then TestPro(RTHBar,  start + 38).lva else
if  bn == RTHBar + start + 39 then TestPro(RTHBar,  start + 39).lva else
if  bn == RTHBar + start + 40 then TestPro(RTHBar,  start + 40).lva else
if  bn == RTHBar + start + 41 then TestPro(RTHBar,  start + 41).lva else
if  bn == RTHBar + start + 42 then TestPro(RTHBar,  start + 42).lva else
if  bn == RTHBar + start + 43 then TestPro(RTHBar,  start + 43).lva else
if  bn == RTHBar + start + 44 then TestPro(RTHBar,  start + 44).lva else
if  bn == RTHBar + start + 45 then TestPro(RTHBar,  start + 45).lva else
if  bn == RTHBar + start + 46 then TestPro(RTHBar,  start + 46).lva else
if  bn == RTHBar + start + 47 then TestPro(RTHBar,  start + 47).lva else
if  bn == RTHBar + start + 48 then TestPro(RTHBar,  start + 48).lva else
if  bn == RTHBar + start + 49 then TestPro(RTHBar,  start + 49).lva else
if  bn == RTHBar + start + 50 then TestPro(RTHBar,  start + 50).lva else
if  bn == RTHBar + start + 51 then TestPro(RTHBar,  start + 51).lva else
if  bn == RTHBar + start + 52 then TestPro(RTHBar,  start + 52).lva else
if  bn == RTHBar + start + 53 then TestPro(RTHBar,  start + 53).lva else
if  bn == RTHBar + start + 54 then TestPro(RTHBar,  start + 54).lva else
if  bn == RTHBar + start + 55 then TestPro(RTHBar,  start + 55).lva else
if  bn == RTHBar + start + 56 then TestPro(RTHBar,  start + 56).lva else
if  bn == RTHBar + start + 57 then TestPro(RTHBar,  start + 57).lva else
if  bn == RTHBar + start + 58 then TestPro(RTHBar,  start + 58).lva else
if  bn == RTHBar + start + 59 then TestPro(RTHBar,  start + 59).lva else
if  bn == RTHBar + start + 60 then TestPro(RTHBar,  start + 60).lva else
na;

def poc =
if  bn == RTHBar + start + 1 then TestPro(RTHBar,  start + 1).poc else
if  bn == RTHBar + start + 2 then TestPro(RTHBar,  start + 2).poc else
if  bn == RTHBar + start + 3 then TestPro(RTHBar,  start + 3).poc else
if  bn == RTHBar + start + 4 then TestPro(RTHBar,  start + 4).poc else
if  bn == RTHBar + start + 5 then TestPro(RTHBar,  start + 5).poc else
if  bn == RTHBar + start + 6 then TestPro(RTHBar,  start + 6).poc else
if  bn == RTHBar + start + 7 then TestPro(RTHBar,  start + 7).poc else
if  bn == RTHBar + start + 8 then TestPro(RTHBar,  start + 8).poc else
if  bn == RTHBar + start + 9 then TestPro(RTHBar,  start + 9).poc else
if  bn == RTHBar + start + 10 then TestPro(RTHBar,  start + 10).poc else
if  bn == RTHBar + start + 11 then TestPro(RTHBar,  start + 11).poc else
if  bn == RTHBar + start + 12 then TestPro(RTHBar,  start + 12).poc else
if  bn == RTHBar + start + 13 then TestPro(RTHBar,  start + 13).poc else
if  bn == RTHBar + start + 14 then TestPro(RTHBar,  start + 14).poc else
if  bn == RTHBar + start + 15 then TestPro(RTHBar,  start + 15).poc else
if  bn == RTHBar + start + 16 then TestPro(RTHBar,  start + 16).poc else
if  bn == RTHBar + start + 17 then TestPro(RTHBar,  start + 17).poc else
if  bn == RTHBar + start + 18 then TestPro(RTHBar,  start + 18).poc else
if  bn == RTHBar + start + 19 then TestPro(RTHBar,  start + 19).poc else
if  bn == RTHBar + start + 20 then TestPro(RTHBar,  start + 20).poc else
if  bn == RTHBar + start + 21 then TestPro(RTHBar,  start + 21).poc else
if  bn == RTHBar + start + 22 then TestPro(RTHBar,  start + 22).poc else
if  bn == RTHBar + start + 23 then TestPro(RTHBar,  start + 23).poc else
if  bn == RTHBar + start + 24 then TestPro(RTHBar,  start + 24).poc else
if  bn == RTHBar + start + 25 then TestPro(RTHBar,  start + 25).poc else
if  bn == RTHBar + start + 26 then TestPro(RTHBar,  start + 26).poc else
if  bn == RTHBar + start + 27 then TestPro(RTHBar,  start + 27).poc else
if  bn == RTHBar + start + 28 then TestPro(RTHBar,  start + 28).poc else
if  bn == RTHBar + start + 29 then TestPro(RTHBar,  start + 29).poc else
if  bn == RTHBar + start + 30 then TestPro(RTHBar,  start + 30).poc else
if  bn == RTHBar + start + 31 then TestPro(RTHBar,  start + 31).poc else
if  bn == RTHBar + start + 32 then TestPro(RTHBar,  start + 32).poc else
if  bn == RTHBar + start + 33 then TestPro(RTHBar,  start + 33).poc else
if  bn == RTHBar + start + 34 then TestPro(RTHBar,  start + 34).poc else
if  bn == RTHBar + start + 35 then TestPro(RTHBar,  start + 35).poc else
if  bn == RTHBar + start + 36 then TestPro(RTHBar,  start + 36).poc else
if  bn == RTHBar + start + 37 then TestPro(RTHBar,  start + 37).poc else
if  bn == RTHBar + start + 38 then TestPro(RTHBar,  start + 38).poc else
if  bn == RTHBar + start + 39 then TestPro(RTHBar,  start + 39).poc else
if  bn == RTHBar + start + 40 then TestPro(RTHBar,  start + 40).poc else
if  bn == RTHBar + start + 41 then TestPro(RTHBar,  start + 41).poc else
if  bn == RTHBar + start + 42 then TestPro(RTHBar,  start + 42).poc else
if  bn == RTHBar + start + 43 then TestPro(RTHBar,  start + 43).poc else
if  bn == RTHBar + start + 44 then TestPro(RTHBar,  start + 44).poc else
if  bn == RTHBar + start + 45 then TestPro(RTHBar,  start + 45).poc else
if  bn == RTHBar + start + 46 then TestPro(RTHBar,  start + 46).poc else
if  bn == RTHBar + start + 47 then TestPro(RTHBar,  start + 47).poc else
if  bn == RTHBar + start + 48 then TestPro(RTHBar,  start + 48).poc else
if  bn == RTHBar + start + 49 then TestPro(RTHBar,  start + 49).poc else
if  bn == RTHBar + start + 50 then TestPro(RTHBar,  start + 50).poc else
if  bn == RTHBar + start + 51 then TestPro(RTHBar,  start + 51).poc else
if  bn == RTHBar + start + 52 then TestPro(RTHBar,  start + 52).poc else
if  bn == RTHBar + start + 53 then TestPro(RTHBar,  start + 53).poc else
if  bn == RTHBar + start + 54 then TestPro(RTHBar,  start + 54).poc else
if  bn == RTHBar + start + 55 then TestPro(RTHBar,  start + 55).poc else
if  bn == RTHBar + start + 56 then TestPro(RTHBar,  start + 56).poc else
if  bn == RTHBar + start + 57 then TestPro(RTHBar,  start + 57).poc else
if  bn == RTHBar + start + 58 then TestPro(RTHBar,  start + 58).poc else
if  bn == RTHBar + start + 59 then TestPro(RTHBar,  start + 59).poc else
if  bn == RTHBar + start + 60 then TestPro(RTHBar,  start + 60).poc else
na;

plot
LoVA = if   bn > HighestAll(RTHBar)
       then lva else na;
plot
HiVA = if   bn > HighestAll(RTHBar)
       then hva else na;
plot
PointOfControl = if   bn > HighestAll(RTHBar)
                 then poc else na;

LoVA.SetDefaultColor(Color.VIOLET);
LoVA.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
LoVA.EnableApproximation();
LoVA.SetLineWeight(2);
HiVA.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
HiVA.SetDefaultColor(Color.VIOLET);
HiVA.EnableApproximation();
HiVA.SetLineWeight(2);
PointOfControl.SetDefaultColor(Color.YELLOW);
PointOfControl.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
PointOfControl.EnableApproximation();
PointOfControl.SetLineWeight(2);

AddCloud(close, PointOfControl, color1 = Color.GREEN, showBorder = yes);

#POC Variance to Close
input label_VAR = no;
AddLabel(label_VAR, "Close: " + AsText(close) + " POC: " + AsText(PointOfControl) + " %Var: " + AsPercent((close - PointOfControl) / PointOfControl), if close > PointOfControl then Color.GREEN else if close < PointOfControl then Color.RED else Color.WHITE);


#Cloud - Close Proximity to Pointofcontrol
input showcloud = yes;
def rthrs = Between(GetTime(), RegularTradingStart(GetYYYYMMDD()),
                    RegularTradingEnd(GetYYYYMMDD()));
def crossbn     = if close crosses PointOfControl then bn else Double.NaN;
def touch       = Between(PointOfControl, low, high);
AddCloud(if showcloud and !touch and bn >= HighestAll(crossbn)
         then close
         else Double.NaN,
         PointOfControl,
         Color.GREEN, Color.RED);

#Vertical lines when close crosses POC
input showvertical = yes;
AddVerticalLine(showvertical and rthrs and close crosses PointOfControl,
                "",
                if close crosses above PointOfControl
                then Color.GREEN
                else Color.RED, stroke = Curve.FIRM);
;

#Bubble POC Variance to close
input bubble_VAR   = yes;
input bubbleoffset = 1;

AddChartBubble(rthrs and bubble_VAR and RTHBar > start,
               low - bubbleoffset * TickSize(),
               AsPercent((close - PointOfControl) / PointOfControl),
               if close > PointOfControl then Color.GREEN
               else if close < PointOfControl
               then Color.RED else Color.WHITE, no);


#Buying/Selling Pressure
input length = 10;

def O = open;
def H = high;
def C = close;
def L = low;
def V = volume;
def Buying  = V * (C - L) / (H - L);
def Selling = V * (H - C) / (H - L);
def Delt    = Buying - Selling;

#Delta
plot Delta = Delt;
Delta.AssignValueColor(if Delta > 0 then Color.GREEN else Color.RED);
Delta.SetPaintingStrategy(PaintingStrategy.HISTOGRAM);
Delta.Hide();

#Bubble Delta
input bubble_delta = yes;
AddChartBubble(rthrs and bubble_delta and !IsNaN(close) and RTHBar > start, low - bubbleoffset * TickSize(),
               if AbsValue(Delta) > 1000
               then Round(Delta / 1000, 0) + "k"
               else Delta + "",
               Delta.TakeValueColor(), no);

#Delta Average for avg_length input bars, excluding the current bar
input label_delta_avg = yes;
input avglength       = 3;
def   delta_avg       = Sum(Delta[1], avglength) / avglength;
AddLabel(label_delta_avg, " ", Color.BLACK);
AddLabel(label_delta_avg,
        "Delta Avg " + avglength + " bars: " +
        (if AbsValue(delta_avg) > 1000
         then Round(delta_avg / 1000, 0) + "k"
         else delta_avg + ""),
         if delta_avg > 0 then Color.GREEN else Color.RED);

#Delta Spike
input showspike = yes;
input spike     = 200000;

plot delta_spike = if !showspike then Double.NaN
                   else if Delta > +spike
                   then high
                   else if Delta < -spike
                   then low else 0;
delta_spike.SetPaintingStrategy(PaintingStrategy.TRIANGLES);
delta_spike.SetDefaultColor(Color.YELLOW);
delta_spike.SetLineWeight(5);

#Cumulative Delta
def CumulativeVolumeDelta = Sum(Delta, length);
input pricecolor = yes;
AssignPriceColor(if !pricecolor then Color.CURRENT else
                 if CumulativeVolumeDelta > 0
                 then Color.GREEN           
                 else Color.RED);
 
Last edited:
This latest one is acting strange. I have it on today 1 minute and its leaving the triangles behind and only floating 40 then 20 now 11 candles its getting smaller and smaller overtime 😂

Just spent another day watching. You are right, what worked in OnDemand did not during live hours.

The following worked all day and tested okay in OnDemand also.

Ruby:
#VolumeProfile_bar_bar_78bars
#Priceline
input priceline  = yes;
def price  = if IsNaN(close) then price[1] else close;
plot cline = if IsNaN(close[-1]) then price else Double.NaN;
cline.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
AddChartBubble(priceline and IsNaN(cline[4]) and !IsNaN(cline[3]),
               cline,
               AsText(price),
               if close[4] > open[4] then Color.GREEN else Color.RED);

#VolumeProfile_bar_by_bar_Flexible_98_Iterations

#POC
#VolumeProfile_78_bar_by_bar

# plots POC, VAH and VAL for profiles starting at RTH Open and ending 1,2,3 etc bars later
# Not a realistic solution to the problem
# Nube
# 20220712 Sleepyz - Modified Nube's (TOS lounge) script to add additional else if statements to allow this to track these 3 variables on 5m and greater intraday periods. This can be very resource intense

input start_type   = {default autostart, manualstart};
input manual_start = 0;

def bn = BarNumber();
def na = Double.NaN;

script TestPro {
    input Start = 1;
    input nBars = 0;
    def bn    = BarNumber();
    def na    = Double.NaN;
    def EndBar        = if   bn == Start + nBars
                        then bn else EndBar[1];
    def NewProfile    = bn == Start or
                        bn crosses above EndBar;

    profile testProfile = VolumeProfile("startNewProfile" = NewProfile
, "onExpansion" = no, "numberOfProfiles" = 99, "pricePerRow" = TickSize(), "value area percent" = 70);

    plot hva = if   bn == EndBar
           then testProfile.GetHighestValueArea()
           else na;
    plot lva = if   bn == EndBar
           then testProfile.GetLowestValueArea()
           else na;
    plot poc = if   bn == EndBar
           then testProfile.GetPointOfControl()
           else na;
}
def RTHOpen = GetDay() == GetLastDay()  &&
              GetTime() crosses above RegularTradingStart(GetYYYYMMDD());

def RTHBar  = HighestAll(CompoundValue(1,
              if RTHOpen
              then bn - 1
              else Double.NaN, 0));

def count = if bn < RTHBar or
            GetTime() > RegularTradingEnd(GetYYYYMMDD())
            then 0
            else if GetTime() crosses above RegularTradingStart(GetYYYYMMDD())
            then 1
            else if GetTime() < RegularTradingEnd(GetYYYYMMDD()) then count[1] + 1
            else Double.NaN
            ;

def move  = if bn < RTHBar or
            GetTime() > RegularTradingEnd(GetYYYYMMDD())
            then 0
            else if Between(count, 1, 60)
            then 0
            else if Between(count, 61, 370)
            then count - 79
            else 340
            ;


def start = if start_type == start_type.manualstart
            then manual_start
            else if start_type == start_type.autostart then if bn < RTHBar or
            GetTime() > RegularTradingEnd(GetYYYYMMDD())
            then 0
            else HighestAll(GetValue(absvalue(move), 1))
            else 0;


def hva =
if  bn == RTHBar + start + 1 then TestPro(RTHBar,  start + 1).hva else
if  bn == RTHBar + start + 2 then TestPro(RTHBar,  start + 2).hva else
if  bn == RTHBar + start + 3 then TestPro(RTHBar,  start + 3).hva else
if  bn == RTHBar + start + 4 then TestPro(RTHBar,  start + 4).hva else
if  bn == RTHBar + start + 5 then TestPro(RTHBar,  start + 5).hva else
if  bn == RTHBar + start + 6 then TestPro(RTHBar,  start + 6).hva else
if  bn == RTHBar + start + 7 then TestPro(RTHBar,  start + 7).hva else
if  bn == RTHBar + start + 8 then TestPro(RTHBar,  start + 8).hva else
if  bn == RTHBar + start + 9 then TestPro(RTHBar,  start + 9).hva else
if  bn == RTHBar + start + 10 then TestPro(RTHBar,  start + 10).hva else
if  bn == RTHBar + start + 11 then TestPro(RTHBar,  start + 11).hva else
if  bn == RTHBar + start + 12 then TestPro(RTHBar,  start + 12).hva else
if  bn == RTHBar + start + 13 then TestPro(RTHBar,  start + 13).hva else
if  bn == RTHBar + start + 14 then TestPro(RTHBar,  start + 14).hva else
if  bn == RTHBar + start + 15 then TestPro(RTHBar,  start + 15).hva else
if  bn == RTHBar + start + 16 then TestPro(RTHBar,  start + 16).hva else
if  bn == RTHBar + start + 17 then TestPro(RTHBar,  start + 17).hva else
if  bn == RTHBar + start + 18 then TestPro(RTHBar,  start + 18).hva else
if  bn == RTHBar + start + 19 then TestPro(RTHBar,  start + 19).hva else
if  bn == RTHBar + start + 20 then TestPro(RTHBar,  start + 20).hva else
if  bn == RTHBar + start + 21 then TestPro(RTHBar,  start + 21).hva else
if  bn == RTHBar + start + 22 then TestPro(RTHBar,  start + 22).hva else
if  bn == RTHBar + start + 23 then TestPro(RTHBar,  start + 23).hva else
if  bn == RTHBar + start + 24 then TestPro(RTHBar,  start + 24).hva else
if  bn == RTHBar + start + 25 then TestPro(RTHBar,  start + 25).hva else
if  bn == RTHBar + start + 26 then TestPro(RTHBar,  start + 26).hva else
if  bn == RTHBar + start + 27 then TestPro(RTHBar,  start + 27).hva else
if  bn == RTHBar + start + 28 then TestPro(RTHBar,  start + 28).hva else
if  bn == RTHBar + start + 29 then TestPro(RTHBar,  start + 29).hva else
if  bn == RTHBar + start + 30 then TestPro(RTHBar,  start + 30).hva else
if  bn == RTHBar + start + 31 then TestPro(RTHBar,  start + 31).hva else
if  bn == RTHBar + start + 32 then TestPro(RTHBar,  start + 32).hva else
if  bn == RTHBar + start + 33 then TestPro(RTHBar,  start + 33).hva else
if  bn == RTHBar + start + 34 then TestPro(RTHBar,  start + 34).hva else
if  bn == RTHBar + start + 35 then TestPro(RTHBar,  start + 35).hva else
if  bn == RTHBar + start + 36 then TestPro(RTHBar,  start + 36).hva else
if  bn == RTHBar + start + 37 then TestPro(RTHBar,  start + 37).hva else
if  bn == RTHBar + start + 38 then TestPro(RTHBar,  start + 38).hva else
if  bn == RTHBar + start + 39 then TestPro(RTHBar,  start + 39).hva else
if  bn == RTHBar + start + 40 then TestPro(RTHBar,  start + 40).hva else
if  bn == RTHBar + start + 41 then TestPro(RTHBar,  start + 41).hva else
if  bn == RTHBar + start + 42 then TestPro(RTHBar,  start + 42).hva else
if  bn == RTHBar + start + 43 then TestPro(RTHBar,  start + 43).hva else
if  bn == RTHBar + start + 44 then TestPro(RTHBar,  start + 44).hva else
if  bn == RTHBar + start + 45 then TestPro(RTHBar,  start + 45).hva else
if  bn == RTHBar + start + 46 then TestPro(RTHBar,  start + 46).hva else
if  bn == RTHBar + start + 47 then TestPro(RTHBar,  start + 47).hva else
if  bn == RTHBar + start + 48 then TestPro(RTHBar,  start + 48).hva else
if  bn == RTHBar + start + 49 then TestPro(RTHBar,  start + 49).hva else
if  bn == RTHBar + start + 50 then TestPro(RTHBar,  start + 50).hva else
if  bn == RTHBar + start + 51 then TestPro(RTHBar,  start + 51).hva else
if  bn == RTHBar + start + 52 then TestPro(RTHBar,  start + 52).hva else
if  bn == RTHBar + start + 53 then TestPro(RTHBar,  start + 53).hva else
if  bn == RTHBar + start + 54 then TestPro(RTHBar,  start + 54).hva else
if  bn == RTHBar + start + 55 then TestPro(RTHBar,  start + 55).hva else
if  bn == RTHBar + start + 56 then TestPro(RTHBar,  start + 56).hva else
if  bn == RTHBar + start + 57 then TestPro(RTHBar,  start + 57).hva else
if  bn == RTHBar + start + 58 then TestPro(RTHBar,  start + 58).hva else
if  bn == RTHBar + start + 59 then TestPro(RTHBar,  start + 59).hva else
if  bn == RTHBar + start + 60 then TestPro(RTHBar,  start + 60).hva else
na;

def lva =
if  bn == RTHBar + start + 1 then TestPro(RTHBar,  start + 1).lva else
if  bn == RTHBar + start + 2 then TestPro(RTHBar,  start + 2).lva else
if  bn == RTHBar + start + 3 then TestPro(RTHBar,  start + 3).lva else
if  bn == RTHBar + start + 4 then TestPro(RTHBar,  start + 4).lva else
if  bn == RTHBar + start + 5 then TestPro(RTHBar,  start + 5).lva else
if  bn == RTHBar + start + 6 then TestPro(RTHBar,  start + 6).lva else
if  bn == RTHBar + start + 7 then TestPro(RTHBar,  start + 7).lva else
if  bn == RTHBar + start + 8 then TestPro(RTHBar,  start + 8).lva else
if  bn == RTHBar + start + 9 then TestPro(RTHBar,  start + 9).lva else
if  bn == RTHBar + start + 10 then TestPro(RTHBar,  start + 10).lva else
if  bn == RTHBar + start + 11 then TestPro(RTHBar,  start + 11).lva else
if  bn == RTHBar + start + 12 then TestPro(RTHBar,  start + 12).lva else
if  bn == RTHBar + start + 13 then TestPro(RTHBar,  start + 13).lva else
if  bn == RTHBar + start + 14 then TestPro(RTHBar,  start + 14).lva else
if  bn == RTHBar + start + 15 then TestPro(RTHBar,  start + 15).lva else
if  bn == RTHBar + start + 16 then TestPro(RTHBar,  start + 16).lva else
if  bn == RTHBar + start + 17 then TestPro(RTHBar,  start + 17).lva else
if  bn == RTHBar + start + 18 then TestPro(RTHBar,  start + 18).lva else
if  bn == RTHBar + start + 19 then TestPro(RTHBar,  start + 19).lva else
if  bn == RTHBar + start + 20 then TestPro(RTHBar,  start + 20).lva else
if  bn == RTHBar + start + 21 then TestPro(RTHBar,  start + 21).lva else
if  bn == RTHBar + start + 22 then TestPro(RTHBar,  start + 22).lva else
if  bn == RTHBar + start + 23 then TestPro(RTHBar,  start + 23).lva else
if  bn == RTHBar + start + 24 then TestPro(RTHBar,  start + 24).lva else
if  bn == RTHBar + start + 25 then TestPro(RTHBar,  start + 25).lva else
if  bn == RTHBar + start + 26 then TestPro(RTHBar,  start + 26).lva else
if  bn == RTHBar + start + 27 then TestPro(RTHBar,  start + 27).lva else
if  bn == RTHBar + start + 28 then TestPro(RTHBar,  start + 28).lva else
if  bn == RTHBar + start + 29 then TestPro(RTHBar,  start + 29).lva else
if  bn == RTHBar + start + 30 then TestPro(RTHBar,  start + 30).lva else
if  bn == RTHBar + start + 31 then TestPro(RTHBar,  start + 31).lva else
if  bn == RTHBar + start + 32 then TestPro(RTHBar,  start + 32).lva else
if  bn == RTHBar + start + 33 then TestPro(RTHBar,  start + 33).lva else
if  bn == RTHBar + start + 34 then TestPro(RTHBar,  start + 34).lva else
if  bn == RTHBar + start + 35 then TestPro(RTHBar,  start + 35).lva else
if  bn == RTHBar + start + 36 then TestPro(RTHBar,  start + 36).lva else
if  bn == RTHBar + start + 37 then TestPro(RTHBar,  start + 37).lva else
if  bn == RTHBar + start + 38 then TestPro(RTHBar,  start + 38).lva else
if  bn == RTHBar + start + 39 then TestPro(RTHBar,  start + 39).lva else
if  bn == RTHBar + start + 40 then TestPro(RTHBar,  start + 40).lva else
if  bn == RTHBar + start + 41 then TestPro(RTHBar,  start + 41).lva else
if  bn == RTHBar + start + 42 then TestPro(RTHBar,  start + 42).lva else
if  bn == RTHBar + start + 43 then TestPro(RTHBar,  start + 43).lva else
if  bn == RTHBar + start + 44 then TestPro(RTHBar,  start + 44).lva else
if  bn == RTHBar + start + 45 then TestPro(RTHBar,  start + 45).lva else
if  bn == RTHBar + start + 46 then TestPro(RTHBar,  start + 46).lva else
if  bn == RTHBar + start + 47 then TestPro(RTHBar,  start + 47).lva else
if  bn == RTHBar + start + 48 then TestPro(RTHBar,  start + 48).lva else
if  bn == RTHBar + start + 49 then TestPro(RTHBar,  start + 49).lva else
if  bn == RTHBar + start + 50 then TestPro(RTHBar,  start + 50).lva else
if  bn == RTHBar + start + 51 then TestPro(RTHBar,  start + 51).lva else
if  bn == RTHBar + start + 52 then TestPro(RTHBar,  start + 52).lva else
if  bn == RTHBar + start + 53 then TestPro(RTHBar,  start + 53).lva else
if  bn == RTHBar + start + 54 then TestPro(RTHBar,  start + 54).lva else
if  bn == RTHBar + start + 55 then TestPro(RTHBar,  start + 55).lva else
if  bn == RTHBar + start + 56 then TestPro(RTHBar,  start + 56).lva else
if  bn == RTHBar + start + 57 then TestPro(RTHBar,  start + 57).lva else
if  bn == RTHBar + start + 58 then TestPro(RTHBar,  start + 58).lva else
if  bn == RTHBar + start + 59 then TestPro(RTHBar,  start + 59).lva else
if  bn == RTHBar + start + 60 then TestPro(RTHBar,  start + 60).lva else
na;

def poc =
if  bn == RTHBar + start + 1 then TestPro(RTHBar,  start + 1).poc else
if  bn == RTHBar + start + 2 then TestPro(RTHBar,  start + 2).poc else
if  bn == RTHBar + start + 3 then TestPro(RTHBar,  start + 3).poc else
if  bn == RTHBar + start + 4 then TestPro(RTHBar,  start + 4).poc else
if  bn == RTHBar + start + 5 then TestPro(RTHBar,  start + 5).poc else
if  bn == RTHBar + start + 6 then TestPro(RTHBar,  start + 6).poc else
if  bn == RTHBar + start + 7 then TestPro(RTHBar,  start + 7).poc else
if  bn == RTHBar + start + 8 then TestPro(RTHBar,  start + 8).poc else
if  bn == RTHBar + start + 9 then TestPro(RTHBar,  start + 9).poc else
if  bn == RTHBar + start + 10 then TestPro(RTHBar,  start + 10).poc else
if  bn == RTHBar + start + 11 then TestPro(RTHBar,  start + 11).poc else
if  bn == RTHBar + start + 12 then TestPro(RTHBar,  start + 12).poc else
if  bn == RTHBar + start + 13 then TestPro(RTHBar,  start + 13).poc else
if  bn == RTHBar + start + 14 then TestPro(RTHBar,  start + 14).poc else
if  bn == RTHBar + start + 15 then TestPro(RTHBar,  start + 15).poc else
if  bn == RTHBar + start + 16 then TestPro(RTHBar,  start + 16).poc else
if  bn == RTHBar + start + 17 then TestPro(RTHBar,  start + 17).poc else
if  bn == RTHBar + start + 18 then TestPro(RTHBar,  start + 18).poc else
if  bn == RTHBar + start + 19 then TestPro(RTHBar,  start + 19).poc else
if  bn == RTHBar + start + 20 then TestPro(RTHBar,  start + 20).poc else
if  bn == RTHBar + start + 21 then TestPro(RTHBar,  start + 21).poc else
if  bn == RTHBar + start + 22 then TestPro(RTHBar,  start + 22).poc else
if  bn == RTHBar + start + 23 then TestPro(RTHBar,  start + 23).poc else
if  bn == RTHBar + start + 24 then TestPro(RTHBar,  start + 24).poc else
if  bn == RTHBar + start + 25 then TestPro(RTHBar,  start + 25).poc else
if  bn == RTHBar + start + 26 then TestPro(RTHBar,  start + 26).poc else
if  bn == RTHBar + start + 27 then TestPro(RTHBar,  start + 27).poc else
if  bn == RTHBar + start + 28 then TestPro(RTHBar,  start + 28).poc else
if  bn == RTHBar + start + 29 then TestPro(RTHBar,  start + 29).poc else
if  bn == RTHBar + start + 30 then TestPro(RTHBar,  start + 30).poc else
if  bn == RTHBar + start + 31 then TestPro(RTHBar,  start + 31).poc else
if  bn == RTHBar + start + 32 then TestPro(RTHBar,  start + 32).poc else
if  bn == RTHBar + start + 33 then TestPro(RTHBar,  start + 33).poc else
if  bn == RTHBar + start + 34 then TestPro(RTHBar,  start + 34).poc else
if  bn == RTHBar + start + 35 then TestPro(RTHBar,  start + 35).poc else
if  bn == RTHBar + start + 36 then TestPro(RTHBar,  start + 36).poc else
if  bn == RTHBar + start + 37 then TestPro(RTHBar,  start + 37).poc else
if  bn == RTHBar + start + 38 then TestPro(RTHBar,  start + 38).poc else
if  bn == RTHBar + start + 39 then TestPro(RTHBar,  start + 39).poc else
if  bn == RTHBar + start + 40 then TestPro(RTHBar,  start + 40).poc else
if  bn == RTHBar + start + 41 then TestPro(RTHBar,  start + 41).poc else
if  bn == RTHBar + start + 42 then TestPro(RTHBar,  start + 42).poc else
if  bn == RTHBar + start + 43 then TestPro(RTHBar,  start + 43).poc else
if  bn == RTHBar + start + 44 then TestPro(RTHBar,  start + 44).poc else
if  bn == RTHBar + start + 45 then TestPro(RTHBar,  start + 45).poc else
if  bn == RTHBar + start + 46 then TestPro(RTHBar,  start + 46).poc else
if  bn == RTHBar + start + 47 then TestPro(RTHBar,  start + 47).poc else
if  bn == RTHBar + start + 48 then TestPro(RTHBar,  start + 48).poc else
if  bn == RTHBar + start + 49 then TestPro(RTHBar,  start + 49).poc else
if  bn == RTHBar + start + 50 then TestPro(RTHBar,  start + 50).poc else
if  bn == RTHBar + start + 51 then TestPro(RTHBar,  start + 51).poc else
if  bn == RTHBar + start + 52 then TestPro(RTHBar,  start + 52).poc else
if  bn == RTHBar + start + 53 then TestPro(RTHBar,  start + 53).poc else
if  bn == RTHBar + start + 54 then TestPro(RTHBar,  start + 54).poc else
if  bn == RTHBar + start + 55 then TestPro(RTHBar,  start + 55).poc else
if  bn == RTHBar + start + 56 then TestPro(RTHBar,  start + 56).poc else
if  bn == RTHBar + start + 57 then TestPro(RTHBar,  start + 57).poc else
if  bn == RTHBar + start + 58 then TestPro(RTHBar,  start + 58).poc else
if  bn == RTHBar + start + 59 then TestPro(RTHBar,  start + 59).poc else
if  bn == RTHBar + start + 60 then TestPro(RTHBar,  start + 60).poc else
na;

plot
LoVA = if   bn > HighestAll(RTHBar)
       then lva else na;
plot
HiVA = if   bn > HighestAll(RTHBar)
       then hva else na;
plot
PointOfControl = if   bn > HighestAll(RTHBar)
                 then poc else na;

LoVA.SetDefaultColor(Color.VIOLET);
LoVA.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
LoVA.EnableApproximation();
LoVA.SetLineWeight(2);
HiVA.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
HiVA.SetDefaultColor(Color.VIOLET);
HiVA.EnableApproximation();
HiVA.SetLineWeight(2);
PointOfControl.SetDefaultColor(Color.YELLOW);
PointOfControl.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
PointOfControl.EnableApproximation();
PointOfControl.SetLineWeight(2);

AddCloud(close, PointOfControl, color1 = Color.GREEN, showBorder = yes);

#POC Variance to Close
input label_VAR = no;
AddLabel(label_VAR, "Close: " + AsText(close) + " POC: " + AsText(PointOfControl) + " %Var: " + AsPercent((close - PointOfControl) / PointOfControl), if close > PointOfControl then Color.GREEN else if close < PointOfControl then Color.RED else Color.WHITE);


#Cloud - Close Proximity to Pointofcontrol
input showcloud = yes;
def rthrs = Between(GetTime(), RegularTradingStart(GetYYYYMMDD()),
                    RegularTradingEnd(GetYYYYMMDD()));
def crossbn     = if close crosses PointOfControl then bn else Double.NaN;
def touch       = Between(PointOfControl, low, high);
AddCloud(if showcloud and !touch and bn >= HighestAll(crossbn)
         then close
         else Double.NaN,
         PointOfControl,
         Color.GREEN, Color.RED);

#Vertical lines when close crosses POC
input showvertical = yes;
AddVerticalLine(showvertical and rthrs and close crosses PointOfControl,
                "",
                if close crosses above PointOfControl
                then Color.GREEN
                else Color.RED, stroke = Curve.FIRM);
;

#Bubble POC Variance to close
input bubble_VAR   = yes;
input bubbleoffset = 1;

AddChartBubble(rthrs and bubble_VAR and RTHBar > start,
               low - bubbleoffset * TickSize(),
               AsPercent((close - PointOfControl) / PointOfControl),
               if close > PointOfControl then Color.GREEN
               else if close < PointOfControl
               then Color.RED else Color.WHITE, no);


#Buying/Selling Pressure
input length = 10;

def O = open;
def H = high;
def C = close;
def L = low;
def V = volume;
def Buying  = V * (C - L) / (H - L);
def Selling = V * (H - C) / (H - L);
def Delt    = Buying - Selling;

#Delta
plot Delta = Delt;
Delta.AssignValueColor(if Delta > 0 then Color.GREEN else Color.RED);
Delta.SetPaintingStrategy(PaintingStrategy.HISTOGRAM);
Delta.Hide();

#Bubble Delta
input bubble_delta = yes;
AddChartBubble(rthrs and bubble_delta and !IsNaN(close) and RTHBar > start, low - bubbleoffset * TickSize(),
               if AbsValue(Delta) > 1000
               then Round(Delta / 1000, 0) + "k"
               else Delta + "",
               Delta.TakeValueColor(), no);

#Delta Average for avg_length input bars, excluding the current bar
input label_delta_avg = yes;
input avglength       = 3;
def   delta_avg       = Sum(Delta[1], avglength) / avglength;
AddLabel(label_delta_avg, " ", Color.BLACK);
AddLabel(label_delta_avg,
        "Delta Avg " + avglength + " bars: " +
        (if AbsValue(delta_avg) > 1000
         then Round(delta_avg / 1000, 0) + "k"
         else delta_avg + ""),
         if delta_avg > 0 then Color.GREEN else Color.RED);

#Delta Spike
input showspike = yes;
input spike     = 200000;

plot delta_spike = if !showspike then Double.NaN
                   else if Delta > +spike
                   then high
                   else if Delta < -spike
                   then low else 0;
delta_spike.SetPaintingStrategy(PaintingStrategy.TRIANGLES);
delta_spike.SetDefaultColor(Color.YELLOW);
delta_spike.SetLineWeight(5);

#Cumulative Delta
def CumulativeVolumeDelta = Sum(Delta, length);
input pricecolor = yes;
AssignPriceColor(if !pricecolor then Color.CURRENT else
                 if CumulativeVolumeDelta > 0
                 then Color.GREEN           
                 else Color.RED);
;
 
Latest version is POST # 50 correct?
Yes, that is what seems to work the last 3 days. At around 1530 it gets a little limited but stays on track and expands into the close. Otherwise, it is mostly 60 bars of floating POC and VAH/VAL. I have a normal VolumeProfile running to see it stays in sync with.
 
Yes, that is what seems to work the last 3 days. At around 1530 it gets a little limited but stays on track and expands into the close. Otherwise, it is mostly 60 bars of floating POC and VAH/VAL. I have a normal VolumeProfile running to see it stays in sync with.
Ok Thank you. I dont know about you but this for me works really well for getting in and out on a few candle moves this to me is the best indicator I ever had.
 
Here is a share link with most of the bubbles, etc turned off so you can see it working on a 1m TODAY chart that I was running in OnDemand. It may take a little time for it to load.

https://tos.mx/mZNzMfr
BTW I like how your code is organized it helps to understand what is doing what. I canabalized the pricline code to put on another chart. Slowly understanding thinkscript albeit at a newbie level. I shouldve paid attention to those coding class in high school back in the 80s. On the apple 2 in junior high and macintosh in high school. Little did I know 🙁
 

Similar threads

Not the exact question you're looking for?

Start a new thread and receive assistance from our community.

87k+ Posts
343 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