Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 11

//@version=4

//|—————————————————————————————————————————————————————————
//| Name: V-Profile
//| Version: 1.3
//| Date: 11.11.2020
//| Autor: Haft (by EulerMethod)
//|—————————————————————————————————————————————————————————
//| Tradingview: https://ru.tradingview.com/u/EulerMethod
//|—————————————————————————————————————————————————————————

//|
———————————————————————————————————————————————————————————————————————————————————
————————————————
//| Title | Variable | Type | Description |
Описание
//|
———————————————————————————————————————————————————————————————————————————————————
————————————————
//| On Δ | Off Σ | input_delta | boolean | Delta or Cumulative | Дельта
или Кумулятивный
//| POC | input_poc | boolean | Point of Control | Точка
контроля
//|——————————————————|———————————————|—————————|——————————————————————————|
———————————————————————————
//| Depth [20; 1k] | input_depth | integer | Depth of history | Глубина
истории
//| Range ± | input_range | boolean | Floating range |
Плавающий диапазон
//| ∟ % [0.1; 30] | input_persent | float | Floating range % |
Плавающий диапазон %
//| Scale Lg | input_log10 | boolean | Logarithmic scale |
Логарифмическая шкала
//|——————————————————|———————————————|—————————|——————————————————————————|
———————————————————————————
//| Amp [10; 100] | input_amp | integer | Amplitude of histogram |
Амплитуда гистограммы
//| Dot size | input_size | integer | Histogram dot size | Размер
точек гистограммы
//|——————————————————|———————————————|—————————|——————————————————————————|
———————————————————————————
//| Color: # | input_c_# | color | Palette | Палитра
//|
———————————————————————————————————————————————————————————————————————————————————
————————————————

study(
title = "V-Profile",
shorttitle = "V-Profile",
precision = 4,
overlay = true,
linktoseries = true,
max_bars_back = 1000
)
///////////////////////
// //
// INTERFACE //
// //
///////////////////////

//MOD'S
bool input_delta = input( title = "Delta", type = input.bool,
defval = false )
bool input_poc = input( title = "POC", type = input.bool,
defval = false )

//FRAME: Y
int input_depth = input( title = "Depth [10; 1k]", type = input.integer,
defval = 100, minval = 10, maxval = 1000 )
bool input_range = input( title = "Range ±", type = input.bool,
defval = false )
float input_persent = input( title = "∟ % [0.1; 50]", type = input.float,
defval = 5, minval = 0.1, maxval = 50, step = 0.1 )
bool input_log10 = input( title = "Scale Lg", type = input.bool,
defval = false )

//FRAME: X
int input_amp = input( title = "Amp [10; 100]", type = input.integer,
defval = 50, minval = 10, maxval = 100 )
int input_size = input( title = "Dot size", type = input.integer,
defval = 1, minval = 1, maxval = 3 )

//PALETTE
color input_c_info = input( title = "Color: Info", type = input.color,
defval = color.new(#FFFFFF, 0) ) //EM color White
color input_c_frame = input( title = "Color: Frame", type = input.color,
defval = color.new(#617793, 0) ) //EM color Palladium
color input_c_total = input( title = "Color: Σ", type = input.color,
defval = color.new(#00C3D3, 0) ) //EM color Palladium
color input_c_plus = input( title = "Color: Δ +", type = input.color,
defval = color.new(#1BDB00, 0) ) //EM color Green
color input_c_minus = input( title = "Color: Δ –", type = input.color,
defval = color.new(#E60000, 0) ) //EM color Blue

//////////////////
// //
// DATA //
// //
//////////////////

//// FRAME

//ath & atl


float FH = na, float FL = na, float rn = na

//true depth
int depth = input_depth

//first bar time


var int time_first = time

//// ROWS DATA

var R = array.new_float(50, 0) //Row (price)


var TV = array.new_float(50, 0) //Total: Value
var TA = array.new_int (50, 0) //Total: Amp
var TP = array.new_bool (50, false) //Total: Peak
float TM = 1 //Total: Max Value
var DV = array.new_float(50, 0) //Delta: Value
var DA = array.new_int (50, 0) //Delta: Amp
var DP = array.new_bool (50, false) //Delta: Peak

//// POC

float POC = na
float POC_DP = na
float POC_DN = na

//// INTERFACE

//text
string txt_top = input_range ? "+ " + tostring(input_persent, "0.0") + " %" : " " +
(input_amp < 20 ? "H ⇅ L" : "HIGH ⇅ LOW")
string txt_btm = "❮ " + tostring(input_depth)

//size
var dot_size = input_size == 1 ? size.tiny : input_size == 2 ? size.small :
size.normal

//invisible
var color c_opacity = color.new(color.white, 100)

////////////////////////
// //
// EXCEPTIONS //
// //
////////////////////////

bool exception_no_volume = nz(volume) == 0


bool exception_excess_depth = na(close[input_depth])
bool exception_bug_minute = timeframe.period == "1"

//// EXCEPTION HANDLING

//no volume
if exception_no_volume
txt_top := input_amp < 20 ? "🚫" : "🚫 NO VOLUME"
//depth correction
if exception_excess_depth and barstate.islast
for i = 2 to input_depth
if na(close[i])
depth := i, break
txt_btm := "❮ " + tostring(depth)

//////////////////////////
// //
// CALCULATIONS //
// //
//////////////////////////

//// FRAME

//ath & atl


if input_range
rn := hl2 * input_persent / 100
FH := hl2 + rn
FL := hl2 - rn
else
FH := highest(high, depth)
FL := lowest(low, depth)

//time_first bar time


if barstate.isfirst
time_first := time

//// FUNCTIONS

//row axis
float axis_step = (input_log10 ? log10(FH / FL) : FH - FL) / 50 //step (logarithmic
or linear)
Axis(i) => input_log10 ? pow(10, log10(FL) + i * axis_step) : FL + i * axis_step //
i steps

//drawing histogram
Histogram(i) =>
string T = (input_delta and array.get(DP, i)) or (not input_delta and
array.get(TP, i)) ? "◄ " : " "
if array.get(TV, i) > 0
int D_ = array.get(DA, i)
for j = 0 to array.get(TA, i)
T := T + (input_delta ? (D_ > j ? "•" : " ‧") : "•")
else
T := " ‧"
T

//row color
Color(m) => input_delta and array.get(DA, m) != 0 ? (array.get(DV, m) > 0 ?
input_c_plus : input_c_minus) : input_c_total

//// MAIN
if barstate.islast and not exception_no_volume

//rows conformity to prices


for i = 0 to 49
array.set(R, i, Axis(i + 0.5)) //offset row axis — row-hight / 2

//full depth
for i = 0 to depth - 1

int C = 0 //denominator
TS = array.new_float(50, 0) //divisible volumes
DS = array.new_float(50, 0) //divisible deltas

//set TS & DS and denominator


for j = 0 to 49
float R_ = array.get(R, j)
if high[i] > R_ and R_ > low[i]
C := C + 1
array.set(TS, j, nz(volume[i]))
if input_delta
array.set(DS, j, nz(volume[i]) * (close[i] > R_ ? 1 : -1))

if C != 0

//if High or Low out of range


float K = 1 //cutoff factor [0; 1]
if input_range and (high[i] > Axis(50) or low[i] < Axis(0))
K := C / ((high[i] - low[i]) / (input_log10 ? pow(10, axis_step) :
axis_step))

//rows value
for j = 0 to 49
array.set(TV, j, array.get(TV, j) + (array.get(TS, j) * K / C ))
if input_delta
array.set(DV, j, array.get(DV, j) + (array.get(DS, j) *
K / C ))

array.clear(TS), array.clear(DS)

TM := array.max(TV)

for i = 0 to 49

//amplitude
array.set(TA, i, floor(input_amp * array.get(TV, i) / TM))

if not input_delta
//peak 4 < X > 4
float T_ = array.get(TV, i)
bool p4 = i - 4 < 0 ? true : T_ > array.get(TV, i - 4)
bool p3 = i - 3 < 0 ? true : T_ > array.get(TV, i - 3)
bool p2 = i - 2 < 0 ? true : T_ > array.get(TV, i - 2)
bool p1 = i - 1 < 0 ? true : T_ > array.get(TV, i - 1)
bool n1 = i + 1 > 49 ? true : T_ > array.get(TV, i + 1)
bool n2 = i + 2 > 49 ? true : T_ > array.get(TV, i + 2)
bool n3 = i + 3 > 49 ? true : T_ > array.get(TV, i + 3)
bool n4 = i + 4 > 49 ? true : T_ > array.get(TV, i + 4)
array.set(TP, i, p4 and p3 and p2 and p1 and n1 and n2 and n3 and
n4)

else
//amplitude
array.set(DA, i, floor(array.get(TA, i) * abs(array.get(DV, i)) /
array.get(TV, i)))

//peak 4 < X > 4


float D_ = abs(array.get(DV, i))
bool p4 = i - 4 < 0 ? true : D_ > abs(array.get(DV, i - 4))
bool p3 = i - 3 < 0 ? true : D_ > abs(array.get(DV, i - 3))
bool p2 = i - 2 < 0 ? true : D_ > abs(array.get(DV, i - 2))
bool p1 = i - 1 < 0 ? true : D_ > abs(array.get(DV, i - 1))
bool n1 = i + 1 > 49 ? true : D_ > abs(array.get(DV, i + 1))
bool n2 = i + 2 > 49 ? true : D_ > abs(array.get(DV, i + 2))
bool n3 = i + 3 > 49 ? true : D_ > abs(array.get(DV, i + 3))
bool n4 = i + 4 > 49 ? true : D_ > abs(array.get(DV, i + 4))
array.set(DP, i, p4 and p3 and p2 and p1 and n1 and n2 and n3 and
n4)

//POC
if input_poc

float sum = 0, float mass = 0


for i = 0 to 49
float V_ = array.get(TV, i)
sum := sum + V_
mass := mass + V_ * array.get(R, i)

POC := nz(mass / sum, na)

if input_delta and not exception_bug_minute


float seller_sum = 0, float seller_mass = 0
float buyer_sum = 0, float buyer_mass = 0

for i = 0 to 49
float R_ = array.get(R, i)
float D_ = array.get(DV, i)
seller_sum := seller_sum + (D_ < 0 ? D_ : 0)
seller_mass := seller_mass + (D_ < 0 ? D_ * R_ : 0)
buyer_sum := buyer_sum + (D_ > 0 ? D_ : 0)
buyer_mass := buyer_mass + (D_ > 0 ? D_ * R_ : 0)

POC_DN := nz(seller_mass / seller_sum, na)


POC_DP := nz(buyer_mass / buyer_sum, na)

//////////////////////
// //
// BUILDING //
// //
//////////////////////

//// POC

var line line_POC_DN = line.new(bar_index, na, bar_index, na,


style=line.style_dashed, color=input_c_minus)
var line line_POC_DP = line.new(bar_index, na, bar_index, na,
style=line.style_dashed, color=input_c_plus)
var line line_POC = line.new(bar_index, na, bar_index, na,
style=line.style_dashed, color=input_c_info)

//// INTERFACE

var label label_top = label.new(bar_index, FH, text=txt_top,


style=label.style_label_lower_left, textcolor=input_c_info, color=c_opacity,
size=size.normal)
var label label_btm = label.new(bar_index, FL, text=txt_btm,
style=label.style_label_upper_left, textcolor=input_c_info, color=c_opacity,
size=size.normal)

// FRAME

var line line_FH = line.new(bar_index, FH, bar_index, FH, color=input_c_frame,


style=line.style_dashed)
var line line_FL = line.new(bar_index, FL, bar_index, FL, color=input_c_frame,
style=line.style_dashed)
var line line_FS = line.new(bar_index, FL, bar_index, FL, color=input_c_frame,
style=line.style_dashed)

//// HISTOGRAM

int r1 = time_close
float r2 = close
string r3 = ""
color r4 = input_c_total
var r5 = xloc.bar_time
var r6 = yloc.price
color r7 = c_opacity
var r8 = label.style_label_left
var r9 = dot_size

var label R01 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,


color=r7, style=r8, size=r9)
var label R02 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R03 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R04 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R05 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R06 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R07 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R08 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R09 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R10 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R11 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R12 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R13 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R14 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R15 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R16 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R17 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R18 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R19 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R20 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R21 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R22 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R23 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R24 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R25 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R26 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R27 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R28 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R29 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R30 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R31 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R32 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R33 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R34 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R35 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R36 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R37 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R38 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R39 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R40 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R41 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R42 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R43 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R44 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R45 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R46 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R47 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R48 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R49 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)
var label R50 = label.new(r1, r2, text=r3, textcolor=r4, xloc=r5, yloc=r6,
color=r7, style=r8, size=r9)

//// SHIFT & REFRECH

if barstate.islast

//Frame: limits
int time_start = max(time[depth - 1], time_first)
int time_finish = time_close

//// INTERFACE

label.set_xloc(label_top, time_finish, xloc.bar_time)


label.set_y(label_top, FH)

label.set_xloc(label_btm, time_finish, xloc.bar_time)


label.set_y(label_btm, FL)
label.set_text(label_btm, txt_btm)

//// POC

line.set_xloc(line_POC, time_start, time_finish, xloc.bar_time)


line.set_y1(line_POC, POC)
line.set_y2(line_POC, POC)

line.set_xloc(line_POC_DN, time_start, time_finish, xloc.bar_time)


line.set_y1(line_POC_DN, POC_DN)
line.set_y2(line_POC_DN, POC_DN)

line.set_xloc(line_POC_DP, time_start, time_finish, xloc.bar_time)


line.set_y1(line_POC_DP, POC_DP)
line.set_y2(line_POC_DP, POC_DP)

//// FRAME
line.set_xloc(line_FH, time_start, time_finish, xloc.bar_time)
line.set_y1(line_FH, FH)
line.set_y2(line_FH, FH)

line.set_xloc(line_FL, time_start, time_finish, xloc.bar_time)


line.set_y1(line_FL, FL)
line.set_y2(line_FL, FL)

line.set_xloc(line_FS, time_start, time_start, xloc.bar_time)


line.set_y1(line_FS, FH)
line.set_y2(line_FS, FL)

//// HISTOGRAM

label.set_x(R01, time_finish), label.set_y(R01, array.get(R, 0)),


label.set_text(R01, Histogram( 0)), label.set_textcolor(R01, Color( 0))
label.set_x(R02, time_finish), label.set_y(R02, array.get(R, 1)),
label.set_text(R02, Histogram( 1)), label.set_textcolor(R02, Color( 1))
label.set_x(R03, time_finish), label.set_y(R03, array.get(R, 2)),
label.set_text(R03, Histogram( 2)), label.set_textcolor(R03, Color( 2))
label.set_x(R04, time_finish), label.set_y(R04, array.get(R, 3)),
label.set_text(R04, Histogram( 3)), label.set_textcolor(R04, Color( 3))
label.set_x(R05, time_finish), label.set_y(R05, array.get(R, 4)),
label.set_text(R05, Histogram( 4)), label.set_textcolor(R05, Color( 4))
label.set_x(R06, time_finish), label.set_y(R06, array.get(R, 5)),
label.set_text(R06, Histogram( 5)), label.set_textcolor(R06, Color( 5))
label.set_x(R07, time_finish), label.set_y(R07, array.get(R, 6)),
label.set_text(R07, Histogram( 6)), label.set_textcolor(R07, Color( 6))
label.set_x(R08, time_finish), label.set_y(R08, array.get(R, 7)),
label.set_text(R08, Histogram( 7)), label.set_textcolor(R08, Color( 7))
label.set_x(R09, time_finish), label.set_y(R09, array.get(R, 8)),
label.set_text(R09, Histogram( 8)), label.set_textcolor(R09, Color( 8))
label.set_x(R10, time_finish), label.set_y(R10, array.get(R, 9)),
label.set_text(R10, Histogram( 9)), label.set_textcolor(R10, Color( 9))
label.set_x(R11, time_finish), label.set_y(R11, array.get(R, 10)),
label.set_text(R11, Histogram(10)), label.set_textcolor(R11, Color(10))
label.set_x(R12, time_finish), label.set_y(R12, array.get(R, 11)),
label.set_text(R12, Histogram(11)), label.set_textcolor(R12, Color(11))
label.set_x(R13, time_finish), label.set_y(R13, array.get(R, 12)),
label.set_text(R13, Histogram(12)), label.set_textcolor(R13, Color(12))
label.set_x(R14, time_finish), label.set_y(R14, array.get(R, 13)),
label.set_text(R14, Histogram(13)), label.set_textcolor(R14, Color(13))
label.set_x(R15, time_finish), label.set_y(R15, array.get(R, 14)),
label.set_text(R15, Histogram(14)), label.set_textcolor(R15, Color(14))
label.set_x(R16, time_finish), label.set_y(R16, array.get(R, 15)),
label.set_text(R16, Histogram(15)), label.set_textcolor(R16, Color(15))
label.set_x(R17, time_finish), label.set_y(R17, array.get(R, 16)),
label.set_text(R17, Histogram(16)), label.set_textcolor(R17, Color(16))
label.set_x(R18, time_finish), label.set_y(R18, array.get(R, 17)),
label.set_text(R18, Histogram(17)), label.set_textcolor(R18, Color(17))
label.set_x(R19, time_finish), label.set_y(R19, array.get(R, 18)),
label.set_text(R19, Histogram(18)), label.set_textcolor(R19, Color(18))
label.set_x(R20, time_finish), label.set_y(R20, array.get(R, 19)),
label.set_text(R20, Histogram(19)), label.set_textcolor(R20, Color(19))
label.set_x(R21, time_finish), label.set_y(R21, array.get(R, 20)),
label.set_text(R21, Histogram(20)), label.set_textcolor(R21, Color(20))
label.set_x(R22, time_finish), label.set_y(R22, array.get(R, 21)),
label.set_text(R22, Histogram(21)), label.set_textcolor(R22, Color(21))
label.set_x(R23, time_finish), label.set_y(R23, array.get(R, 22)),
label.set_text(R23, Histogram(22)), label.set_textcolor(R23, Color(22))
label.set_x(R24, time_finish), label.set_y(R24, array.get(R, 23)),
label.set_text(R24, Histogram(23)), label.set_textcolor(R24, Color(23))
label.set_x(R25, time_finish), label.set_y(R25, array.get(R, 24)),
label.set_text(R25, Histogram(24)), label.set_textcolor(R25, Color(24))
label.set_x(R26, time_finish), label.set_y(R26, array.get(R, 25)),
label.set_text(R26, Histogram(25)), label.set_textcolor(R26, Color(25))
label.set_x(R27, time_finish), label.set_y(R27, array.get(R, 26)),
label.set_text(R27, Histogram(26)), label.set_textcolor(R27, Color(26))
label.set_x(R28, time_finish), label.set_y(R28, array.get(R, 27)),
label.set_text(R28, Histogram(27)), label.set_textcolor(R28, Color(27))
label.set_x(R29, time_finish), label.set_y(R29, array.get(R, 28)),
label.set_text(R29, Histogram(28)), label.set_textcolor(R29, Color(28))
label.set_x(R30, time_finish), label.set_y(R30, array.get(R, 29)),
label.set_text(R30, Histogram(29)), label.set_textcolor(R30, Color(29))
label.set_x(R31, time_finish), label.set_y(R31, array.get(R, 30)),
label.set_text(R31, Histogram(30)), label.set_textcolor(R31, Color(30))
label.set_x(R32, time_finish), label.set_y(R32, array.get(R, 31)),
label.set_text(R32, Histogram(31)), label.set_textcolor(R32, Color(31))
label.set_x(R33, time_finish), label.set_y(R33, array.get(R, 32)),
label.set_text(R33, Histogram(32)), label.set_textcolor(R33, Color(32))
label.set_x(R34, time_finish), label.set_y(R34, array.get(R, 33)),
label.set_text(R34, Histogram(33)), label.set_textcolor(R34, Color(33))
label.set_x(R35, time_finish), label.set_y(R35, array.get(R, 34)),
label.set_text(R35, Histogram(34)), label.set_textcolor(R35, Color(34))
label.set_x(R36, time_finish), label.set_y(R36, array.get(R, 35)),
label.set_text(R36, Histogram(35)), label.set_textcolor(R36, Color(35))
label.set_x(R37, time_finish), label.set_y(R37, array.get(R, 36)),
label.set_text(R37, Histogram(36)), label.set_textcolor(R37, Color(36))
label.set_x(R38, time_finish), label.set_y(R38, array.get(R, 37)),
label.set_text(R38, Histogram(37)), label.set_textcolor(R38, Color(37))
label.set_x(R39, time_finish), label.set_y(R39, array.get(R, 38)),
label.set_text(R39, Histogram(38)), label.set_textcolor(R39, Color(38))
label.set_x(R40, time_finish), label.set_y(R40, array.get(R, 39)),
label.set_text(R40, Histogram(39)), label.set_textcolor(R40, Color(39))
label.set_x(R41, time_finish), label.set_y(R41, array.get(R, 40)),
label.set_text(R41, Histogram(40)), label.set_textcolor(R41, Color(40))
label.set_x(R42, time_finish), label.set_y(R42, array.get(R, 41)),
label.set_text(R42, Histogram(41)), label.set_textcolor(R42, Color(41))
label.set_x(R43, time_finish), label.set_y(R43, array.get(R, 42)),
label.set_text(R43, Histogram(42)), label.set_textcolor(R43, Color(42))
label.set_x(R44, time_finish), label.set_y(R44, array.get(R, 43)),
label.set_text(R44, Histogram(43)), label.set_textcolor(R44, Color(43))
label.set_x(R45, time_finish), label.set_y(R45, array.get(R, 44)),
label.set_text(R45, Histogram(44)), label.set_textcolor(R45, Color(44))
label.set_x(R46, time_finish), label.set_y(R46, array.get(R, 45)),
label.set_text(R46, Histogram(45)), label.set_textcolor(R46, Color(45))
label.set_x(R47, time_finish), label.set_y(R47, array.get(R, 46)),
label.set_text(R47, Histogram(46)), label.set_textcolor(R47, Color(46))
label.set_x(R48, time_finish), label.set_y(R48, array.get(R, 47)),
label.set_text(R48, Histogram(47)), label.set_textcolor(R48, Color(47))
label.set_x(R49, time_finish), label.set_y(R49, array.get(R, 48)),
label.set_text(R49, Histogram(48)), label.set_textcolor(R49, Color(48))
label.set_x(R50, time_finish), label.set_y(R50, array.get(R, 49)),
label.set_text(R50, Histogram(49)), label.set_textcolor(R50, Color(49))

You might also like