# Poorman_volume_profile_02b
#finished by rrm411
#https://usethinkscript.com/threads/convert-tradingview-poor-mans-volume-profile.14460/
#post5
# replace max() at 500+ that find row max #s
#Poor man's volume profile
#https://www.tradingview.com/script/IWdpl712-Poor-man-s-volume-profile/
#1100 lines
#// © Ildar Akhmetgaleev (AkhIL)
#// See https://github.com/akhilman/vol-poorofile
#// vim: shiftwidth=2 tabstop=2
#study("Poor man's volume profile", "PMVolProf", overlay=true, max_bars_back=500)
def na = double.nan;
def bn = BarNumber();
def lastbn = HighestAll(If(IsNaN(close), 0, bn));
def lastbar = if (bn == lastbn) then 1 else 0;
#def lastbar = !isnan(close[0]) and isnan(close[-1]);
def minb = 10;
def maxb = 500;
input block_size2 = 200;
def block_size = if block_size2 < minb then minb else if block_size2 > maxb then maxb else block_size2;
input visual_row_width = 50;
input show_peaks = yes;
AddLabel(1, "look " + block_size + " bars back", Color.YELLOW);
input show_vert_line_range_start = yes;
def first = (!IsNaN(close[-block_size]) and IsNaN(close[-(block_size + 1)]));
AddVerticalLine(show_vert_line_range_start and first, "-", Color.CYAN);
#// Calculate profile
def block_high = Highest(high, block_size);
def block_low = Lowest(low, block_size);
def highest_row_value = 0;
# data to collect
# count bars in a range
#def data = 1;
# convert volume to millions
#def data = volume/1000000;
# convert volume to 1000s
def data = volume / 1000;
# do stuff on last bar
def row_qty = 40;
def block_height = block_high - block_low;
def row_height = block_height / row_qty;
# chg first values to 1, so no divide by 0 err
def k = 1;
def r00lo = if bn == 1 then k else if lastbar then (block_low + row_height * 0) else r00lo[1];
def r00hi = if bn == 1 then k else if lastbar then (block_low + row_height * 1) else r00hi[1];
def r01lo = if bn == 1 then k else if lastbar then (block_low + row_height * 1) else r01lo[1];
def r01hi = if bn == 1 then k else if lastbar then (block_low + row_height * 2) else r01hi[1];
def r02lo = if bn == 1 then k else if lastbar then (block_low + row_height * 2) else r02lo[1];
def r02hi = if bn == 1 then k else if lastbar then (block_low + row_height * 3) else r02hi[1];
def r03lo = if bn == 1 then k else if lastbar then (block_low + row_height * 3) else r03lo[1];
def r03hi = if bn == 1 then k else if lastbar then (block_low + row_height * 4) else r03hi[1];
def r04lo = if bn == 1 then k else if lastbar then (block_low + row_height * 4) else r04lo[1];
def r04hi = if bn == 1 then k else if lastbar then (block_low + row_height * 5) else r04hi[1];
def r05lo = if bn == 1 then k else if lastbar then (block_low + row_height * 5) else r05lo[1];
def r05hi = if bn == 1 then k else if lastbar then (block_low + row_height * 6) else r05hi[1];
def r06lo = if bn == 1 then k else if lastbar then (block_low + row_height * 6) else r06lo[1];
def r06hi = if bn == 1 then k else if lastbar then (block_low + row_height * 7) else r06hi[1];
def r07lo = if bn == 1 then k else if lastbar then (block_low + row_height * 7) else r07lo[1];
def r07hi = if bn == 1 then k else if lastbar then (block_low + row_height * 8) else r07hi[1];
def r08lo = if bn == 1 then k else if lastbar then (block_low + row_height * 8) else r08lo[1];
def r08hi = if bn == 1 then k else if lastbar then (block_low + row_height * 9) else r08hi[1];
def r09lo = if bn == 1 then k else if lastbar then (block_low + row_height * 9) else r09lo[1];
def r09hi = if bn == 1 then k else if lastbar then (block_low + row_height * 10) else r09hi[1];
def r10lo = if bn == 1 then k else if lastbar then (block_low + row_height * 10) else r10lo[1];
def r10hi = if bn == 1 then k else if lastbar then (block_low + row_height * 11) else r10hi[1];
def r11lo = if bn == 1 then k else if lastbar then (block_low + row_height * 11) else r11lo[1];
def r11hi = if bn == 1 then k else if lastbar then (block_low + row_height * 12) else r11hi[1];
def r12lo = if bn == 1 then k else if lastbar then (block_low + row_height * 12) else r12lo[1];
def r12hi = if bn == 1 then k else if lastbar then (block_low + row_height * 13) else r12hi[1];
def r13lo = if bn == 1 then k else if lastbar then (block_low + row_height * 13) else r13lo[1];
def r13hi = if bn == 1 then k else if lastbar then (block_low + row_height * 14) else r13hi[1];
def r14lo = if bn == 1 then k else if lastbar then (block_low + row_height * 14) else r14lo[1];
def r14hi = if bn == 1 then k else if lastbar then (block_low + row_height * 15) else r14hi[1];
def r15lo = if bn == 1 then k else if lastbar then (block_low + row_height * 15) else r15lo[1];
def r15hi = if bn == 1 then k else if lastbar then (block_low + row_height * 16) else r15hi[1];
def r16lo = if bn == 1 then k else if lastbar then (block_low + row_height * 16) else r16lo[1];
def r16hi = if bn == 1 then k else if lastbar then (block_low + row_height * 17) else r16hi[1];
def r17lo = if bn == 1 then k else if lastbar then (block_low + row_height * 17) else r17lo[1];
def r17hi = if bn == 1 then k else if lastbar then (block_low + row_height * 18) else r17hi[1];
def r18lo = if bn == 1 then k else if lastbar then (block_low + row_height * 18) else r18lo[1];
def r18hi = if bn == 1 then k else if lastbar then (block_low + row_height * 19) else r18hi[1];
def r19lo = if bn == 1 then k else if lastbar then (block_low + row_height * 19) else r19lo[1];
def r19hi = if bn == 1 then k else if lastbar then (block_low + row_height * 20) else r19hi[1];
def r20lo = if bn == 1 then k else if lastbar then (block_low + row_height * 20) else r20lo[1];
def r20hi = if bn == 1 then k else if lastbar then (block_low + row_height * 21) else r20hi[1];
def r21lo = if bn == 1 then k else if lastbar then (block_low + row_height * 21) else r21lo[1];
def r21hi = if bn == 1 then k else if lastbar then (block_low + row_height * 22) else r21hi[1];
def r22lo = if bn == 1 then k else if lastbar then (block_low + row_height * 22) else r22lo[1];
def r22hi = if bn == 1 then k else if lastbar then (block_low + row_height * 23) else r22hi[1];
def r23lo = if bn == 1 then k else if lastbar then (block_low + row_height * 23) else r23lo[1];
def r23hi = if bn == 1 then k else if lastbar then (block_low + row_height * 24) else r23hi[1];
def r24lo = if bn == 1 then k else if lastbar then (block_low + row_height * 24) else r24lo[1];
def r24hi = if bn == 1 then k else if lastbar then (block_low + row_height * 25) else r24hi[1];
def r25lo = if bn == 1 then k else if lastbar then (block_low + row_height * 25) else r25lo[1];
def r25hi = if bn == 1 then k else if lastbar then (block_low + row_height * 26) else r25hi[1];
def r26lo = if bn == 1 then k else if lastbar then (block_low + row_height * 26) else r26lo[1];
def r26hi = if bn == 1 then k else if lastbar then (block_low + row_height * 27) else r26hi[1];
def r27lo = if bn == 1 then k else if lastbar then (block_low + row_height * 27) else r27lo[1];
def r27hi = if bn == 1 then k else if lastbar then (block_low + row_height * 28) else r27hi[1];
def r28lo = if bn == 1 then k else if lastbar then (block_low + row_height * 28) else r28lo[1];
def r28hi = if bn == 1 then k else if lastbar then (block_low + row_height * 29) else r28hi[1];
def r29lo = if bn == 1 then k else if lastbar then (block_low + row_height * 29) else r29lo[1];
def r29hi = if bn == 1 then k else if lastbar then (block_low + row_height * 30) else r29hi[1];
def r30lo = if bn == 1 then k else if lastbar then (block_low + row_height * 30) else r30lo[1];
def r30hi = if bn == 1 then k else if lastbar then (block_low + row_height * 31) else r30hi[1];
def r31lo = if bn == 1 then k else if lastbar then (block_low + row_height * 31) else r31lo[1];
def r31hi = if bn == 1 then k else if lastbar then (block_low + row_height * 32) else r31hi[1];
def r32lo = if bn == 1 then k else if lastbar then (block_low + row_height * 32) else r32lo[1];
def r32hi = if bn == 1 then k else if lastbar then (block_low + row_height * 33) else r32hi[1];
def r33lo = if bn == 1 then k else if lastbar then (block_low + row_height * 33) else r33lo[1];
def r33hi = if bn == 1 then k else if lastbar then (block_low + row_height * 34) else r33hi[1];
def r34lo = if bn == 1 then k else if lastbar then (block_low + row_height * 34) else r34lo[1];
def r34hi = if bn == 1 then k else if lastbar then (block_low + row_height * 35) else r34hi[1];
def r35lo = if bn == 1 then k else if lastbar then (block_low + row_height * 35) else r35lo[1];
def r35hi = if bn == 1 then k else if lastbar then (block_low + row_height * 36) else r35hi[1];
def r36lo = if bn == 1 then k else if lastbar then (block_low + row_height * 36) else r36lo[1];
def r36hi = if bn == 1 then k else if lastbar then (block_low + row_height * 37) else r36hi[1];
def r37lo = if bn == 1 then k else if lastbar then (block_low + row_height * 37) else r37lo[1];
def r37hi = if bn == 1 then k else if lastbar then (block_low + row_height * 38) else r37hi[1];
def r38lo = if bn == 1 then k else if lastbar then (block_low + row_height * 38) else r38lo[1];
def r38hi = if bn == 1 then k else if lastbar then (block_low + row_height * 39) else r38hi[1];
def r39lo = if bn == 1 then k else if lastbar then (block_low + row_height * 39) else r39lo[1];
def r39hi = if bn == 1 then k else if lastbar then (block_low + row_height * 40) else r39hi[1];
def r00mid = (r00hi + r00lo) / 2;
def r01mid = (r01hi + r01lo) / 2;
def r02mid = (r02hi + r02lo) / 2;
def r03mid = (r03hi + r03lo) / 2;
def r04mid = (r04hi + r04lo) / 2;
def r05mid = (r05hi + r05lo) / 2;
def r06mid = (r06hi + r06lo) / 2;
def r07mid = (r07hi + r07lo) / 2;
def r08mid = (r08hi + r08lo) / 2;
def r09mid = (r09hi + r09lo) / 2;
def r10mid = (r10hi + r10lo) / 2;
def r11mid = (r11hi + r11lo) / 2;
def r12mid = (r12hi + r12lo) / 2;
def r13mid = (r13hi + r13lo) / 2;
def r14mid = (r14hi + r14lo) / 2;
def r15mid = (r15hi + r15lo) / 2;
def r16mid = (r16hi + r16lo) / 2;
def r17mid = (r17hi + r17lo) / 2;
def r18mid = (r18hi + r18lo) / 2;
def r19mid = (r19hi + r19lo) / 2;
def r20mid = (r20hi + r20lo) / 2;
def r21mid = (r21hi + r21lo) / 2;
def r22mid = (r22hi + r22lo) / 2;
def r23mid = (r23hi + r23lo) / 2;
def r24mid = (r24hi + r24lo) / 2;
def r25mid = (r25hi + r25lo) / 2;
def r26mid = (r26hi + r26lo) / 2;
def r27mid = (r27hi + r27lo) / 2;
def r28mid = (r28hi + r28lo) / 2;
def r29mid = (r29hi + r29lo) / 2;
def r30mid = (r30hi + r30lo) / 2;
def r31mid = (r31hi + r31lo) / 2;
def r32mid = (r32hi + r32lo) / 2;
def r33mid = (r33hi + r33lo) / 2;
def r34mid = (r34hi + r34lo) / 2;
def r35mid = (r35hi + r35lo) / 2;
def r36mid = (r36hi + r36lo) / 2;
def r37mid = (r37hi + r37lo) / 2;
def r38mid = (r38hi + r38lo) / 2;
def r39mid = (r39hi + r39lo) / 2;
# on last bar,
# look back at prev bars, to see if part of them were within a price row range,
# if so, then add the data from that bar , volume
def m = 1;
def r00cnt = if bn == 1 then m else if lastbar then fold i0 = 0 to block_size
with p0
do p0 + (if GetValue(low, i0) < r00hi and GetValue(high, i0) > r00lo then GetValue(data, i0) else 0)
else r00cnt[1];
def r01cnt = if bn == 1 then m else if lastbar then fold i1 = 0 to block_size
with p1
do p1 + (if GetValue(low, i1) < r01hi and GetValue(high, i1) > r01lo then GetValue(data, i1) else 0)
else r01cnt[1];
def r02cnt = if bn == 1 then m else if lastbar then fold i2 = 0 to block_size
with p2
do p2 + (if GetValue(low, i2) < r02hi and GetValue(high, i2) > r02lo then GetValue(data, i2) else 0)
else r02cnt[1];
def r03cnt = if bn == 1 then m else if lastbar then fold i3 = 0 to block_size
with p3
do p3 + (if GetValue(low, i3) < r03hi and GetValue(high, i3) > r03lo then GetValue(data, i3) else 0)
else r03cnt[1];
def r04cnt = if bn == 1 then m else if lastbar then fold i4 = 0 to block_size
with p4
do p4 + (if GetValue(low, i4) < r04hi and GetValue(high, i4) > r04lo then GetValue(data, i4) else 0)
else r04cnt[1];
def r05cnt = if bn == 1 then m else if lastbar then fold i5 = 0 to block_size
with p5
do p5 + (if GetValue(low, i5) < r05hi and GetValue(high, i5) > r05lo then GetValue(data, i5) else 0)
else r05cnt[1];
def r06cnt = if bn == 1 then m else if lastbar then fold i6 = 0 to block_size
with p6
do p6 + (if GetValue(low, i6) < r06hi and GetValue(high, i6) > r06lo then GetValue(data, i6) else 0)
else r06cnt[1];
def r07cnt = if bn == 1 then m else if lastbar then fold i7 = 0 to block_size
with p7
do p7 + (if GetValue(low, i7) < r07hi and GetValue(high, i7) > r07lo then GetValue(data, i7) else 0)
else r07cnt[1];
def r08cnt = if bn == 1 then m else if lastbar then fold i8 = 0 to block_size
with p8
do p8 + (if GetValue(low, i8) < r08hi and GetValue(high, i8) > r08lo then GetValue(data, i8) else 0)
else r08cnt[1];
def r09cnt = if bn == 1 then m else if lastbar then fold i9 = 0 to block_size
with p9
do p9 + (if GetValue(low, i9) < r09hi and GetValue(high, i9) > r09lo then GetValue(data, i9) else 0)
else r09cnt[1];
def r10cnt = if bn == 1 then m else if lastbar then fold i10 = 0 to block_size
with p10
do p10 + (if GetValue(low, i10) < r10hi and GetValue(high, i10) > r10lo then GetValue(data, i10) else 0)
else r10cnt[1];
def r11cnt = if bn == 1 then m else if lastbar then fold i11 = 0 to block_size
with p11
do p11 + (if GetValue(low, i11) < r11hi and GetValue(high, i11) > r11lo then GetValue(data, i11) else 0)
else r11cnt[1];
def r12cnt = if bn == 1 then m else if lastbar then fold i12 = 0 to block_size
with p12
do p12 + (if GetValue(low, i12) < r12hi and GetValue(high, i12) > r12lo then GetValue(data, i12) else 0)
else r12cnt[1];
def r13cnt = if bn == 1 then m else if lastbar then fold i13 = 0 to block_size
with p13
do p13 + (if GetValue(low, i13) < r13hi and GetValue(high, i13) > r13lo then GetValue(data, i13) else 0)
else r13cnt[1];
def r14cnt = if bn == 1 then m else if lastbar then fold i14 = 0 to block_size
with p14
do p14 + (if GetValue(low, i14) < r14hi and GetValue(high, i14) > r14lo then GetValue(data, i14) else 0)
else r14cnt[1];
def r15cnt = if bn == 1 then m else if lastbar then fold i15 = 0 to block_size
with p15
do p15 + (if GetValue(low, i15) < r15hi and GetValue(high, i15) > r15lo then GetValue(data, i15) else 0)
else r15cnt[1];
def r16cnt = if bn == 1 then m else if lastbar then fold i16 = 0 to block_size
with p16
do p16 + (if GetValue(low, i16) < r16hi and GetValue(high, i16) > r16lo then GetValue(data, i16) else 0)
else r16cnt[1];
def r17cnt = if bn == 1 then m else if lastbar then fold i17 = 0 to block_size
with p17
do p17 + (if GetValue(low, i17) < r17hi and GetValue(high, i17) > r17lo then GetValue(data, i17) else 0)
else r17cnt[1];
def r18cnt = if bn == 1 then m else if lastbar then fold i18 = 0 to block_size
with p18
do p18 + (if GetValue(low, i18) < r18hi and GetValue(high, i18) > r18lo then GetValue(data, i18) else 0)
else r18cnt[1];
def r19cnt = if bn == 1 then m else if lastbar then fold i19 = 0 to block_size
with p19
do p19 + (if GetValue(low, i19) < r19hi and GetValue(high, i19) > r19lo then GetValue(data, i19) else 0)
else r19cnt[1];
def r20cnt = if bn == 1 then m else if lastbar then fold i20 = 0 to block_size
with p20
do p20 + (if GetValue(low, i20) < r20hi and GetValue(high, i20) > r20lo then GetValue(data, i20) else 0)
else r20cnt[1];
def r21cnt = if bn == 1 then m else if lastbar then fold i21 = 0 to block_size
with p21
do p21 + (if GetValue(low, i21) < r21hi and GetValue(high, i21) > r21lo then GetValue(data, i21) else 0)
else r21cnt[1];
def r22cnt = if bn == 1 then m else if lastbar then fold i22 = 0 to block_size
with p22
do p22 + (if GetValue(low, i22) < r22hi and GetValue(high, i22) > r22lo then GetValue(data, i22) else 0)
else r22cnt[1];
def r23cnt = if bn == 1 then m else if lastbar then fold i23 = 0 to block_size
with p23
do p23 + (if GetValue(low, i23) < r23hi and GetValue(high, i23) > r23lo then GetValue(data, i23) else 0)
else r23cnt[1];
def r24cnt = if bn == 1 then m else if lastbar then fold i24 = 0 to block_size
with p24
do p24 + (if GetValue(low, i24) < r24hi and GetValue(high, i24) > r24lo then GetValue(data, i24) else 0)
else r24cnt[1];
def r25cnt = if bn == 1 then m else if lastbar then fold i25 = 0 to block_size
with p25
do p25 + (if GetValue(low, i25) < r25hi and GetValue(high, i25) > r25lo then GetValue(data, i25) else 0)
else r25cnt[1];
def r26cnt = if bn == 1 then m else if lastbar then fold i26 = 0 to block_size
with p26
do p26 + (if GetValue(low, i26) < r26hi and GetValue(high, i26) > r26lo then GetValue(data, i26) else 0)
else r26cnt[1];
def r27cnt = if bn == 1 then m else if lastbar then fold i27 = 0 to block_size
with p27
do p27 + (if GetValue(low, i27) < r27hi and GetValue(high, i27) > r27lo then GetValue(data, i27) else 0)
else r27cnt[1];
def r28cnt = if bn == 1 then m else if lastbar then fold i28 = 0 to block_size
with p28
do p28 + (if GetValue(low, i28) < r28hi and GetValue(high, i28) > r28lo then GetValue(data, i28) else 0)
else r28cnt[1];
def r29cnt = if bn == 1 then m else if lastbar then fold i29 = 0 to block_size
with p29
do p29 + (if GetValue(low, i29) < r29hi and GetValue(high, i29) > r29lo then GetValue(data, i29) else 0)
else r29cnt[1];
def r30cnt = if bn == 1 then m else if lastbar then fold i30 = 0 to block_size
with p30
do p30 + (if GetValue(low, i30) < r30hi and GetValue(high, i30) > r30lo then GetValue(data, i30) else 0)
else r30cnt[1];
def r31cnt = if bn == 1 then m else if lastbar then fold i31 = 0 to block_size
with p31
do p31 + (if GetValue(low, i31) < r31hi and GetValue(high, i31) > r31lo then GetValue(data, i31) else 0)
else r31cnt[1];
def r32cnt = if bn == 1 then m else if lastbar then fold i32 = 0 to block_size
with p32
do p32 + (if GetValue(low, i32) < r32hi and GetValue(high, i32) > r32lo then GetValue(data, i32) else 0)
else r32cnt[1];
def r33cnt = if bn == 1 then m else if lastbar then fold i33 = 0 to block_size
with p33
do p33 + (if GetValue(low, i33) < r33hi and GetValue(high, i33) > r33lo then GetValue(data, i33) else 0)
else r33cnt[1];
def r34cnt = if bn == 1 then m else if lastbar then fold i34 = 0 to block_size
with p34
do p34 + (if GetValue(low, i34) < r34hi and GetValue(high, i34) > r34lo then GetValue(data, i34) else 0)
else r34cnt[1];
def r35cnt = if bn == 1 then m else if lastbar then fold i35 = 0 to block_size
with p35
do p35 + (if GetValue(low, i35) < r35hi and GetValue(high, i35) > r35lo then GetValue(data, i35) else 0)
else r35cnt[1];
def r36cnt = if bn == 1 then m else if lastbar then fold i36 = 0 to block_size
with p36
do p36 + (if GetValue(low, i36) < r36hi and GetValue(high, i36) > r36lo then GetValue(data, i36) else 0)
else r36cnt[1];
def r37cnt = if bn == 1 then m else if lastbar then fold i37 = 0 to block_size
with p37
do p37 + (if GetValue(low, i37) < r37hi and GetValue(high, i37) > r37lo then GetValue(data, i37) else 0)
else r37cnt[1];
def r38cnt = if bn == 1 then m else if lastbar then fold i38 = 0 to block_size
with p38
do p38 + (if GetValue(low, i38) < r38hi and GetValue(high, i38) > r38lo then GetValue(data, i38) else 0)
else r38cnt[1];
def r39cnt = if bn == 1 then m else if lastbar then fold i39 = 0 to block_size
with p39
do p39 + (if GetValue(low, i39) < r39hi and GetValue(high, i39) > r39lo then GetValue(data, i39) else 0)
else r39cnt[1];
# find max data sum
def maxdata = Max(r00cnt, Max(r01cnt, Max(r02cnt, Max(r03cnt, Max(r04cnt, Max(r05cnt, Max(r06cnt, Max(r07cnt, Max(r08cnt, Max(r09cnt, Max(r10cnt, Max(r11cnt, Max(r12cnt, Max(r13cnt, Max(r14cnt, Max(r15cnt, Max(r16cnt, Max(r17cnt, Max(r18cnt, Max(r19cnt, Max(r20cnt, Max(r21cnt, Max(r22cnt, Max(r23cnt, Max(r24cnt, Max(r25cnt, Max(r26cnt, Max(r27cnt, Max(r28cnt, Max(r29cnt, Max(r30cnt, Max(r31cnt, Max(r32cnt, Max(r33cnt, Max(r34cnt, Max(r35cnt, Max(r36cnt, Max(r37cnt, Max(r38cnt, r39cnt)))))))))))))))))))))))))))))))))))))));
# calc ratio of cnt to highest cnt , a bar cnt , for the horz length of each row
def r00r = Floor(visual_row_width * r00cnt / maxdata);
def r01r = Floor(visual_row_width * r01cnt / maxdata);
def r02r = Floor(visual_row_width * r02cnt / maxdata);
def r03r = Floor(visual_row_width * r03cnt / maxdata);
def r04r = Floor(visual_row_width * r04cnt / maxdata);
def r05r = Floor(visual_row_width * r05cnt / maxdata);
def r06r = Floor(visual_row_width * r06cnt / maxdata);
def r07r = Floor(visual_row_width * r07cnt / maxdata);
def r08r = Floor(visual_row_width * r08cnt / maxdata);
def r09r = Floor(visual_row_width * r09cnt / maxdata);
def r10r = Floor(visual_row_width * r10cnt / maxdata);
def r11r = Floor(visual_row_width * r11cnt / maxdata);
def r12r = Floor(visual_row_width * r12cnt / maxdata);
def r13r = Floor(visual_row_width * r13cnt / maxdata);
def r14r = Floor(visual_row_width * r14cnt / maxdata);
def r15r = Floor(visual_row_width * r15cnt / maxdata);
def r16r = Floor(visual_row_width * r16cnt / maxdata);
def r17r = Floor(visual_row_width * r17cnt / maxdata);
def r18r = Floor(visual_row_width * r18cnt / maxdata);
def r19r = Floor(visual_row_width * r19cnt / maxdata);
def r20r = Floor(visual_row_width * r20cnt / maxdata);
def r21r = Floor(visual_row_width * r21cnt / maxdata);
def r22r = Floor(visual_row_width * r22cnt / maxdata);
def r23r = Floor(visual_row_width * r23cnt / maxdata);
def r24r = Floor(visual_row_width * r24cnt / maxdata);
def r25r = Floor(visual_row_width * r25cnt / maxdata);
def r26r = Floor(visual_row_width * r26cnt / maxdata);
def r27r = Floor(visual_row_width * r27cnt / maxdata);
def r28r = Floor(visual_row_width * r28cnt / maxdata);
def r29r = Floor(visual_row_width * r29cnt / maxdata);
def r30r = Floor(visual_row_width * r30cnt / maxdata);
def r31r = Floor(visual_row_width * r31cnt / maxdata);
def r32r = Floor(visual_row_width * r32cnt / maxdata);
def r33r = Floor(visual_row_width * r33cnt / maxdata);
def r34r = Floor(visual_row_width * r34cnt / maxdata);
def r35r = Floor(visual_row_width * r35cnt / maxdata);
def r36r = Floor(visual_row_width * r36cnt / maxdata);
def r37r = Floor(visual_row_width * r37cnt / maxdata);
def r38r = Floor(visual_row_width * r38cnt / maxdata);
def r39r = Floor(visual_row_width * r39cnt / maxdata);
#// Draw profile
# draw rows on bars after the last bar
# mark bars after lastbar as true, if the ratio cnt of bars .....
def x0 = (bn > lastbn and bn <= (lastbn + r00r));
def x1 = (bn > lastbn and bn <= (lastbn + r01r));
def x2 = (bn > lastbn and bn <= (lastbn + r02r));
def x3 = (bn > lastbn and bn <= (lastbn + r03r));
def x4 = (bn > lastbn and bn <= (lastbn + r04r));
def x5 = (bn > lastbn and bn <= (lastbn + r05r));
def x6 = (bn > lastbn and bn <= (lastbn + r06r));
def x7 = (bn > lastbn and bn <= (lastbn + r07r));
def x8 = (bn > lastbn and bn <= (lastbn + r08r));
def x9 = (bn > lastbn and bn <= (lastbn + r09r));
def x10 = (bn > lastbn and bn <= (lastbn + r10r));
def x11 = (bn > lastbn and bn <= (lastbn + r11r));
def x12 = (bn > lastbn and bn <= (lastbn + r12r));
def x13 = (bn > lastbn and bn <= (lastbn + r13r));
def x14 = (bn > lastbn and bn <= (lastbn + r14r));
def x15 = (bn > lastbn and bn <= (lastbn + r15r));
def x16 = (bn > lastbn and bn <= (lastbn + r16r));
def x17 = (bn > lastbn and bn <= (lastbn + r17r));
def x18 = (bn > lastbn and bn <= (lastbn + r18r));
def x19 = (bn > lastbn and bn <= (lastbn + r19r));
def x20 = (bn > lastbn and bn <= (lastbn + r20r));
def x21 = (bn > lastbn and bn <= (lastbn + r21r));
def x22 = (bn > lastbn and bn <= (lastbn + r22r));
def x23 = (bn > lastbn and bn <= (lastbn + r23r));
def x24 = (bn > lastbn and bn <= (lastbn + r24r));
def x25 = (bn > lastbn and bn <= (lastbn + r25r));
def x26 = (bn > lastbn and bn <= (lastbn + r26r));
def x27 = (bn > lastbn and bn <= (lastbn + r27r));
def x28 = (bn > lastbn and bn <= (lastbn + r28r));
def x29 = (bn > lastbn and bn <= (lastbn + r29r));
def x30 = (bn > lastbn and bn <= (lastbn + r30r));
def x31 = (bn > lastbn and bn <= (lastbn + r31r));
def x32 = (bn > lastbn and bn <= (lastbn + r32r));
def x33 = (bn > lastbn and bn <= (lastbn + r33r));
def x34 = (bn > lastbn and bn <= (lastbn + r34r));
def x35 = (bn > lastbn and bn <= (lastbn + r35r));
def x36 = (bn > lastbn and bn <= (lastbn + r36r));
def x37 = (bn > lastbn and bn <= (lastbn + r37r));
def x38 = (bn > lastbn and bn <= (lastbn + r38r));
def x39 = (bn > lastbn and bn <= (lastbn + r39r));
#---------------------------
# orig codes
# find max value , +-5 values , compare each row value to 10 other values
# if current is the max, then orange
# if first , compare to 5 future
# later , compare to 5 before and 5 after
# last , compare to 5 prev
# ref - orig code
#if row0_value >= row1_value and row0_value >= row2_value and row0_value >= row3_value and row0_value >= row4_value and row0_value >= row5_value
# row0_is_peak := true
#if row10_value >= row5_value and row10_value >= row6_value and row10_value >= row7_value and row10_value >= row8_value and row10_value >= row9_value and row10_value >= row11_value and row10_value >= row12_value and row10_value >= row13_value and row10_value >= row14_value and row10_value >= row15_value
# row10_is_peak := true
#if row20_value >= row15_value and row20_value >= row16_value and row20_value >= row17_value and row20_value >= row18_value and row20_value >= row19_value and row20_value >= row21_value and row20_value >= row22_value and row20_value >= row23_value and row20_value >= row24_value and row20_value >= row25_value
# row20_is_peak := true
#if row39_value >= row34_value and row39_value >= row35_value and row39_value >= row36_value and row39_value >= row37_value and row39_value >= row38_value
# row39_is_peak := true
#------------------
# copied from line 394
#def maxdata = Max(r00cnt, Max(r01cnt, Max(r02cnt, Max(r03cnt, Max(r04cnt, Max(r05cnt, Max(r06cnt, Max(r07cnt, Max(r08cnt, Max(r09cnt, Max(r10cnt, Max(r11cnt, Max(r12cnt, Max(r13cnt, Max(r14cnt, Max(r15cnt, Max(r16cnt, Max(r17cnt, Max(r18cnt, Max(r19cnt, Max(r20cnt, Max(r21cnt, Max(r22cnt, Max(r23cnt, Max(r24cnt, Max(r25cnt, Max(r26cnt, Max(r27cnt, Max(r28cnt, Max(r29cnt, Max(r30cnt, Max(r31cnt, Max(r32cnt, Max(r33cnt, Max(r34cnt, Max(r35cnt, Max(r36cnt, Max(r37cnt, Max(r38cnt, r39cnt)))))))))))))))))))))))))))))))))))))));
# compare current row to prev 5 rows and future 5 rows
def max00 = if r00cnt == (Max(r00cnt, Max(r01cnt, Max(r02cnt, Max(r03cnt, Max(r04cnt, r05cnt)))))) then 1 else 0;
def max01 = if r01cnt == (Max(r00cnt, Max(r01cnt, Max(r02cnt, Max(r03cnt, Max(r04cnt, Max(r05cnt, r06cnt))))))) then 1 else 0;
def max02 = if r02cnt == (Max(r00cnt, Max(r01cnt, Max(r02cnt, Max(r03cnt, Max(r04cnt, Max(r05cnt, Max(r06cnt, r07cnt)))))))) then 1 else 0;
def max03 = if r03cnt == (Max(r00cnt, Max(r01cnt, Max(r02cnt, Max(r03cnt, Max(r04cnt, Max(r05cnt, Max(r06cnt, Max(r07cnt, r08cnt))))))))) then 1 else 0;
def max04 = if r04cnt == (Max(r00cnt, Max(r01cnt, Max(r02cnt, Max(r03cnt, Max(r04cnt, Max(r05cnt, Max(r06cnt, Max(r07cnt, Max(r08cnt, r09cnt)))))))))) then 1 else 0;
def max05 = if r05cnt == (Max(r00cnt, Max(r01cnt, Max(r02cnt, Max(r03cnt, Max(r04cnt, Max(r05cnt, Max(r06cnt, Max(r07cnt, Max(r08cnt, Max(r09cnt, r10cnt))))))))))) then 1 else 0;
def max06 = if r06cnt == (Max(r01cnt, Max(r02cnt, Max(r03cnt, Max(r04cnt, Max(r05cnt, Max(r06cnt, Max(r07cnt, Max(r08cnt, Max(r09cnt, Max(r10cnt, r11cnt))))))))))) then 1 else 0;
def max07 = if r07cnt == (Max(r02cnt, Max(r03cnt, Max(r04cnt, Max(r05cnt, Max(r06cnt, Max(r07cnt, Max(r08cnt, Max(r09cnt, Max(r10cnt, Max(r11cnt, r12cnt))))))))))) then 1 else 0;
def max08 = if r08cnt == (Max(r03cnt, Max(r04cnt, Max(r05cnt, Max(r06cnt, Max(r07cnt, Max(r08cnt, Max(r09cnt, Max(r10cnt, Max(r11cnt, Max(r12cnt, r13cnt))))))))))) then 1 else 0;
def max09 = if r09cnt == (Max(r04cnt, Max(r05cnt, Max(r06cnt, Max(r07cnt, Max(r08cnt, Max(r09cnt, Max(r10cnt, Max(r11cnt, Max(r12cnt, Max(r13cnt, r14cnt))))))))))) then 1 else 0;
def max10 = if r10cnt == (Max(r05cnt, Max(r06cnt, Max(r07cnt, Max(r08cnt, Max(r09cnt, Max(r10cnt, Max(r11cnt, Max(r12cnt, Max(r13cnt, Max(r14cnt, r15cnt))))))))))) then 1 else 0;
def max11 = if r11cnt == (Max(r06cnt, Max(r07cnt, Max(r08cnt, Max(r09cnt, Max(r10cnt, Max(r11cnt, Max(r12cnt, Max(r13cnt, Max(r14cnt, Max(r15cnt, r16cnt))))))))))) then 1 else 0;
def max12 = if r12cnt == (Max(r07cnt, Max(r08cnt, Max(r09cnt, Max(r10cnt, Max(r11cnt, Max(r12cnt, Max(r13cnt, Max(r14cnt, Max(r15cnt, Max(r16cnt, r17cnt))))))))))) then 1 else 0;
def max13 = if r13cnt == (Max(r08cnt, Max(r09cnt, Max(r10cnt, Max(r11cnt, Max(r12cnt, Max(r13cnt, Max(r14cnt, Max(r15cnt, Max(r16cnt, Max(r17cnt, r18cnt))))))))))) then 1 else 0;
def max14 = if r14cnt == (Max(r09cnt, Max(r10cnt, Max(r11cnt, Max(r12cnt, Max(r13cnt, Max(r14cnt, Max(r15cnt, Max(r16cnt, Max(r17cnt, Max(r18cnt, r19cnt))))))))))) then 1 else 0;
def max15 = if r15cnt == (Max(r10cnt, Max(r11cnt, Max(r12cnt, Max(r13cnt, Max(r14cnt, Max(r15cnt, Max(r16cnt, Max(r17cnt, Max(r18cnt, Max(r19cnt, r20cnt))))))))))) then 1 else 0;
def max16 = if r16cnt == (Max(r11cnt, Max(r12cnt, Max(r13cnt, Max(r14cnt, Max(r15cnt, Max(r16cnt, Max(r17cnt, Max(r18cnt, Max(r19cnt, Max(r20cnt, r21cnt))))))))))) then 1 else 0;
def max17 = if r17cnt == (Max(r12cnt, Max(r13cnt, Max(r14cnt, Max(r15cnt, Max(r16cnt, Max(r17cnt, Max(r18cnt, Max(r19cnt, Max(r20cnt, Max(r21cnt, r22cnt))))))))))) then 1 else 0;
def max18 = if r18cnt == (Max(r13cnt, Max(r14cnt, Max(r15cnt, Max(r16cnt, Max(r17cnt, Max(r18cnt, Max(r19cnt, Max(r20cnt, Max(r21cnt, Max(r22cnt, r23cnt))))))))))) then 1 else 0;
def max19 = if r19cnt == (Max(r14cnt, Max(r15cnt, Max(r16cnt, Max(r17cnt, Max(r18cnt, Max(r19cnt, Max(r20cnt, Max(r21cnt, Max(r22cnt, Max(r23cnt, r23cnt))))))))))) then 1 else 0;
def max20 = if r20cnt == (Max(r15cnt, Max(r16cnt, Max(r17cnt, Max(r18cnt, Max(r19cnt, Max(r20cnt, Max(r21cnt, Max(r22cnt, Max(r23cnt, Max(r24cnt, r25cnt))))))))))) then 1 else 0;
def max21 = if r21cnt == (Max(r16cnt, Max(r17cnt, Max(r18cnt, Max(r19cnt, Max(r20cnt, Max(r21cnt, Max(r22cnt, Max(r23cnt, Max(r24cnt, Max(r25cnt, r26cnt))))))))))) then 1 else 0;
def max22 = if r22cnt == (Max(r17cnt, Max(r18cnt, Max(r19cnt, Max(r20cnt, Max(r21cnt, Max(r22cnt, Max(r23cnt, Max(r24cnt, Max(r25cnt, Max(r26cnt, r27cnt))))))))))) then 1 else 0;
def max23 = if r23cnt == (Max(r18cnt, Max(r19cnt, Max(r20cnt, Max(r21cnt, Max(r22cnt, Max(r23cnt, Max(r24cnt, Max(r25cnt, Max(r26cnt, Max(r27cnt, r23cnt))))))))))) then 1 else 0;
def max24 = if r24cnt == (Max(r19cnt, Max(r20cnt, Max(r21cnt, Max(r22cnt, Max(r23cnt, Max(r24cnt, Max(r25cnt, Max(r26cnt, Max(r27cnt, Max(r28cnt, r29cnt))))))))))) then 1 else 0;
def max25 = if r25cnt == (Max(r20cnt, Max(r21cnt, Max(r22cnt, Max(r23cnt, Max(r24cnt, Max(r25cnt, Max(r26cnt, Max(r27cnt, Max(r28cnt, Max(r29cnt, r30cnt))))))))))) then 1 else 0;
def max26 = if r26cnt == (Max(r21cnt, Max(r22cnt, Max(r23cnt, Max(r24cnt, Max(r25cnt, Max(r26cnt, Max(r27cnt, Max(r28cnt, Max(r29cnt, Max(r30cnt, r31cnt))))))))))) then 1 else 0;
def max27 = if r27cnt == (Max(r22cnt, Max(r23cnt, Max(r24cnt, Max(r25cnt, Max(r26cnt, Max(r27cnt, Max(r28cnt, Max(r29cnt, Max(r30cnt, Max(r31cnt, r32cnt))))))))))) then 1 else 0;
def max28 = if r28cnt == (Max(r23cnt, Max(r24cnt, Max(r25cnt, Max(r26cnt, Max(r27cnt, Max(r28cnt, Max(r29cnt, Max(r30cnt, Max(r31cnt, Max(r32cnt, r33cnt))))))))))) then 1 else 0;
def max29 = if r29cnt == (Max(r24cnt, Max(r25cnt, Max(r26cnt, Max(r27cnt, Max(r28cnt, Max(r29cnt, Max(r30cnt, Max(r31cnt, Max(r32cnt, Max(r33cnt, r34cnt))))))))))) then 1 else 0;
def max30 = if r30cnt == (Max(r25cnt, Max(r26cnt, Max(r27cnt, Max(r28cnt, Max(r29cnt, Max(r30cnt, Max(r31cnt, Max(r32cnt, Max(r33cnt, Max(r34cnt, r35cnt))))))))))) then 1 else 0;
def max31 = if r31cnt == (Max(r26cnt, Max(r27cnt, Max(r28cnt, Max(r29cnt, Max(r30cnt, Max(r31cnt, Max(r32cnt, Max(r33cnt, Max(r34cnt, Max(r35cnt, r36cnt))))))))))) then 1 else 0;
def max32 = if r32cnt == (Max(r27cnt, Max(r28cnt, Max(r29cnt, Max(r30cnt, Max(r31cnt, Max(r32cnt, Max(r33cnt, Max(r34cnt, Max(r35cnt, Max(r36cnt, r37cnt))))))))))) then 1 else 0;
def max33 = if r33cnt == (Max(r28cnt, Max(r29cnt, Max(r30cnt, Max(r31cnt, Max(r32cnt, Max(r33cnt, Max(r34cnt, Max(r35cnt, Max(r36cnt, Max(r37cnt, r38cnt))))))))))) then 1 else 0;
def max34 = if r34cnt == (Max(r29cnt, Max(r30cnt, Max(r31cnt, Max(r32cnt, Max(r33cnt, Max(r34cnt, Max(r35cnt, Max(r36cnt, Max(r37cnt, Max(r38cnt, r39cnt))))))))))) then 1 else 0;
def max35 = if r35cnt == (Max(r30cnt, Max(r31cnt, Max(r32cnt, Max(r33cnt, Max(r34cnt, Max(r35cnt, Max(r36cnt, Max(r37cnt, Max(r38cnt, r39cnt)))))))))) then 1 else 0;
def max36 = if r36cnt == (Max(r31cnt, Max(r32cnt, Max(r33cnt, Max(r34cnt, Max(r35cnt, Max(r36cnt, Max(r37cnt, Max(r38cnt, r39cnt))))))))) then 1 else 0;
def max37 = if r37cnt == (Max(r32cnt, Max(r33cnt, Max(r34cnt, Max(r35cnt, Max(r36cnt, Max(r37cnt, Max(r38cnt, r39cnt)))))))) then 1 else 0;
def max38 = if r38cnt == (Max(r33cnt, Max(r34cnt, Max(r35cnt, Max(r36cnt, Max(r37cnt, Max(r38cnt, r39cnt))))))) then 1 else 0;
def max39 = if r39cnt == (Max(r34cnt, Max(r35cnt, Max(r36cnt, Max(r37cnt, Max(r38cnt, r39cnt)))))) then 1 else 0;
#---------------------------
# replace max() at 500+ that find row max #s
# hmm diff vars , so cant just use highest()...
# def mx00 =
#-----------------------------
defineglobalcolor("colorhi", color.orange);
input line_thick = 2;
input show_lines_wsquares = yes;
plot z0 = if show_lines_wsquares and x0 then r00mid else na;
z0.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
z0.AssignValueColor(if max00 then GlobalColor("colorhi") else color.gray);
#z0.SetDefaultColor(Color.GRAY);
z0.SetLineWeight(line_thick);
z0.HideBubble();
plot z1 = if show_lines_wsquares and x1 then r01mid else na;
z1.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
z1.AssignValueColor(if max01 then GlobalColor("colorhi") else color.gray);
#z1.SetDefaultColor(Color.GRAY);
z1.SetLineWeight(line_thick);
z1.HideBubble();
plot z2 = if show_lines_wsquares and x2 then r02mid else na;
z2.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
z2.AssignValueColor(if max02 then GlobalColor("colorhi") else color.gray);
#z2.SetDefaultColor(Color.GRAY);
z2.SetLineWeight(line_thick);
z2.HideBubble();
plot z3 = if show_lines_wsquares and x3 then r03mid else na;
z3.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
z3.AssignValueColor(if max03 then GlobalColor("colorhi") else color.gray);
#z3.SetDefaultColor(Color.GRAY);
z3.SetLineWeight(line_thick);
z3.HideBubble();
plot z4 = if show_lines_wsquares and x4 then r04mid else na;
z4.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
z4.AssignValueColor(if max04 then GlobalColor("colorhi") else color.gray);
z4.SetDefaultColor(Color.GRAY);
z4.SetLineWeight(line_thick);
z4.HideBubble();
plot z5 = if show_lines_wsquares and x5 then r05mid else na;
z5.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
z5.AssignValueColor(if max05 then GlobalColor("colorhi") else color.gray);
#z5.SetDefaultColor(Color.GRAY);
z5.SetLineWeight(line_thick);
z5.HideBubble();
plot z6 = if show_lines_wsquares and x6 then r06mid else na;
z6.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
z6.AssignValueColor(if max06 then GlobalColor("colorhi") else color.gray);
z6.SetDefaultColor(Color.GRAY);
z6.SetLineWeight(line_thick);
z6.HideBubble();
plot z7 = if show_lines_wsquares and x7 then r07mid else na;
z7.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
z7.AssignValueColor(if max07 then GlobalColor("colorhi") else color.gray);
#z7.SetDefaultColor(Color.GRAY);
z7.SetLineWeight(line_thick);
z7.HideBubble();
plot z8 = if show_lines_wsquares and x8 then r08mid else na;
z8.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
z8.AssignValueColor(if max08 then GlobalColor("colorhi") else color.gray);
#z8.SetDefaultColor(Color.GRAY);
z8.SetLineWeight(line_thick);
z8.HideBubble();
plot z9 = if show_lines_wsquares and x9 then r09mid else na;
z9.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
z9.AssignValueColor(if max09 then GlobalColor("colorhi") else color.gray);
#z9.SetDefaultColor(Color.GRAY);
z9.SetLineWeight(line_thick);
z9.HideBubble();
plot z10 = if show_lines_wsquares and x10 then r10mid else na;
z10.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
z10.AssignValueColor(if max10 then GlobalColor("colorhi") else color.gray);
#z10.SetDefaultColor(Color.GRAY);
z10.SetLineWeight(line_thick);
z10.HideBubble();
plot z11 = if show_lines_wsquares and x11 then r11mid else na;
z11.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
z11.AssignValueColor(if max11 then GlobalColor("colorhi") else color.gray);
#z11.SetDefaultColor(Color.GRAY);
z11.SetLineWeight(line_thick);
z11.HideBubble();
plot z12 = if show_lines_wsquares and x12 then r12mid else na;
z12.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
z12.AssignValueColor(if max12 then GlobalColor("colorhi") else color.gray);
#z12.SetDefaultColor(Color.GRAY);
z12.SetLineWeight(line_thick);
z12.HideBubble();
plot z13 = if show_lines_wsquares and x13 then r13mid else na;
z13.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
z13.AssignValueColor(if max13 then GlobalColor("colorhi") else color.gray);
z13.SetDefaultColor(Color.GRAY);
z13.SetLineWeight(line_thick);
z13.HideBubble();
plot z14 = if show_lines_wsquares and x14 then r14mid else na;
z14.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
z14.AssignValueColor(if max14 then GlobalColor("colorhi") else color.gray);
#z14.SetDefaultColor(Color.GRAY);
z14.SetLineWeight(line_thick);
z14.HideBubble();
plot z15 = if show_lines_wsquares and x15 then r15mid else na;
z15.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
z15.AssignValueColor(if max15 then GlobalColor("colorhi") else color.gray);
#z15.SetDefaultColor(Color.GRAY);
z15.SetLineWeight(line_thick);
z15.HideBubble();
plot z16 = if show_lines_wsquares and x16 then r16mid else na;
z16.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
z0.AssignValueColor(if max16 then GlobalColor("colorhi") else color.gray);
z16.SetDefaultColor(Color.GRAY);
z16.SetLineWeight(line_thick);
z16.HideBubble();
plot z17 = if show_lines_wsquares and x17 then r17mid else na;
z17.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
z0.AssignValueColor(if max17 then GlobalColor("colorhi") else color.gray);
z17.SetDefaultColor(Color.GRAY);
z17.SetLineWeight(line_thick);
z17.HideBubble();
plot z18 = if show_lines_wsquares and x18 then r18mid else na;
z18.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
z18.AssignValueColor(if max18 then GlobalColor("colorhi") else color.gray);
z18.SetDefaultColor(Color.GRAY);
z18.SetLineWeight(line_thick);
z18.HideBubble();
plot z19 = if show_lines_wsquares and x19 then r19mid else na;
z19.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
z19.AssignValueColor(if max19 then GlobalColor("colorhi") else color.gray);
z19.SetDefaultColor(Color.GRAY);
z19.SetLineWeight(line_thick);
z19.HideBubble();
plot z20 = if show_lines_wsquares and x20 then r20mid else na;
z20.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
z20.AssignValueColor(if max20 then GlobalColor("colorhi") else color.gray);
z20.SetDefaultColor(Color.GRAY);
z20.SetLineWeight(line_thick);
z20.HideBubble();
plot z21 = if show_lines_wsquares and x21 then r21mid else na;
z21.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
z21.AssignValueColor(if max21 then GlobalColor("colorhi") else color.gray);
z21.SetDefaultColor(Color.GRAY);
z21.SetLineWeight(line_thick);
z21.HideBubble();
plot z22 = if show_lines_wsquares and x22 then r22mid else na;
z22.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
z22.AssignValueColor(if max22 then GlobalColor("colorhi") else color.gray);
z22.SetDefaultColor(Color.GRAY);
z22.SetLineWeight(line_thick);
z22.HideBubble();
plot z23 = if show_lines_wsquares and x23 then r23mid else na;
z23.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
z23.AssignValueColor(if max23 then GlobalColor("colorhi") else color.gray);
z23.SetDefaultColor(Color.GRAY);
z23.SetLineWeight(line_thick);
z23.HideBubble();
plot z24 = if show_lines_wsquares and x24 then r24mid else na;
z24.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
z24.AssignValueColor(if max24 then GlobalColor("colorhi") else color.gray);
z24.SetDefaultColor(Color.GRAY);
z24.SetLineWeight(line_thick);
z24.HideBubble();
plot z25 = if show_lines_wsquares and x25 then r25mid else na;
z25.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
z25.AssignValueColor(if max25 then GlobalColor("colorhi") else color.gray);
z25.SetDefaultColor(Color.GRAY);
z25.SetLineWeight(line_thick);
z25.HideBubble();
plot z26 = if show_lines_wsquares and x26 then r26mid else na;
z26.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
z26.AssignValueColor(if max26 then GlobalColor("colorhi") else color.gray);
z26.SetDefaultColor(Color.GRAY);
z26.SetLineWeight(line_thick);
z26.HideBubble();
plot z27 = if show_lines_wsquares and x27 then r27mid else na;
z27.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
z27.AssignValueColor(if max27 then GlobalColor("colorhi") else color.gray);
z27.SetDefaultColor(Color.GRAY);
z27.SetLineWeight(line_thick);
z27.HideBubble();
plot z28 = if show_lines_wsquares and x28 then r28mid else na;
z28.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
z28.AssignValueColor(if max28 then GlobalColor("colorhi") else color.gray);
z28.SetDefaultColor(Color.GRAY);
z28.SetLineWeight(line_thick);
z28.HideBubble();
plot z29 = if show_lines_wsquares and x29 then r29mid else na;
z29.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
z29.AssignValueColor(if max29 then GlobalColor("colorhi") else color.gray);
z29.SetDefaultColor(Color.GRAY);
z29.SetLineWeight(line_thick);
z29.HideBubble();
plot z30 = if show_lines_wsquares and x30 then r30mid else na;
z30.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
z30.AssignValueColor(if max30 then GlobalColor("colorhi") else color.gray);
z30.SetDefaultColor(Color.GRAY);
z30.SetLineWeight(line_thick);
z30.HideBubble();
plot z31 = if show_lines_wsquares and x31 then r31mid else na;
z31.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
z31.AssignValueColor(if max31 then GlobalColor("colorhi") else color.gray);
z31.SetDefaultColor(Color.GRAY);
z31.SetLineWeight(line_thick);
z31.HideBubble();
plot z32 = if show_lines_wsquares and x32 then r32mid else na;
z32.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
z32.AssignValueColor(if max32 then GlobalColor("colorhi") else color.gray);
z32.SetDefaultColor(Color.GRAY);
z32.SetLineWeight(line_thick);
z32.HideBubble();
plot z33 = if show_lines_wsquares and x33 then r33mid else na;
z33.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
z33.AssignValueColor(if max33 then GlobalColor("colorhi") else color.gray);
z33.SetDefaultColor(Color.GRAY);
z33.SetLineWeight(line_thick);
z33.HideBubble();
plot z34 = if show_lines_wsquares and x34 then r34mid else na;
z34.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
z34.AssignValueColor(if max34 then GlobalColor("colorhi") else color.gray);
z34.SetDefaultColor(Color.GRAY);
z34.SetLineWeight(line_thick);
z34.HideBubble();
plot z35 = if show_lines_wsquares and x35 then r35mid else na;
z35.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
z35.AssignValueColor(if max35 then GlobalColor("colorhi") else color.gray);
z35.SetDefaultColor(Color.GRAY);
z35.SetLineWeight(line_thick);
z35.HideBubble();
plot z36 = if show_lines_wsquares and x36 then r36mid else na;
z36.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
z36.AssignValueColor(if max36 then GlobalColor("colorhi") else color.gray);
z36.SetDefaultColor(Color.GRAY);
z36.SetLineWeight(line_thick);
z36.HideBubble();
plot z37 = if show_lines_wsquares and x37 then r37mid else na;
z37.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
z37.AssignValueColor(if max37 then GlobalColor("colorhi") else color.gray);
#z37.SetDefaultColor(Color.GRAY);
z37.SetLineWeight(line_thick);
z37.HideBubble();
plot z38 = if show_lines_wsquares and x38 then r38mid else na;
z38.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
z38.AssignValueColor(if max38 then GlobalColor("colorhi") else color.gray);
#z38.SetDefaultColor(Color.GRAY);
z38.SetLineWeight(line_thick);
z38.HideBubble();
plot z39 = if show_lines_wsquares and x39 then r39mid else na;
z39.SetPaintingStrategy(PaintingStrategy.LINE_VS_SQUARES);
z39.AssignValueColor(if max39 then GlobalColor("colorhi") else color.gray);
#z39.SetDefaultColor(Color.GRAY);
z39.SetLineWeight(line_thick);
z39.HideBubble();
#---------------------------
# test stuff
input test1 = no;
AddChartBubble(test1, 82,
bn + "\n" +
lastbn + "\n" +
maxdata + "\n" +
r00cnt + "\n" +
r00r + "\n" +
#visual_row_width + "\n" +
Floor(r00cnt / maxdata) + "\n" +
x0
, Color.YELLOW, no);
#
#