#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);