Option Heatmap and OI Strikes

so im really interested in how to get put/call options strike oi to show up like volume profile and the lower heat map similar to this example from @melarue on twitter. I have no idea how to even get started on something like this. Any hints or expert coders out there willing to reverse engineer this?

Ideally, the heat map portion could be shown on the upper chart as well, able to be mapped to strikes on today and future expirations as a dynamic color grid for daily, weekly, monthly options. Options codes should auto-generate.

this could be tweaked to show gamma levels as well -- lots of potential.

anyone up to the challenge? :unsure:

FOlIJqyVEAMJS7T
 

ziongotoptions

Active member
so im really interested in how to get put/call options strike oi to show up like volume profile and the lower heat map similar to this example from @melarue on twitter. I have no idea how to even get started on something like this. Any hints or expert coders out there willing to reverse engineer this?

Ideally, the heat map portion could be shown on the upper chart as well, able to be mapped to strikes on today and future expirations as a dynamic color grid for daily, weekly, monthly options. Options codes should auto-generate.

this could be tweaked to show gamma levels as well -- lots of potential.

anyone up to the challenge? :unsure:
There’s something called Data profile, I’d start there! I have a busy weekend ahead , but I’ll try to see if I can come up with something
 

Angrybear

Member
VIP
There’s something called Data profile, I’d start there! I have a busy weekend ahead , but I’ll try to see if I can come up with something
I have a free version from another website that no longer works for some reason.

Maybe it can help

# TS_OptionVolumeProfileFull
# (c) 2013 ThinkScripter, LLC
# http://www.thinkscripter.com
# [email protected]
# Last Update 27 Jan 2013
# Next3rdFriday code (c) thinkorswim

#hint barLength: The number of bars used to calculate the ADX <b>(Default is 14)</b>


# Next3rdFriday excerpt
input series = 1;
input show_label = yes;

def CurrentYear = getYear();
def CurrentMonth = getMonth();
def CurrentDOM = getDayOfMonth(getYyyyMmDd());

def Day1DOW1 = getDayOfWeek(CurrentYear * 10000 + CurrentMonth * 100 + 1);
def FirstFridayDOM1 = if Day1DOW1 < 6
then 6 - Day1DOW1
else if Day1DOW1 == 6
then 7
else 6;
def RollDOM = FirstFridayDOM1 + 14;
def ExpMonth1 = if RollDOM > CurrentDOM
then CurrentMonth + series - 1
else CurrentMonth + series;
def ExpMonth2 = if ExpMonth1 > 12
then ExpMonth1 - 12
else ExpMonth1;
def ExpYear = if ExpMonth1 > 12
then CurrentYear + 1
else CurrentYear;
def Day1DOW = getDayOfWeek(ExpYear * 10000 + ExpMonth2 * 100 + 1);
def FirstFridayDOM = if Day1DOW < 6
then 6 - Day1DOW
else if Day1DOW == 6
then 7
else 6;
def ExpDOM = FirstFridayDOM + 15;


def maxStrikeSpacing = 25;
input mode = {default AUTO, MANUAL};
input manualCenterStrike = 147.0;
input manualStrikeSpacing = 1.0;


rec centerStrike = if (mode == mode.AUTO and !IsNaN(close)) then roundDown(close / 10.0, 0) * 10.0 else if (mode == mode.MANUAL and !IsNaN(close)) then manualCenterStrike else centerStrike[1];
def strikeSpacingC = fold i = 1 to maxStrikeSpacing with spacing = 0 do if !IsNaN( volume(concat(concat(".", concat(getSymbolPart(), concat(concat(EXPYear - 2000, if ExpMonth2 <= 9 then concat("0", ExpMonth2) else concat("", ExpMonth2)), if ExpDOM <= 9 then concat("0", ExpDOM) else concat("", ExpDOM)))), concat("C", centerStrike + (maxStrikeSpacing - i))))) then maxStrikeSpacing - i else spacing;

rec strikeSpacing = if (mode == mode.AUTO and !IsNaN(close)) then strikeSpacingC else if (mode == mode.MANUAL and !IsNaN(close)) then manualStrikeSpacing else strikeSpacing[1];
rec barOffset = if !IsNaN(close) then strikeSpacing / 10.0 else barOffset[1];

AddLabel(show_label, concat("Expiration: ", concat(concat(EXPYear - 2000, if ExpMonth2 <= 9 then concat("0", ExpMonth2) else concat("", ExpMonth2)), if ExpDOM <= 9 then concat("0", ExpDOM) else concat("", ExpDOM))), color.white);
AddLabel(show_label, concat("Strike Spacing: ", strikeSpacing), color.cyan);

DefineGlobalColor("Calls", color.lime);
DefineGlobalColor("Puts", color.violet);

def barWeight = 5;

# Number of bars to right of current bar for display
# Should be a positiveVolumeIndex number

input displayOffset = 5;

# Number of bars of right space minus 5
input barLength = 45;


rec extBar = if IsNaN(close[displayOffset]) then extBar[1] + 1 else 0;

def c1_V_d = volume(concat(concat(".", concat(getSymbolPart(), concat(concat(EXPYear - 2000, if ExpMonth2 <= 9 then concat("0", ExpMonth2) else concat("", ExpMonth2)), if ExpDOM <= 9 then concat("0", ExpDOM) else concat("", ExpDOM)))), concat("C", centerStrike )));

def c2_V_d = volume(concat(concat(".", concat(getSymbolPart(), concat(concat(EXPYear - 2000, if ExpMonth2 <= 9 then concat("0", ExpMonth2) else concat("", ExpMonth2)), if ExpDOM <= 9 then concat("0", ExpDOM) else concat("", ExpDOM)))), concat("C", centerStrike - strikeSpacing)));
def c3_V_d = volume(concat(concat(".", concat(getSymbolPart(), concat(concat(EXPYear - 2000, if ExpMonth2 <= 9 then concat("0", ExpMonth2) else concat("", ExpMonth2)), if ExpDOM <= 9 then concat("0", ExpDOM) else concat("", ExpDOM)))), concat("C", centerStrike - strikeSpacing * 2)));
def c4_V_d = volume(concat(concat(".", concat(getSymbolPart(), concat(concat(EXPYear - 2000, if ExpMonth2 <= 9 then concat("0", ExpMonth2) else concat("", ExpMonth2)), if ExpDOM <= 9 then concat("0", ExpDOM) else concat("", ExpDOM)))), concat("C", centerStrike - strikeSpacing * 3)));

def c5_V_d = volume(concat(concat(".", concat(getSymbolPart(), concat(concat(EXPYear - 2000, if ExpMonth2 <= 9 then concat("0", ExpMonth2) else concat("", ExpMonth2)), if ExpDOM <= 9 then concat("0", ExpDOM) else concat("", ExpDOM)))), concat("C", centerStrike + strikeSpacing)));
def c6_V_d = volume(concat(concat(".", concat(getSymbolPart(), concat(concat(EXPYear - 2000, if ExpMonth2 <= 9 then concat("0", ExpMonth2) else concat("", ExpMonth2)), if ExpDOM <= 9 then concat("0", ExpDOM) else concat("", ExpDOM)))), concat("C", centerStrike + strikeSpacing * 2)));
def c7_V_d = volume(concat(concat(".", concat(getSymbolPart(), concat(concat(EXPYear - 2000, if ExpMonth2 <= 9 then concat("0", ExpMonth2) else concat("", ExpMonth2)), if ExpDOM <= 9 then concat("0", ExpDOM) else concat("", ExpDOM)))), concat("C", centerStrike + strikeSpacing * 3)));

def c8_V_d = volume(concat(concat(".", concat(getSymbolPart(), concat(concat(EXPYear - 2000, if ExpMonth2 <= 9 then concat("0", ExpMonth2) else concat("", ExpMonth2)), if ExpDOM <= 9 then concat("0", ExpDOM) else concat("", ExpDOM)))), concat("C", centerStrike - strikeSpacing * 4)));
def c9_V_d = volume(concat(concat(".", concat(getSymbolPart(), concat(concat(EXPYear - 2000, if ExpMonth2 <= 9 then concat("0", ExpMonth2) else concat("", ExpMonth2)), if ExpDOM <= 9 then concat("0", ExpDOM) else concat("", ExpDOM)))), concat("C", centerStrike + strikeSpacing * 4)));
def c10_V_d = volume(concat(concat(".", concat(getSymbolPart(), concat(concat(EXPYear - 2000, if ExpMonth2 <= 9 then concat("0", ExpMonth2) else concat("", ExpMonth2)), if ExpDOM <= 9 then concat("0", ExpDOM) else concat("", ExpDOM)))), concat("C", centerStrike - strikeSpacing * 5)));
def c11_V_d = volume(concat(concat(".", concat(getSymbolPart(), concat(concat(EXPYear - 2000, if ExpMonth2 <= 9 then concat("0", ExpMonth2) else concat("", ExpMonth2)), if ExpDOM <= 9 then concat("0", ExpDOM) else concat("", ExpDOM)))), concat("C", centerStrike + strikeSpacing * 5)));
def c12_V_d = volume(concat(concat(".", concat(getSymbolPart(), concat(concat(EXPYear - 2000, if ExpMonth2 <= 9 then concat("0", ExpMonth2) else concat("", ExpMonth2)), if ExpDOM <= 9 then concat("0", ExpDOM) else concat("", ExpDOM)))), concat("C", centerStrike - strikeSpacing * 6)));
def c13_V_d = volume(concat(concat(".", concat(getSymbolPart(), concat(concat(EXPYear - 2000, if ExpMonth2 <= 9 then concat("0", ExpMonth2) else concat("", ExpMonth2)), if ExpDOM <= 9 then concat("0", ExpDOM) else concat("", ExpDOM)))), concat("C", centerStrike + strikeSpacing * 6)));
def c14_V_d = volume(concat(concat(".", concat(getSymbolPart(), concat(concat(EXPYear - 2000, if ExpMonth2 <= 9 then concat("0", ExpMonth2) else concat("", ExpMonth2)), if ExpDOM <= 9 then concat("0", ExpDOM) else concat("", ExpDOM)))), concat("C", centerStrike - strikeSpacing * 7)));
def c15_V_d = volume(concat(concat(".", concat(getSymbolPart(), concat(concat(EXPYear - 2000, if ExpMonth2 <= 9 then concat("0", ExpMonth2) else concat("", ExpMonth2)), if ExpDOM <= 9 then concat("0", ExpDOM) else concat("", ExpDOM)))), concat("C", centerStrike + strikeSpacing * 7)));
def c16_V_d = volume(concat(concat(".", concat(getSymbolPart(), concat(concat(EXPYear - 2000, if ExpMonth2 <= 9 then concat("0", ExpMonth2) else concat("", ExpMonth2)), if ExpDOM <= 9 then concat("0", ExpDOM) else concat("", ExpDOM)))), concat("C", centerStrike - strikeSpacing * 8)));
def c17_V_d = volume(concat(concat(".", concat(getSymbolPart(), concat(concat(EXPYear - 2000, if ExpMonth2 <= 9 then concat("0", ExpMonth2) else concat("", ExpMonth2)), if ExpDOM <= 9 then concat("0", ExpDOM) else concat("", ExpDOM)))), concat("C", centerStrike + strikeSpacing * 8)));
def c18_V_d = volume(concat(concat(".", concat(getSymbolPart(), concat(concat(EXPYear - 2000, if ExpMonth2 <= 9 then concat("0", ExpMonth2) else concat("", ExpMonth2)), if ExpDOM <= 9 then concat("0", ExpDOM) else concat("", ExpDOM)))), concat("C", centerStrike - strikeSpacing * 9)));
def c19_V_d = volume(concat(concat(".", concat(getSymbolPart(), concat(concat(EXPYear - 2000, if ExpMonth2 <= 9 then concat("0", ExpMonth2) else concat("", ExpMonth2)), if ExpDOM <= 9 then concat("0", ExpDOM) else concat("", ExpDOM)))), concat("C", centerStrike + strikeSpacing * 9)));

def p1_V_d = volume(concat(concat(".", concat(getSymbolPart(), concat(concat(EXPYear - 2000, if ExpMonth2 <= 9 then concat("0", ExpMonth2) else concat("", ExpMonth2)), if ExpDOM <= 9 then concat("0", ExpDOM) else concat("", ExpDOM)))), concat("P", centerStrike)));

def p2_V_d = volume(concat(concat(".", concat(getSymbolPart(), concat(concat(EXPYear - 2000, if ExpMonth2 <= 9 then concat("0", ExpMonth2) else concat("", ExpMonth2)), if ExpDOM <= 9 then concat("0", ExpDOM) else concat("", ExpDOM)))), concat("P", centerStrike - strikeSpacing)));
def p3_V_d = volume(concat(concat(".", concat(getSymbolPart(), concat(concat(EXPYear - 2000, if ExpMonth2 <= 9 then concat("0", ExpMonth2) else concat("", ExpMonth2)), if ExpDOM <= 9 then concat("0", ExpDOM) else concat("", ExpDOM)))), concat("P", centerStrike - strikeSpacing * 2)));
def p4_V_d = volume(concat(concat(".", concat(getSymbolPart(), concat(concat(EXPYear - 2000, if ExpMonth2 <= 9 then concat("0", ExpMonth2) else concat("", ExpMonth2)), if ExpDOM <= 9 then concat("0", ExpDOM) else concat("", ExpDOM)))), concat("P", centerStrike - strikeSpacing * 3)));

def p5_V_d = volume(concat(concat(".", concat(getSymbolPart(), concat(concat(EXPYear - 2000, if ExpMonth2 <= 9 then concat("0", ExpMonth2) else concat("", ExpMonth2)), if ExpDOM <= 9 then concat("0", ExpDOM) else concat("", ExpDOM)))), concat("P", centerStrike + strikeSpacing)));
def p6_V_d = volume(concat(concat(".", concat(getSymbolPart(), concat(concat(EXPYear - 2000, if ExpMonth2 <= 9 then concat("0", ExpMonth2) else concat("", ExpMonth2)), if ExpDOM <= 9 then concat("0", ExpDOM) else concat("", ExpDOM)))), concat("P", centerStrike + strikeSpacing * 2)));
def p7_V_d = volume(concat(concat(".", concat(getSymbolPart(), concat(concat(EXPYear - 2000, if ExpMonth2 <= 9 then concat("0", ExpMonth2) else concat("", ExpMonth2)), if ExpDOM <= 9 then concat("0", ExpDOM) else concat("", ExpDOM)))), concat("P", centerStrike + strikeSpacing * 3)));

def p8_V_d = volume(concat(concat(".", concat(getSymbolPart(), concat(concat(EXPYear - 2000, if ExpMonth2 <= 9 then concat("0", ExpMonth2) else concat("", ExpMonth2)), if ExpDOM <= 9 then concat("0", ExpDOM) else concat("", ExpDOM)))), concat("P", centerStrike - strikeSpacing * 4)));
def p9_V_d = volume(concat(concat(".", concat(getSymbolPart(), concat(concat(EXPYear - 2000, if ExpMonth2 <= 9 then concat("0", ExpMonth2) else concat("", ExpMonth2)), if ExpDOM <= 9 then concat("0", ExpDOM) else concat("", ExpDOM)))), concat("P", centerStrike + strikeSpacing * 4)));
def p10_V_d = volume(concat(concat(".", concat(getSymbolPart(), concat(concat(EXPYear - 2000, if ExpMonth2 <= 9 then concat("0", ExpMonth2) else concat("", ExpMonth2)), if ExpDOM <= 9 then concat("0", ExpDOM) else concat("", ExpDOM)))), concat("P", centerStrike - strikeSpacing * 5)));
def p11_V_d = volume(concat(concat(".", concat(getSymbolPart(), concat(concat(EXPYear - 2000, if ExpMonth2 <= 9 then concat("0", ExpMonth2) else concat("", ExpMonth2)), if ExpDOM <= 9 then concat("0", ExpDOM) else concat("", ExpDOM)))), concat("P", centerStrike + strikeSpacing * 5)));
def p12_V_d = volume(concat(concat(".", concat(getSymbolPart(), concat(concat(EXPYear - 2000, if ExpMonth2 <= 9 then concat("0", ExpMonth2) else concat("", ExpMonth2)), if ExpDOM <= 9 then concat("0", ExpDOM) else concat("", ExpDOM)))), concat("P", centerStrike - strikeSpacing * 6)));
def p13_V_d = volume(concat(concat(".", concat(getSymbolPart(), concat(concat(EXPYear - 2000, if ExpMonth2 <= 9 then concat("0", ExpMonth2) else concat("", ExpMonth2)), if ExpDOM <= 9 then concat("0", ExpDOM) else concat("", ExpDOM)))), concat("P", centerStrike + strikeSpacing * 6)));
def p14_V_d = volume(concat(concat(".", concat(getSymbolPart(), concat(concat(EXPYear - 2000, if ExpMonth2 <= 9 then concat("0", ExpMonth2) else concat("", ExpMonth2)), if ExpDOM <= 9 then concat("0", ExpDOM) else concat("", ExpDOM)))), concat("P", centerStrike - strikeSpacing * 7)));
def p15_V_d = volume(concat(concat(".", concat(getSymbolPart(), concat(concat(EXPYear - 2000, if ExpMonth2 <= 9 then concat("0", ExpMonth2) else concat("", ExpMonth2)), if ExpDOM <= 9 then concat("0", ExpDOM) else concat("", ExpDOM)))), concat("P", centerStrike + strikeSpacing * 7)));
def p16_V_d = volume(concat(concat(".", concat(getSymbolPart(), concat(concat(EXPYear - 2000, if ExpMonth2 <= 9 then concat("0", ExpMonth2) else concat("", ExpMonth2)), if ExpDOM <= 9 then concat("0", ExpDOM) else concat("", ExpDOM)))), concat("P", centerStrike - strikeSpacing * 8)));
def p17_V_d = volume(concat(concat(".", concat(getSymbolPart(), concat(concat(EXPYear - 2000, if ExpMonth2 <= 9 then concat("0", ExpMonth2) else concat("", ExpMonth2)), if ExpDOM <= 9 then concat("0", ExpDOM) else concat("", ExpDOM)))), concat("P", centerStrike + strikeSpacing * 8)));
def p18_V_d = volume(concat(concat(".", concat(getSymbolPart(), concat(concat(EXPYear - 2000, if ExpMonth2 <= 9 then concat("0", ExpMonth2) else concat("", ExpMonth2)), if ExpDOM <= 9 then concat("0", ExpDOM) else concat("", ExpDOM)))), concat("P", centerStrike - strikeSpacing * 9)));
def p19_V_d = volume(concat(concat(".", concat(getSymbolPart(), concat(concat(EXPYear - 2000, if ExpMonth2 <= 9 then concat("0", ExpMonth2) else concat("", ExpMonth2)), if ExpDOM <= 9 then concat("0", ExpDOM) else concat("", ExpDOM)))), concat("P", centerStrike + strikeSpacing * 9)));

def c1_V = if !IsNaN(c1_V_d) then c1_V_d else 0;
def c2_V = if !IsNaN(c2_V_d) then c2_V_d else 0;
def c3_V = if !IsNaN(c3_V_d) then c3_V_d else 0;
def c4_V = if !IsNaN(c4_V_d) then c4_V_d else 0;
def c5_V = if !IsNaN(c5_V_d) then c5_V_d else 0;
def c6_V = if !IsNaN(c6_V_d) then c6_V_d else 0;
def c7_V = if !IsNaN(c7_V_d) then c7_V_d else 0;
def c8_V = if !IsNaN(c8_V_d) then c8_V_d else 0;
def c9_V = if !IsNaN(c9_V_d) then c9_V_d else 0;
def c10_V = if !IsNaN(c10_V_d) then c10_V_d else 0;
def c11_V = if !IsNaN(c11_V_d) then c11_V_d else 0;

def c12_V = if !IsNaN(c12_V_d) then c12_V_d else 0;
def c13_V = if !IsNaN(c13_V_d) then c13_V_d else 0;
def c14_V = if !IsNaN(c14_V_d) then c14_V_d else 0;
def c15_V = if !IsNaN(c15_V_d) then c15_V_d else 0;
def c16_V = if !IsNaN(c16_V_d) then c16_V_d else 0;
def c17_V = if !IsNaN(c17_V_d) then c17_V_d else 0;
def c18_V = if !IsNaN(c18_V_d) then c18_V_d else 0;
def c19_V = if !IsNaN(c19_V_d) then c19_V_d else 0;

def p1_V = if !IsNaN(p1_V_d) then p1_V_d else 0;
def p2_V = if !IsNaN(p2_V_d) then p2_V_d else 0;
def p3_V = if !IsNaN(p3_V_d) then p3_V_d else 0;
def p4_V = if !IsNaN(p4_V_d) then p4_V_d else 0;
def p5_V = if !IsNaN(p5_V_d) then p5_V_d else 0;
def p6_V = if !IsNaN(p6_V_d) then p6_V_d else 0;
def p7_V = if !IsNaN(p7_V_d) then p7_V_d else 0;
def p8_V = if !IsNaN(p8_V_d) then p8_V_d else 0;
def p9_V = if !IsNaN(p9_V_d) then p9_V_d else 0;
def p10_V = if !IsNaN(p10_V_d) then p10_V_d else 0;
def p11_V = if !IsNaN(p11_V_d) then p11_V_d else 0;

def p12_V = if !IsNaN(p12_V_d) then p12_V_d else 0;
def p13_V = if !IsNaN(p13_V_d) then p13_V_d else 0;
def p14_V = if !IsNaN(p14_V_d) then p14_V_d else 0;
def p15_V = if !IsNaN(p15_V_d) then p15_V_d else 0;
def p16_V = if !IsNaN(p16_V_d) then p16_V_d else 0;
def p17_V = if !IsNaN(p17_V_d) then p17_V_d else 0;
def p18_V = if !IsNaN(p18_V_d) then p18_V_d else 0;
def p19_V = if !IsNaN(p19_V_d) then p19_V_d else 0;

def c1t = Max(Max(Max(Max(c1_V, c2_V), c3_V), c4_V), c5_V);
def c2t = Max(Max(Max(Max(Max(c6_V, c7_V), c8_V), c9_V), c10_V), c11_V);

def c3t = Max(Max(Max(Max(Max(c12_V, c13_V), c14_V), c15_V), c16_V), c17_V);
def c4t = Max(c18_V, c19_V);

def p1t = Max(Max(Max(Max(p1_V, p2_V), p3_V), p4_V), p5_V);
def p2t = Max(Max(Max(Max(Max(p6_V, p7_V), p8_V), p9_V), p10_V), p11_V);

def p3t = Max(Max(Max(Max(Max(p12_V, p13_V), p14_V), p15_V), p16_V), p17_V);
def p4t = Max(p18_V, p19_V);


def c_V_max = Max(Max(Max(c1t, c2t), c3t), c4t);
def p_V_max = Max(Max(Max(p1t, p2t), p3t), p4t);
def OI_max = Max(c_V_max, p_V_max);

def cVT = c1_V + c2_V + c3_V + c4_V + c5_V + c6_V + c7_V + c8_V + c9_V + c10_V + c11_V + c12_V + c13_V + c14_V + c15_V + c16_V + c17_V + c18_V + c19_V;

def pVT = p1_V + p2_V + p3_V + p4_V + p5_V + p6_V + p7_V + p8_V + p9_V + p10_V + p11_V + p12_V + p13_V + p14_V + p15_V + p16_V + p17_V + p18_V + p19_V;

AddLabel(yes,Concat("Call Volume: ", cVT),globalColor("Calls"));
AddLabel(yes,Concat("Put Volume: ", pVT),globalColor("Puts"));

rec c1_D = if IsNaN(close) then c1_D[1] else Ceil((c1_V / OI_Max) * barLength);
plot C1 = if c1_D >= extBar and extBar != 0 then centerStrike + barOffset else double.nan;
C1.SetDefaultColor(globalColor("Calls") );
C1.SetLineWeight(barWeight);

rec c2_D = if IsNaN(close) then c2_D[1] else Ceil((c2_V / OI_Max) * barLength);
plot C2 = if c2_D >= extBar and extBar != 0 then centerStrike + barOffset - strikeSpacing else double.nan;
C2.SetDefaultColor(globalColor("Calls"));
C2.SetLineWeight(barWeight);

rec c3_D = if IsNaN(close) then c3_D[1] else Ceil((c3_V / OI_Max) * barLength);
plot C3 = if c3_D >= extBar and extBar != 0 then centerStrike + barOffset - strikeSpacing * 2 else double.nan;
C3.SetDefaultColor(globalColor("Calls"));
C3.SetLineWeight(barWeight);

rec c4_D = if IsNaN(close) then c4_D[1] else Ceil((c4_V / OI_Max) * barLength);
plot C4 = if c4_D >= extBar and extBar != 0 then centerStrike + barOffset - strikeSpacing * 3 else double.nan;
C4.SetDefaultColor(globalColor("Calls"));
C4.SetLineWeight(barWeight);

rec c5_D = if IsNaN(close) then c5_D[1] else Ceil((c5_V / OI_Max) * barLength);
plot C5 = if c5_D >= extBar and extBar != 0 then centerStrike + barOffset + strikeSpacing else double.nan;
C5.SetDefaultColor(globalColor("Calls"));
C5.SetLineWeight(barWeight);

rec c6_D = if IsNaN(close) then c6_D[1] else Ceil((c6_V / OI_Max) * barLength);
plot C6 = if c6_D >= extBar and extBar != 0 then centerStrike + barOffset + strikeSpacing * 2 else double.nan;
C6.SetDefaultColor(globalColor("Calls"));
C6.SetLineWeight(barWeight);

rec c7_D = if IsNaN(close) then c7_D[1] else Ceil((c7_V / OI_Max) * barLength);
plot C7 = if c7_D >= extBar and extBar != 0 then centerStrike + barOffset + strikeSpacing * 3 else double.nan;
C7.SetDefaultColor(globalColor("Calls"));
C7.SetLineWeight(barWeight);

rec c8_D = if IsNaN(close) then c8_D[1] else Ceil((c8_V / OI_Max) * barLength);
plot C8 = if c8_D >= extBar and extBar != 0 then centerStrike + barOffset - strikeSpacing * 4 else double.nan;
C8.SetDefaultColor(globalColor("Calls"));
C8.SetLineWeight(barWeight);

rec c9_D = if IsNaN(close) then c9_D[1] else Ceil((c9_V / OI_Max) * barLength);
plot C9 = if c9_D >= extBar and extBar != 0 then centerStrike + barOffset + strikeSpacing * 4 else double.nan;
C9.SetDefaultColor(globalColor("Calls"));
C9.SetLineWeight(barWeight);

rec c10_D = if IsNaN(close) then c10_D[1] else Ceil((c10_V / OI_Max) * barLength);
plot C10 = if c10_D >= extBar and extBar != 0 then centerStrike + barOffset - strikeSpacing * 5 else double.nan;
C10.SetDefaultColor(globalColor("Calls"));
C10.SetLineWeight(barWeight);

rec c11_D = if IsNaN(close) then c11_D[1] else Ceil((c11_V / OI_Max) * barLength);
plot C11 = if c11_D >= extBar and extBar != 0 then centerStrike + barOffset + strikeSpacing * 5 else double.nan;
C11.SetDefaultColor(globalColor("Calls"));
C11.SetLineWeight(barWeight);

rec c12_D = if IsNaN(close) then c12_D[1] else Ceil((c12_V / OI_Max) * barLength);
plot C12 = if c12_D >= extBar and extBar != 0 then centerStrike + barOffset - strikeSpacing * 6 else double.nan;
C12.SetDefaultColor(globalColor("Calls"));
C12.SetLineWeight(barWeight);

rec c13_D = if IsNaN(close) then c13_D[1] else Ceil((c13_V / OI_Max) * barLength);
plot C13 = if c13_D >= extBar and extBar != 0 then centerStrike + barOffset + strikeSpacing * 6 else double.nan;
C13.SetDefaultColor(globalColor("Calls"));
C13.SetLineWeight(barWeight);

rec c14_D = if IsNaN(close) then c14_D[1] else Ceil((c14_V / OI_Max) * barLength);
plot C14 = if c14_D >= extBar and extBar != 0 then centerStrike + barOffset - strikeSpacing * 7 else double.nan;
C14.SetDefaultColor(globalColor("Calls"));
C14.SetLineWeight(barWeight);

rec c15_D = if IsNaN(close) then c15_D[1] else Ceil((c15_V / OI_Max) * barLength);
plot C15 = if c15_D >= extBar and extBar != 0 then centerStrike + barOffset + strikeSpacing * 7 else double.nan;
C15.SetDefaultColor(globalColor("Calls"));
C15.SetLineWeight(barWeight);

rec c16_D = if IsNaN(close) then c16_D[1] else Ceil((c16_V / OI_Max) * barLength);
plot C16 = if c16_D >= extBar and extBar != 0 then centerStrike + barOffset - strikeSpacing * 8 else double.nan;
C16.SetDefaultColor(globalColor("Calls"));
C16.SetLineWeight(barWeight);

rec c17_D = if IsNaN(close) then c17_D[1] else Ceil((c17_V / OI_Max) * barLength);
plot C17 = if c17_D >= extBar and extBar != 0 then centerStrike + barOffset + strikeSpacing * 8 else double.nan;
C17.SetDefaultColor(globalColor("Calls"));
C17.SetLineWeight(barWeight);

rec c18_D = if IsNaN(close) then c18_D[1] else Ceil((c18_V / OI_Max) * barLength);
plot C18 = if c18_D >= extBar and extBar != 0 then centerStrike + barOffset - strikeSpacing * 9 else double.nan;
C18.SetDefaultColor(globalColor("Calls"));
C18.SetLineWeight(barWeight);

rec c19_D = if IsNaN(close) then c19_D[1] else Ceil((c19_V / OI_Max) * barLength);
plot C19 = if c19_D >= extBar and extBar != 0 then centerStrike + barOffset + strikeSpacing * 9 else double.nan;
C19.SetDefaultColor(globalColor("Calls"));
C19.SetLineWeight(barWeight);


rec p1_D = if IsNaN(close) then p1_D[1] else Ceil((p1_V / OI_Max) * barLength);
plot P1 = if p1_D >= extBar and extBar != 0 then centerStrike - barOffset else double.nan;
P1.SetDefaultColor(globalColor("Puts") );
P1.SetLineWeight(barWeight);

rec p2_D = if IsNaN(close) then p2_D[1] else Ceil((p2_V / OI_Max) * barLength);
plot P2 = if p2_D >= extBar and extBar != 0 then centerStrike - barOffset - strikeSpacing else double.nan;
P2.SetDefaultColor(globalColor("Puts"));
P2.SetLineWeight(barWeight);

rec p3_D = if IsNaN(close) then p3_D[1] else Ceil((p3_V / OI_Max) * barLength);
plot P3 = if p3_D >= extBar and extBar != 0 then centerStrike - barOffset - strikeSpacing * 2 else double.nan;
P3.SetDefaultColor(globalColor("Puts"));
P3.SetLineWeight(barWeight);

rec p4_D = if IsNaN(close) then p4_D[1] else Ceil((p4_V / OI_Max) * barLength);
plot P4 = if p4_D >= extBar and extBar != 0 then centerStrike - barOffset - strikeSpacing * 3 else double.nan;
P4.SetDefaultColor(globalColor("Puts"));
P4.SetLineWeight(barWeight);

rec p5_D = if IsNaN(close) then p5_D[1] else Ceil((p5_V / OI_Max) * barLength);
plot P5 = if p5_D >= extBar and extBar != 0 then centerStrike - barOffset + strikeSpacing else double.nan;
P5.SetDefaultColor(globalColor("Puts"));
P5.SetLineWeight(barWeight);

rec p6_D = if IsNaN(close) then p6_D[1] else Ceil((p6_V / OI_Max) * barLength);
plot P6 = if p6_D >= extBar and extBar != 0 then centerStrike - barOffset + strikeSpacing * 2 else double.nan;
P6.SetDefaultColor(globalColor("Puts"));
P6.SetLineWeight(barWeight);

rec p7_D = if IsNaN(close) then p7_D[1] else Ceil((p7_V / OI_Max) * barLength);
plot P7 = if p7_D >= extBar and extBar != 0 then centerStrike - barOffset + strikeSpacing * 3 else double.nan;
P7.SetDefaultColor(globalColor("Puts"));
P7.SetLineWeight(barWeight);

rec p8_D = if IsNaN(close) then p8_D[1] else Ceil((p8_V / OI_Max) * barLength);
plot P8 = if p8_D >= extBar and extBar != 0 then centerStrike - barOffset - strikeSpacing * 4 else double.nan;
P8.SetDefaultColor(globalColor("Puts"));
P8.SetLineWeight(barWeight);

rec p9_D = if IsNaN(close) then p9_D[1] else Ceil((p9_V / OI_Max) * barLength);
plot P9 = if p9_D >= extBar and extBar != 0 then centerStrike - barOffset + strikeSpacing * 4 else double.nan;
P9.SetDefaultColor(globalColor("Puts"));
P9.SetLineWeight(barWeight);

rec p10_D = if IsNaN(close) then p10_D[1] else Ceil((p10_V / OI_Max) * barLength);
plot P10 = if p10_D >= extBar and extBar != 0 then centerStrike - barOffset - strikeSpacing * 5 else double.nan;
P10.SetDefaultColor(globalColor("Puts"));
P10.SetLineWeight(barWeight);

rec p11_D = if IsNaN(close) then p11_D[1] else Ceil((p11_V / OI_Max) * barLength);
plot P11 = if p11_D >= extBar and extBar != 0 then centerStrike - barOffset + strikeSpacing * 5 else double.nan;
P11.SetDefaultColor(globalColor("Puts"));
P11.SetLineWeight(barWeight);

rec p12_D = if IsNaN(close) then p12_D[1] else Ceil((p12_V / OI_Max) * barLength);
plot P12 = if p12_D >= extBar and extBar != 0 then centerStrike - barOffset - strikeSpacing * 6 else double.nan;
P12.SetDefaultColor(globalColor("Puts"));
P12.SetLineWeight(barWeight);

rec p13_D = if IsNaN(close) then p13_D[1] else Ceil((p13_V / OI_Max) * barLength);
plot P13 = if p13_D >= extBar and extBar != 0 then centerStrike - barOffset + strikeSpacing * 6 else double.nan;
P13.SetDefaultColor(globalColor("Puts"));
P13.SetLineWeight(barWeight);

rec p14_D = if IsNaN(close) then p14_D[1] else Ceil((p14_V / OI_Max) * barLength);
plot P14 = if p14_D >= extBar and extBar != 0 then centerStrike - barOffset - strikeSpacing * 7 else double.nan;
P14.SetDefaultColor(globalColor("Puts"));
P14.SetLineWeight(barWeight);

rec p15_D = if IsNaN(close) then p15_D[1] else Ceil((p15_V / OI_Max) * barLength);
plot P15 = if p15_D >= extBar and extBar != 0 then centerStrike - barOffset + strikeSpacing * 7 else double.nan;
P15.SetDefaultColor(globalColor("Puts"));
P15.SetLineWeight(barWeight);

rec p16_D = if IsNaN(close) then p16_D[1] else Ceil((p16_V / OI_Max) * barLength);
plot P16 = if p16_D >= extBar and extBar != 0 then centerStrike - barOffset - strikeSpacing * 8 else double.nan;
P16.SetDefaultColor(globalColor("Puts"));
P16.SetLineWeight(barWeight);

rec p17_D = if IsNaN(close) then p17_D[1] else Ceil((p17_V / OI_Max) * barLength);
plot P17 = if p17_D >= extBar and extBar != 0 then centerStrike - barOffset + strikeSpacing * 8 else double.nan;
P17.SetDefaultColor(globalColor("Puts"));
P17.SetLineWeight(barWeight);

rec p18_D = if IsNaN(close) then p18_D[1] else Ceil((p18_V / OI_Max) * barLength);
plot P18 = if p18_D >= extBar and extBar != 0 then centerStrike - barOffset - strikeSpacing * 9 else double.nan;
P18.SetDefaultColor(globalColor("Puts"));
P18.SetLineWeight(barWeight);

rec p19_D = if IsNaN(close) then p19_D[1] else Ceil((p19_V / OI_Max) * barLength);
plot P19 = if p19_D >= extBar and extBar != 0 then centerStrike - barOffset + strikeSpacing * 9 else double.nan;
P19.SetDefaultColor(globalColor("Puts"));
P19.SetLineWeight(barWeight);


C1.SetPaintingStrategy(PaintingStrategy.DASHES);
C2.SetPaintingStrategy(PaintingStrategy.DASHES);
C3.SetPaintingStrategy(PaintingStrategy.DASHES);
C4.SetPaintingStrategy(PaintingStrategy.DASHES);
C5.SetPaintingStrategy(PaintingStrategy.DASHES);
C6.SetPaintingStrategy(PaintingStrategy.DASHES);
C7.SetPaintingStrategy(PaintingStrategy.DASHES);
C8.SetPaintingStrategy(PaintingStrategy.DASHES);
C9.SetPaintingStrategy(PaintingStrategy.DASHES);
C10.SetPaintingStrategy(PaintingStrategy.DASHES);
C11.SetPaintingStrategy(PaintingStrategy.DASHES);

C12.SetPaintingStrategy(PaintingStrategy.DASHES);
C13.SetPaintingStrategy(PaintingStrategy.DASHES);
C14.SetPaintingStrategy(PaintingStrategy.DASHES);
C15.SetPaintingStrategy(PaintingStrategy.DASHES);
C16.SetPaintingStrategy(PaintingStrategy.DASHES);
C17.SetPaintingStrategy(PaintingStrategy.DASHES);
C18.SetPaintingStrategy(PaintingStrategy.DASHES);
C19.SetPaintingStrategy(PaintingStrategy.DASHES);


P1.SetPaintingStrategy(PaintingStrategy.DASHES);
P2.SetPaintingStrategy(PaintingStrategy.DASHES);
P3.SetPaintingStrategy(PaintingStrategy.DASHES);
P4.SetPaintingStrategy(PaintingStrategy.DASHES);
P5.SetPaintingStrategy(PaintingStrategy.DASHES);
P6.SetPaintingStrategy(PaintingStrategy.DASHES);
P7.SetPaintingStrategy(PaintingStrategy.DASHES);
P8.SetPaintingStrategy(PaintingStrategy.DASHES);
P9.SetPaintingStrategy(PaintingStrategy.DASHES);
P10.SetPaintingStrategy(PaintingStrategy.DASHES);
P11.SetPaintingStrategy(PaintingStrategy.DASHES);

P12.SetPaintingStrategy(PaintingStrategy.DASHES);
P13.SetPaintingStrategy(PaintingStrategy.DASHES);
P14.SetPaintingStrategy(PaintingStrategy.DASHES);
P15.SetPaintingStrategy(PaintingStrategy.DASHES);
P16.SetPaintingStrategy(PaintingStrategy.DASHES);
P17.SetPaintingStrategy(PaintingStrategy.DASHES);
P18.SetPaintingStrategy(PaintingStrategy.DASHES);
P19.SetPaintingStrategy(PaintingStrategy.DASHES);



rec c1_V_e = if IsNaN(close) and !IsNaN(close[1]) then c1_V[1] else c1_V_e[1];
rec c2_V_e = if IsNaN(close) and !IsNaN(close[1]) then c2_V[1] else c2_V_e[1];
rec c3_V_e = if IsNaN(close) and !IsNaN(close[1]) then c3_V[1] else c3_V_e[1];
rec c4_V_e = if IsNaN(close) and !IsNaN(close[1]) then c4_V[1] else c4_V_e[1];
rec c5_V_e = if IsNaN(close) and !IsNaN(close[1]) then c5_V[1] else c5_V_e[1];
rec c6_V_e = if IsNaN(close) and !IsNaN(close[1]) then c6_V[1] else c6_V_e[1];
rec c7_V_e = if IsNaN(close) and !IsNaN(close[1]) then c7_V[1] else c7_V_e[1];
rec c8_V_e = if IsNaN(close) and !IsNaN(close[1]) then c8_V[1] else c8_V_e[1];
rec c9_V_e = if IsNaN(close) and !IsNaN(close[1]) then c9_V[1] else c9_V_e[1];
rec c10_V_e = if IsNaN(close) and !IsNaN(close[1]) then c10_V[1] else c10_V_e[1];
rec c11_V_e = if IsNaN(close) and !IsNaN(close[1]) then c11_V[1] else c11_V_e[1];

rec c12_V_e = if IsNaN(close) and !IsNaN(close[1]) then c12_V[1] else c12_V_e[1];
rec c13_V_e = if IsNaN(close) and !IsNaN(close[1]) then c13_V[1] else c13_V_e[1];
rec c14_V_e = if IsNaN(close) and !IsNaN(close[1]) then c14_V[1] else c14_V_e[1];
rec c15_V_e = if IsNaN(close) and !IsNaN(close[1]) then c15_V[1] else c15_V_e[1];
rec c16_V_e = if IsNaN(close) and !IsNaN(close[1]) then c16_V[1] else c16_V_e[1];
rec c17_V_e = if IsNaN(close) and !IsNaN(close[1]) then c17_V[1] else c17_V_e[1];
rec c18_V_e = if IsNaN(close) and !IsNaN(close[1]) then c18_V[1] else c18_V_e[1];
rec c19_V_e = if IsNaN(close) and !IsNaN(close[1]) then c19_V[1] else c19_V_e[1];


rec p1_V_e = if IsNaN(close) and !IsNaN(close[1]) then p1_V[1] else p1_V_e[1];
rec p2_V_e = if IsNaN(close) and !IsNaN(close[1]) then p2_V[1] else p2_V_e[1];
rec p3_V_e = if IsNaN(close) and !IsNaN(close[1]) then p3_V[1] else p3_V_e[1];
rec p4_V_e = if IsNaN(close) and !IsNaN(close[1]) then p4_V[1] else p4_V_e[1];
rec p5_V_e = if IsNaN(close) and !IsNaN(close[1]) then p5_V[1] else p5_V_e[1];
rec p6_V_e = if IsNaN(close) and !IsNaN(close[1]) then p6_V[1] else p6_V_e[1];
rec p7_V_e = if IsNaN(close) and !IsNaN(close[1]) then p7_V[1] else p7_V_e[1];
rec p8_V_e = if IsNaN(close) and !IsNaN(close[1]) then p8_V[1] else p8_V_e[1];
rec p9_V_e = if IsNaN(close) and !IsNaN(close[1]) then p9_V[1] else p9_V_e[1];
rec p10_V_e = if IsNaN(close) and !IsNaN(close[1]) then p10_V[1] else p10_V_e[1];
rec p11_V_e = if IsNaN(close) and !IsNaN(close[1]) then p11_V[1] else p11_V_e[1];

rec p12_V_e = if IsNaN(close) and !IsNaN(close[1]) then p12_V[1] else p12_V_e[1];
rec p13_V_e = if IsNaN(close) and !IsNaN(close[1]) then p13_V[1] else p13_V_e[1];
rec p14_V_e = if IsNaN(close) and !IsNaN(close[1]) then p14_V[1] else p14_V_e[1];
rec p15_V_e = if IsNaN(close) and !IsNaN(close[1]) then p15_V[1] else p15_V_e[1];
rec p16_V_e = if IsNaN(close) and !IsNaN(close[1]) then p16_V[1] else p16_V_e[1];
rec p17_V_e = if IsNaN(close) and !IsNaN(close[1]) then p17_V[1] else p17_V_e[1];
rec p18_V_e = if IsNaN(close) and !IsNaN(close[1]) then p18_V[1] else p18_V_e[1];
rec p19_V_e = if IsNaN(close) and !IsNaN(close[1]) then p19_V[1] else p19_V_e[1];


AddChartBubble(c1_D == extBar, C1, concat("", c1_V_e), globalColor("Calls"), yes );
AddChartBubble(c2_D == extBar, C2, concat("", c2_V_e), globalColor("Calls"), yes );
AddChartBubble(c3_D == extBar, C3, concat("", c3_V_e), globalColor("Calls"), yes );
AddChartBubble(c4_D == extBar, C4, concat("", c4_V_e), globalColor("Calls"), yes );
AddChartBubble(c5_D == extBar, C5, concat("", c5_V_e), globalColor("Calls"), yes );
AddChartBubble(c6_D == extBar, C6, concat("", c6_V_e), globalColor("Calls"), yes );
AddChartBubble(c7_D == extBar, C7, concat("", c7_V_e), globalColor("Calls"), yes );
AddChartBubble(c8_D == extBar, C8, concat("", c8_V_e), globalColor("Calls"), yes );
AddChartBubble(c9_D == extBar, C9, concat("", c9_V_e), globalColor("Calls"), yes );
AddChartBubble(c10_D == extBar, C10, concat("", c10_V_e), globalColor("Calls"), yes );
AddChartBubble(c11_D == extBar, C11, concat("", c11_V_e), globalColor("Calls"), yes );

AddChartBubble(c12_D == extBar, C12, concat("", c12_V_e), globalColor("Calls"), yes );
AddChartBubble(c13_D == extBar, C13, concat("", c13_V_e), globalColor("Calls"), yes );
AddChartBubble(c14_D == extBar, C14, concat("", c14_V_e), globalColor("Calls"), yes );
AddChartBubble(c15_D == extBar, C15, concat("", c15_V_e), globalColor("Calls"), yes );
AddChartBubble(c16_D == extBar, C16, concat("", c16_V_e), globalColor("Calls"), yes );
AddChartBubble(c17_D == extBar, C17, concat("", c17_V_e), globalColor("Calls"), yes );
AddChartBubble(c18_D == extBar, C18, concat("", c18_V_e), globalColor("Calls"), yes );
AddChartBubble(c19_D == extBar, C19, concat("", c19_V_e), globalColor("Calls"), yes );

AddChartBubble(p1_D == extBar, P1, concat("", p1_V_e), globalColor("Puts"), no );
AddChartBubble(p2_D == extBar, P2, concat("", p2_V_e), globalColor("Puts"), no );
AddChartBubble(p3_D == extBar, P3, concat("", p3_V_e), globalColor("Puts"), no );
AddChartBubble(p4_D == extBar, P4, concat("", p4_V_e), globalColor("Puts"), no );
AddChartBubble(p5_D == extBar, P5, concat("", p5_V_e), globalColor("Puts"), no );
AddChartBubble(p6_D == extBar, P6, concat("", p6_V_e), globalColor("Puts"), no );
AddChartBubble(p7_D == extBar, P7, concat("", p7_V_e), globalColor("Puts"), no );
AddChartBubble(p8_D == extBar, P8, concat("", p8_V_e), globalColor("Puts"), no );
AddChartBubble(p9_D == extBar, P9, concat("", p9_V_e), globalColor("Puts"), no );
AddChartBubble(p10_D == extBar, P10, concat("", p10_V_e), globalColor("Puts"), no );
AddChartBubble(p11_D == extBar, P11, concat("", p11_V_e), globalColor("Puts"), no );

AddChartBubble(p12_D == extBar, P12, concat("", p12_V_e), globalColor("Puts"), no );
AddChartBubble(p13_D == extBar, P13, concat("", p13_V_e), globalColor("Puts"), no );
AddChartBubble(p14_D == extBar, P14, concat("", p14_V_e), globalColor("Puts"), no );
AddChartBubble(p15_D == extBar, P15, concat("", p15_V_e), globalColor("Puts"), no );
AddChartBubble(p16_D == extBar, P16, concat("", p16_V_e), globalColor("Puts"), no );
AddChartBubble(p17_D == extBar, P17, concat("", p17_V_e), globalColor("Puts"), no );
AddChartBubble(p18_D == extBar, P18, concat("", p18_V_e), globalColor("Puts"), no );
AddChartBubble(p19_D == extBar, P19, concat("", p19_V_e), globalColor("Puts"), no );

C1.HideBubble();
C2.HideBubble();
C3.HideBubble();
C4.HideBubble();
C5.HideBubble();
C6.HideBubble();
C7.HideBubble();
C8.HideBubble();
C9.HideBubble();
C10.HideBubble();
C11.HideBubble();

C12.HideBubble();
C13.HideBubble();
C14.HideBubble();
C15.HideBubble();
C16.HideBubble();
C17.HideBubble();
C18.HideBubble();
C19.HideBubble();

P1.HideBubble();
P2.HideBubble();
P3.HideBubble();
P4.HideBubble();
P5.HideBubble();
P6.HideBubble();
P7.HideBubble();
P8.HideBubble();
P9.HideBubble();
P10.HideBubble();
P11.HideBubble();

P12.HideBubble();
P13.HideBubble();
P14.HideBubble();
P15.HideBubble();
P16.HideBubble();
P17.HideBubble();
P18.HideBubble();
P19.HideBubble();

C1.HideTitle();
C2.HideTitle();
C3.HideTitle();
C4.HideTitle();
C5.HideTitle();
C6.HideTitle();
C7.HideTitle();
C8.HideTitle();
C9.HideTitle();
C10.HideTitle();
C11.HideTitle();

C12.HideTitle();
C13.HideTitle();
C14.HideTitle();
C15.HideTitle();
C16.HideTitle();
C17.HideTitle();
C18.HideTitle();
C19.HideTitle();

P1.HideTitle();
P2.HideTitle();
P3.HideTitle();
P4.HideTitle();
P5.HideTitle();
P6.HideTitle();
P7.HideTitle();
P8.HideTitle();
P9.HideTitle();
P10.HideTitle();
P11.HideTitle();

P12.HideTitle();
P13.HideTitle();
P14.HideTitle();
P15.HideTitle();
P16.HideTitle();
P17.HideTitle();
P18.HideTitle();
P19.HideTitle();
 

Angrybear

Member
VIP
# TS_OptionVolumeHeatmap
# (c) 2013 ThinkScripter, LLC
# http://www.thinkscripter.com
# [email protected]
# Last Update 23 April 2013
# Next3rdFriday code (c) thinkorswim


declare lower;

input period = 20;
input gain = 1.0;
input calculation_voodoo = {default a, b};

# Next3rdFriday excerpt
input series = 1;
input show_label = yes;

def CurrentYear = GetYear();
def CurrentMonth = GetMonth();
def CurrentDOM = GetDayOfMonth(GetYYYYMMDD());

def Day1DOW1 = GetDayOfWeek(CurrentYear * 10000 + CurrentMonth * 100 + 1);
def FirstFridayDOM1 = if Day1DOW1 < 6
then 6 - Day1DOW1
else if Day1DOW1 == 6
then 7
else 6;
def RollDOM = FirstFridayDOM1 + 14;
def ExpMonth1 = if RollDOM > CurrentDOM
then CurrentMonth + series - 1
else CurrentMonth + series;
def ExpMonth2 = if ExpMonth1 > 12
then ExpMonth1 - 12
else ExpMonth1;
def ExpYear = if ExpMonth1 > 12
then CurrentYear + 1
else CurrentYear;
def Day1DOW = GetDayOfWeek(ExpYear * 10000 + ExpMonth2 * 100 + 1);
def FirstFridayDOM = if Day1DOW < 6
then 6 - Day1DOW
else if Day1DOW == 6
then 7
else 6;
def ExpDOM = FirstFridayDOM + 15;


def maxStrikeSpacing = 25;
def centerSpacingDenominator = if close > 150 then 10 else if close > 50 then 5 else 1;

def centerStrike = RoundDown(close / centerSpacingDenominator, 0) * centerSpacingDenominator;
def strikeSpacingC = fold i = 1 to maxStrikeSpacing with spacing = 0 do if !IsNaN( volume(Concat(Concat(".", Concat(GetSymbolPart(), Concat(Concat(ExpYear - 2000, if ExpMonth2 <= 9 then Concat("0", ExpMonth2) else Concat("", ExpMonth2)), if ExpDOM <= 9 then Concat("0", ExpDOM) else Concat("", ExpDOM)))), Concat("C", AsPrice(centerStrike + (maxStrikeSpacing - i)))))) then maxStrikeSpacing - i else spacing;

def strikeSpacing = strikeSpacingC ;

AddLabel(show_label, Concat("Expiration: ", Concat(Concat(ExpYear - 2000, if ExpMonth2 <= 9 then Concat("0", ExpMonth2) else Concat("", ExpMonth2)), if ExpDOM <= 9 then Concat("0", ExpDOM) else Concat("", ExpDOM))), Color.WHITE);
AddLabel(show_label, Concat("Strike Spacing: ", strikeSpacing), Color.CYAN);


DefineGlobalColor("L10", CreateColor(255, 255, 0));
DefineGlobalColor("L09", CreateColor(255, 204, 0));
DefineGlobalColor("L08", CreateColor(255, 153, 0));
DefineGlobalColor("L07", CreateColor(255, 102, 0));
DefineGlobalColor("L06", CreateColor(255, 51, 0));
DefineGlobalColor("L05", CreateColor(255, 0, 0));
DefineGlobalColor("L04", CreateColor(204, 0, 0));
DefineGlobalColor("L03", CreateColor(153, 0, 0));
DefineGlobalColor("L02", CreateColor( 51, 0, 0));
DefineGlobalColor("L01", CreateColor( 0, 0, 0));

DefineGlobalColor("H10", CreateColor(0, 255, 255));
DefineGlobalColor("H09", CreateColor(0, 204, 255));
DefineGlobalColor("H08", CreateColor(0, 153, 255));
DefineGlobalColor("H07", CreateColor(0, 102, 255));
DefineGlobalColor("H06", CreateColor(0, 51, 255));
DefineGlobalColor("H05", CreateColor(0, 0, 255));
DefineGlobalColor("H04", CreateColor(0, 0, 204));
DefineGlobalColor("H03", CreateColor(0, 0, 153));
DefineGlobalColor("H02", CreateColor(0, 0, 51));
DefineGlobalColor("H01", CreateColor(0, 0, 0));

def barWeight = 5;

def c1_V_d = volume(Concat(Concat(".", Concat(GetSymbolPart(), Concat(Concat(ExpYear - 2000, if ExpMonth2 <= 9 then Concat("0", ExpMonth2) else Concat("", ExpMonth2)), if ExpDOM <= 9 then Concat("0", ExpDOM) else Concat("", ExpDOM)))), Concat("C", AsPrice(centerStrike ))));
def c2_V_d = volume(Concat(Concat(".", Concat(GetSymbolPart(), Concat(Concat(ExpYear - 2000, if ExpMonth2 <= 9 then Concat("0", ExpMonth2) else Concat("", ExpMonth2)), if ExpDOM <= 9 then Concat("0", ExpDOM) else Concat("", ExpDOM)))), Concat("C", AsPrice(centerStrike - strikeSpacing))));
def c3_V_d = volume(Concat(Concat(".", Concat(GetSymbolPart(), Concat(Concat(ExpYear - 2000, if ExpMonth2 <= 9 then Concat("0", ExpMonth2) else Concat("", ExpMonth2)), if ExpDOM <= 9 then Concat("0", ExpDOM) else Concat("", ExpDOM)))), Concat("C", AsPrice(centerStrike - strikeSpacing * 2))));
def c4_V_d = volume(Concat(Concat(".", Concat(GetSymbolPart(), Concat(Concat(ExpYear - 2000, if ExpMonth2 <= 9 then Concat("0", ExpMonth2) else Concat("", ExpMonth2)), if ExpDOM <= 9 then Concat("0", ExpDOM) else Concat("", ExpDOM)))), Concat("C", AsPrice(centerStrike - strikeSpacing * 3))));
def c5_V_d = volume(Concat(Concat(".", Concat(GetSymbolPart(), Concat(Concat(ExpYear - 2000, if ExpMonth2 <= 9 then Concat("0", ExpMonth2) else Concat("", ExpMonth2)), if ExpDOM <= 9 then Concat("0", ExpDOM) else Concat("", ExpDOM)))), Concat("C", AsPrice(centerStrike + strikeSpacing))));
def c6_V_d = volume(Concat(Concat(".", Concat(GetSymbolPart(), Concat(Concat(ExpYear - 2000, if ExpMonth2 <= 9 then Concat("0", ExpMonth2) else Concat("", ExpMonth2)), if ExpDOM <= 9 then Concat("0", ExpDOM) else Concat("", ExpDOM)))), Concat("C", AsPrice(centerStrike + strikeSpacing * 2))));
def c7_V_d = volume(Concat(Concat(".", Concat(GetSymbolPart(), Concat(Concat(ExpYear - 2000, if ExpMonth2 <= 9 then Concat("0", ExpMonth2) else Concat("", ExpMonth2)), if ExpDOM <= 9 then Concat("0", ExpDOM) else Concat("", ExpDOM)))), Concat("C", AsPrice(centerStrike + strikeSpacing * 3))));
def c8_V_d = volume(Concat(Concat(".", Concat(GetSymbolPart(), Concat(Concat(ExpYear - 2000, if ExpMonth2 <= 9 then Concat("0", ExpMonth2) else Concat("", ExpMonth2)), if ExpDOM <= 9 then Concat("0", ExpDOM) else Concat("", ExpDOM)))), Concat("C", AsPrice(centerStrike - strikeSpacing * 4))));
def c9_V_d = volume(Concat(Concat(".", Concat(GetSymbolPart(), Concat(Concat(ExpYear - 2000, if ExpMonth2 <= 9 then Concat("0", ExpMonth2) else Concat("", ExpMonth2)), if ExpDOM <= 9 then Concat("0", ExpDOM) else Concat("", ExpDOM)))), Concat("C", AsPrice(centerStrike + strikeSpacing * 4))));
def c10_V_d = volume(Concat(Concat(".", Concat(GetSymbolPart(), Concat(Concat(ExpYear - 2000, if ExpMonth2 <= 9 then Concat("0", ExpMonth2) else Concat("", ExpMonth2)), if ExpDOM <= 9 then Concat("0", ExpDOM) else Concat("", ExpDOM)))), Concat("C", AsPrice(centerStrike - strikeSpacing * 5))));
def c11_V_d = volume(Concat(Concat(".", Concat(GetSymbolPart(), Concat(Concat(ExpYear - 2000, if ExpMonth2 <= 9 then Concat("0", ExpMonth2) else Concat("", ExpMonth2)), if ExpDOM <= 9 then Concat("0", ExpDOM) else Concat("", ExpDOM)))), Concat("C", AsPrice(centerStrike + strikeSpacing * 5))));

def c12_V_d = volume(Concat(Concat(".", Concat(GetSymbolPart(), Concat(Concat(ExpYear - 2000, if ExpMonth2 <= 9 then Concat("0", ExpMonth2) else Concat("", ExpMonth2)), if ExpDOM <= 9 then Concat("0", ExpDOM) else Concat("", ExpDOM)))), Concat("C", AsPrice(centerStrike - strikeSpacing * 6))));
def c13_V_d = volume(Concat(Concat(".", Concat(GetSymbolPart(), Concat(Concat(ExpYear - 2000, if ExpMonth2 <= 9 then Concat("0", ExpMonth2) else Concat("", ExpMonth2)), if ExpDOM <= 9 then Concat("0", ExpDOM) else Concat("", ExpDOM)))), Concat("C", AsPrice(centerStrike + strikeSpacing * 6))));
def c14_V_d = volume(Concat(Concat(".", Concat(GetSymbolPart(), Concat(Concat(ExpYear - 2000, if ExpMonth2 <= 9 then Concat("0", ExpMonth2) else Concat("", ExpMonth2)), if ExpDOM <= 9 then Concat("0", ExpDOM) else Concat("", ExpDOM)))), Concat("C", AsPrice(centerStrike - strikeSpacing * 7))));
def c15_V_d = volume(Concat(Concat(".", Concat(GetSymbolPart(), Concat(Concat(ExpYear - 2000, if ExpMonth2 <= 9 then Concat("0", ExpMonth2) else Concat("", ExpMonth2)), if ExpDOM <= 9 then Concat("0", ExpDOM) else Concat("", ExpDOM)))), Concat("C", AsPrice(centerStrike + strikeSpacing * 7))));
def c16_V_d = volume(Concat(Concat(".", Concat(GetSymbolPart(), Concat(Concat(ExpYear - 2000, if ExpMonth2 <= 9 then Concat("0", ExpMonth2) else Concat("", ExpMonth2)), if ExpDOM <= 9 then Concat("0", ExpDOM) else Concat("", ExpDOM)))), Concat("C", AsPrice(centerStrike - strikeSpacing * 8))));
def c17_V_d = volume(Concat(Concat(".", Concat(GetSymbolPart(), Concat(Concat(ExpYear - 2000, if ExpMonth2 <= 9 then Concat("0", ExpMonth2) else Concat("", ExpMonth2)), if ExpDOM <= 9 then Concat("0", ExpDOM) else Concat("", ExpDOM)))), Concat("C", AsPrice(centerStrike + strikeSpacing * 8))));
def c18_V_d = volume(Concat(Concat(".", Concat(GetSymbolPart(), Concat(Concat(ExpYear - 2000, if ExpMonth2 <= 9 then Concat("0", ExpMonth2) else Concat("", ExpMonth2)), if ExpDOM <= 9 then Concat("0", ExpDOM) else Concat("", ExpDOM)))), Concat("C", AsPrice(centerStrike - strikeSpacing * 9))));
def c19_V_d = volume(Concat(Concat(".", Concat(GetSymbolPart(), Concat(Concat(ExpYear - 2000, if ExpMonth2 <= 9 then Concat("0", ExpMonth2) else Concat("", ExpMonth2)), if ExpDOM <= 9 then Concat("0", ExpDOM) else Concat("", ExpDOM)))), Concat("C", AsPrice(centerStrike + strikeSpacing * 9))));

def p1_V_d = volume(Concat(Concat(".", Concat(GetSymbolPart(), Concat(Concat(ExpYear - 2000, if ExpMonth2 <= 9 then Concat("0", ExpMonth2) else Concat("", ExpMonth2)), if ExpDOM <= 9 then Concat("0", ExpDOM) else Concat("", ExpDOM)))), Concat("P", AsPrice(centerStrike))));
def p2_V_d = volume(Concat(Concat(".", Concat(GetSymbolPart(), Concat(Concat(ExpYear - 2000, if ExpMonth2 <= 9 then Concat("0", ExpMonth2) else Concat("", ExpMonth2)), if ExpDOM <= 9 then Concat("0", ExpDOM) else Concat("", ExpDOM)))), Concat("P", AsPrice(centerStrike - strikeSpacing))));
def p3_V_d = volume(Concat(Concat(".", Concat(GetSymbolPart(), Concat(Concat(ExpYear - 2000, if ExpMonth2 <= 9 then Concat("0", ExpMonth2) else Concat("", ExpMonth2)), if ExpDOM <= 9 then Concat("0", ExpDOM) else Concat("", ExpDOM)))), Concat("P", AsPrice(centerStrike - strikeSpacing * 2))));
def p4_V_d = volume(Concat(Concat(".", Concat(GetSymbolPart(), Concat(Concat(ExpYear - 2000, if ExpMonth2 <= 9 then Concat("0", ExpMonth2) else Concat("", ExpMonth2)), if ExpDOM <= 9 then Concat("0", ExpDOM) else Concat("", ExpDOM)))), Concat("P", AsPrice(centerStrike - strikeSpacing * 3))));
def p5_V_d = volume(Concat(Concat(".", Concat(GetSymbolPart(), Concat(Concat(ExpYear - 2000, if ExpMonth2 <= 9 then Concat("0", ExpMonth2) else Concat("", ExpMonth2)), if ExpDOM <= 9 then Concat("0", ExpDOM) else Concat("", ExpDOM)))), Concat("P", AsPrice(centerStrike + strikeSpacing))));
def p6_V_d = volume(Concat(Concat(".", Concat(GetSymbolPart(), Concat(Concat(ExpYear - 2000, if ExpMonth2 <= 9 then Concat("0", ExpMonth2) else Concat("", ExpMonth2)), if ExpDOM <= 9 then Concat("0", ExpDOM) else Concat("", ExpDOM)))), Concat("P", AsPrice(centerStrike + strikeSpacing * 2))));
def p7_V_d = volume(Concat(Concat(".", Concat(GetSymbolPart(), Concat(Concat(ExpYear - 2000, if ExpMonth2 <= 9 then Concat("0", ExpMonth2) else Concat("", ExpMonth2)), if ExpDOM <= 9 then Concat("0", ExpDOM) else Concat("", ExpDOM)))), Concat("P", AsPrice(centerStrike + strikeSpacing * 3))));
def p8_V_d = volume(Concat(Concat(".", Concat(GetSymbolPart(), Concat(Concat(ExpYear - 2000, if ExpMonth2 <= 9 then Concat("0", ExpMonth2) else Concat("", ExpMonth2)), if ExpDOM <= 9 then Concat("0", ExpDOM) else Concat("", ExpDOM)))), Concat("P", AsPrice(centerStrike - strikeSpacing * 4))));
def p9_V_d = volume(Concat(Concat(".", Concat(GetSymbolPart(), Concat(Concat(ExpYear - 2000, if ExpMonth2 <= 9 then Concat("0", ExpMonth2) else Concat("", ExpMonth2)), if ExpDOM <= 9 then Concat("0", ExpDOM) else Concat("", ExpDOM)))), Concat("P", AsPrice(centerStrike + strikeSpacing * 4))));
def p10_V_d = volume(Concat(Concat(".", Concat(GetSymbolPart(), Concat(Concat(ExpYear - 2000, if ExpMonth2 <= 9 then Concat("0", ExpMonth2) else Concat("", ExpMonth2)), if ExpDOM <= 9 then Concat("0", ExpDOM) else Concat("", ExpDOM)))), Concat("P", AsPrice(centerStrike - strikeSpacing * 5))));
def p11_V_d = volume(Concat(Concat(".", Concat(GetSymbolPart(), Concat(Concat(ExpYear - 2000, if ExpMonth2 <= 9 then Concat("0", ExpMonth2) else Concat("", ExpMonth2)), if ExpDOM <= 9 then Concat("0", ExpDOM) else Concat("", ExpDOM)))), Concat("P", AsPrice(centerStrike + strikeSpacing * 5))));

def p12_V_d = volume(Concat(Concat(".", Concat(GetSymbolPart(), Concat(Concat(ExpYear - 2000, if ExpMonth2 <= 9 then Concat("0", ExpMonth2) else Concat("", ExpMonth2)), if ExpDOM <= 9 then Concat("0", ExpDOM) else Concat("", ExpDOM)))), Concat("P", AsPrice(centerStrike - strikeSpacing * 6))));
def p13_V_d = volume(Concat(Concat(".", Concat(GetSymbolPart(), Concat(Concat(ExpYear - 2000, if ExpMonth2 <= 9 then Concat("0", ExpMonth2) else Concat("", ExpMonth2)), if ExpDOM <= 9 then Concat("0", ExpDOM) else Concat("", ExpDOM)))), Concat("P", AsPrice(centerStrike + strikeSpacing * 6))));
def p14_V_d = volume(Concat(Concat(".", Concat(GetSymbolPart(), Concat(Concat(ExpYear - 2000, if ExpMonth2 <= 9 then Concat("0", ExpMonth2) else Concat("", ExpMonth2)), if ExpDOM <= 9 then Concat("0", ExpDOM) else Concat("", ExpDOM)))), Concat("P", AsPrice(centerStrike - strikeSpacing * 7))));
def p15_V_d = volume(Concat(Concat(".", Concat(GetSymbolPart(), Concat(Concat(ExpYear - 2000, if ExpMonth2 <= 9 then Concat("0", ExpMonth2) else Concat("", ExpMonth2)), if ExpDOM <= 9 then Concat("0", ExpDOM) else Concat("", ExpDOM)))), Concat("P", AsPrice(centerStrike + strikeSpacing * 7))));
def p16_V_d = volume(Concat(Concat(".", Concat(GetSymbolPart(), Concat(Concat(ExpYear - 2000, if ExpMonth2 <= 9 then Concat("0", ExpMonth2) else Concat("", ExpMonth2)), if ExpDOM <= 9 then Concat("0", ExpDOM) else Concat("", ExpDOM)))), Concat("P", AsPrice(centerStrike - strikeSpacing * 8))));
def p17_V_d = volume(Concat(Concat(".", Concat(GetSymbolPart(), Concat(Concat(ExpYear - 2000, if ExpMonth2 <= 9 then Concat("0", ExpMonth2) else Concat("", ExpMonth2)), if ExpDOM <= 9 then Concat("0", ExpDOM) else Concat("", ExpDOM)))), Concat("P", AsPrice(centerStrike + strikeSpacing * 8))));
def p18_V_d = volume(Concat(Concat(".", Concat(GetSymbolPart(), Concat(Concat(ExpYear - 2000, if ExpMonth2 <= 9 then Concat("0", ExpMonth2) else Concat("", ExpMonth2)), if ExpDOM <= 9 then Concat("0", ExpDOM) else Concat("", ExpDOM)))), Concat("P", AsPrice(centerStrike - strikeSpacing * 9))));
def p19_V_d = volume(Concat(Concat(".", Concat(GetSymbolPart(), Concat(Concat(ExpYear - 2000, if ExpMonth2 <= 9 then Concat("0", ExpMonth2) else Concat("", ExpMonth2)), if ExpDOM <= 9 then Concat("0", ExpDOM) else Concat("", ExpDOM)))), Concat("P", AsPrice(centerStrike + strikeSpacing * 9))));

def c1_V = if !IsNaN(c1_V_d) then c1_V_d else 0;
def c2_V = if !IsNaN(c2_V_d) then c2_V_d else 0;
def c3_V = if !IsNaN(c3_V_d) then c3_V_d else 0;
def c4_V = if !IsNaN(c4_V_d) then c4_V_d else 0;
def c5_V = if !IsNaN(c5_V_d) then c5_V_d else 0;
def c6_V = if !IsNaN(c6_V_d) then c6_V_d else 0;
def c7_V = if !IsNaN(c7_V_d) then c7_V_d else 0;
def c8_V = if !IsNaN(c8_V_d) then c8_V_d else 0;
def c9_V = if !IsNaN(c9_V_d) then c9_V_d else 0;
def c10_V = if !IsNaN(c10_V_d) then c10_V_d else 0;
def c11_V = if !IsNaN(c11_V_d) then c11_V_d else 0;

def c12_V = if !IsNaN(c12_V_d) then c12_V_d else 0;
def c13_V = if !IsNaN(c13_V_d) then c13_V_d else 0;
def c14_V = if !IsNaN(c14_V_d) then c14_V_d else 0;
def c15_V = if !IsNaN(c15_V_d) then c15_V_d else 0;
def c16_V = if !IsNaN(c16_V_d) then c16_V_d else 0;
def c17_V = if !IsNaN(c17_V_d) then c17_V_d else 0;
def c18_V = if !IsNaN(c18_V_d) then c18_V_d else 0;
def c19_V = if !IsNaN(c19_V_d) then c19_V_d else 0;

def p1_V = if !IsNaN(p1_V_d) then p1_V_d else 0;
def p2_V = if !IsNaN(p2_V_d) then p2_V_d else 0;
def p3_V = if !IsNaN(p3_V_d) then p3_V_d else 0;
def p4_V = if !IsNaN(p4_V_d) then p4_V_d else 0;
def p5_V = if !IsNaN(p5_V_d) then p5_V_d else 0;
def p6_V = if !IsNaN(p6_V_d) then p6_V_d else 0;
def p7_V = if !IsNaN(p7_V_d) then p7_V_d else 0;
def p8_V = if !IsNaN(p8_V_d) then p8_V_d else 0;
def p9_V = if !IsNaN(p9_V_d) then p9_V_d else 0;
def p10_V = if !IsNaN(p10_V_d) then p10_V_d else 0;
def p11_V = if !IsNaN(p11_V_d) then p11_V_d else 0;

def p12_V = if !IsNaN(p12_V_d) then p12_V_d else 0;
def p13_V = if !IsNaN(p13_V_d) then p13_V_d else 0;
def p14_V = if !IsNaN(p14_V_d) then p14_V_d else 0;
def p15_V = if !IsNaN(p15_V_d) then p15_V_d else 0;
def p16_V = if !IsNaN(p16_V_d) then p16_V_d else 0;
def p17_V = if !IsNaN(p17_V_d) then p17_V_d else 0;
def p18_V = if !IsNaN(p18_V_d) then p18_V_d else 0;
def p19_V = if !IsNaN(p19_V_d) then p19_V_d else 0;

def c1t = Max(Max(Max(Max(c1_V, c2_V), c3_V), c4_V), c5_V);
def c2t = Max(Max(Max(Max(Max(c6_V, c7_V), c8_V), c9_V), c10_V), c11_V);

def c3t = Max(Max(Max(Max(Max(c12_V, c13_V), c14_V), c15_V), c16_V), c17_V);
def c4t = Max(c18_V, c19_V);

def p1t = Max(Max(Max(Max(p1_V, p2_V), p3_V), p4_V), p5_V);
def p2t = Max(Max(Max(Max(Max(p6_V, p7_V), p8_V), p9_V), p10_V), p11_V);

def p3t = Max(Max(Max(Max(Max(p12_V, p13_V), p14_V), p15_V), p16_V), p17_V);
def p4t = Max(p18_V, p19_V);


def c_V_max = Max(Max(Max(c1t, c2t), c3t), c4t);
def p_V_max = Max(Max(Max(p1t, p2t), p3t), p4t);
def V_max = c_V_max + p_V_max;

def cVT = c1_V + c2_V + c3_V + c4_V + c5_V + c6_V + c7_V + c8_V + c9_V + c10_V + c11_V + c12_V + c13_V + c14_V + c15_V + c16_V + c17_V + c18_V + c19_V;

def cVTt = c1_V + c2_V + c3_V + c4_V + c5_V + c6_V + c7_V + c8_V + c9_V;

def pVT = p1_V + p2_V + p3_V + p4_V + p5_V + p6_V + p7_V + p8_V + p9_V + p10_V + p11_V + p12_V + p13_V + p14_V + p15_V + p16_V + p17_V + p18_V + p19_V;

def tVT = cVT + pVT;
def oVT = if calculation_voodoo == calculation_voodoo.a then Average(V_max, period) else Average(tVT, period);

def c1RS = (c1_V / oVT) * 10.0 * gain;
def c2RS = (c2_V / oVT) * 10.0 * gain;
def c3RS = (c3_V / oVT) * 10.0 * gain;
def c4RS = (c4_V / oVT) * 10.0 * gain;
def c5RS = (c5_V / oVT) * 10.0 * gain;
def c6RS = (c6_V / oVT) * 10.0 * gain;
def c7RS = (c7_V / oVT) * 10.0 * gain;
def c8RS = (c8_V / oVT) * 10.0 * gain;
def c9RS = (c9_V / oVT) * 10.0 * gain;
def c10RS = (c10_V / oVT) * 10.0 * gain;
def c11RS = (c11_V / oVT) * 10.0 * gain;
def c12RS = (c12_V / oVT) * 10.0 * gain;
def c13RS = (c13_V / oVT) * 10.0 * gain;
def c14RS = (c14_V / oVT) * 10.0 * gain;
def c15RS = (c15_V / oVT) * 10.0 * gain;
def c16RS = (c16_V / oVT) * 10.0 * gain;
def c17RS = (c17_V / oVT) * 10.0 * gain;
def c18RS = (c18_V / oVT) * 10.0 * gain;
def c19RS = (c19_V / oVT) * 10.0 * gain;

def p1RS = (p1_V / oVT) * 10.0 * gain;
def p2RS = (p2_V / oVT) * 10.0 * gain;
def p3RS = (p3_V / oVT) * 10.0 * gain;
def p4RS = (p4_V / oVT) * 10.0 * gain;
def p5RS = (p5_V / oVT) * 10.0 * gain;
def p6RS = (p6_V / oVT) * 10.0 * gain;
def p7RS = (p7_V / oVT) * 10.0 * gain;
def p8RS = (p8_V / oVT) * 10.0 * gain;
def p9RS = (p9_V / oVT) * 10.0 * gain;
def p10RS = (p10_V / oVT) * 10.0 * gain;
def p11RS = (p11_V / oVT) * 10.0 * gain;
def p12RS = (p12_V / oVT) * 10.0 * gain;
def p13RS = (p13_V / oVT) * 10.0 * gain;
def p14RS = (p14_V / oVT) * 10.0 * gain;
def p15RS = (p15_V / oVT) * 10.0 * gain;
def p16RS = (p16_V / oVT) * 10.0 * gain;
def p17RS = (p17_V / oVT) * 10.0 * gain;
def p18RS = (p18_V / oVT) * 10.0 * gain;
def p19RS = (p19_V / oVT) * 10.0 * gain;


def o1RS = Max(c1RS, p1RS);
def o1M = if c1RS > p1RS then 1 else 0;
def o2RS = Max(c2RS, p2RS);
def o2M = if c2RS > p2RS then 1 else 0;
def o3RS = Max(c3RS, p3RS);
def o3M = if c3RS > p3RS then 1 else 0;
def o4RS = Max(c4RS, p4RS);
def o4M = if c4RS > p4RS then 1 else 0;
def o5RS = Max(c5RS, p5RS);
def o5M = if c5RS > p5RS then 1 else 0;
def o6RS = Max(c6RS, p6RS);
def o6M = if c6RS > p6RS then 1 else 0;
def o7RS = Max(c7RS, p7RS);
def o7M = if c7RS > p7RS then 1 else 0;
def o8RS = Max(c8RS, p8RS);
def o8M = if c8RS > p8RS then 1 else 0;
def o9RS = Max(c9RS, p9RS);
def o9M = if c9RS > p9RS then 1 else 0;
def o10RS = Max(c10RS, p10RS);
def o10M = if c10RS > p10RS then 1 else 0;
def o11RS = Max(c11RS, p11RS);
def o11M = if c11RS > p11RS then 1 else 0;
def o12RS = Max(c12RS, p12RS);
def o12M = if c12RS > p12RS then 1 else 0;
def o13RS = Max(c13RS, p13RS);
def o13M = if c13RS > p13RS then 1 else 0;
def o14RS = Max(c14RS, p14RS);
def o14M = if c14RS > p14RS then 1 else 0;
def o15RS = Max(c15RS, p15RS);
def o15M = if c15RS > p15RS then 1 else 0;
def o16RS = Max(c16RS, p16RS);
def o16M = if c16RS > p16RS then 1 else 0;
def o17RS = Max(c17RS, p17RS);
def o17M = if c17RS > p17RS then 1 else 0;
def o18RS = Max(c18RS, p18RS);
def o18M = if c18RS > p18RS then 1 else 0;
def o19RS = Max(c19RS, p19RS);
def o19M = if c19RS > p19RS then 1 else 0;

plot price = close;

plot C1 = centerStrike ;
C1.SetLineWeight(5);
C1.SetDefaultColor(Color.BLACK);
C1.AssignValueColor(if o1M == 1 then (if o1RS <= 1 then GlobalColor("L01") else if o1RS <= 2 then GlobalColor("L02") else if o1RS <= 3 then GlobalColor("L03") else if o1RS <= 4 then GlobalColor("L04") else if o1RS <= 5 then GlobalColor("L05") else if o1RS <= 6 then GlobalColor("L06") else if o1RS <= 7 then GlobalColor("L07") else if o1RS <= 8 then GlobalColor("L08") else if o1RS <= 9 then GlobalColor("L09") else GlobalColor("L10")) else
(if o1RS <= 1 then GlobalColor("H01") else if o1RS <= 2 then GlobalColor("H02") else if o1RS <= 3 then GlobalColor("H03") else if o1RS <= 4 then GlobalColor("H04") else if o1RS <= 5 then GlobalColor("H05") else if o1RS <= 6 then GlobalColor("H06") else if o1RS <= 7 then GlobalColor("H07") else if o1RS <= 8 then GlobalColor("H08") else if o1RS <= 9 then GlobalColor("H09") else GlobalColor("H10")));

plot C2 = centerStrike - strikeSpacing;
C2.SetLineWeight(5);
C2.SetDefaultColor(Color.BLACK);
C2.AssignValueColor(if o2M == 1 then (if o2RS <= 1 then GlobalColor("L01") else if o2RS <= 2 then GlobalColor("L02") else if o2RS <= 3 then GlobalColor("L03") else if o2RS <= 4 then GlobalColor("L04") else if o2RS <= 5 then GlobalColor("L05") else if o2RS <= 6 then GlobalColor("L06") else if o2RS <= 7 then GlobalColor("L07") else if o2RS <= 8 then GlobalColor("L08") else if o2RS <= 9 then GlobalColor("L09") else GlobalColor("L10")) else
(if o2RS <= 1 then GlobalColor("H01") else if o2RS <= 2 then GlobalColor("H02") else if o2RS <= 3 then GlobalColor("H03") else if o2RS <= 4 then GlobalColor("H04") else if o2RS <= 5 then GlobalColor("H05") else if o2RS <= 6 then GlobalColor("H06") else if o2RS <= 7 then GlobalColor("H07") else if o2RS <= 8 then GlobalColor("H08") else if o2RS <= 9 then GlobalColor("H09") else GlobalColor("H10")));


plot C3 = centerStrike - strikeSpacing * 2;
C3.SetLineWeight(5);
C3.SetDefaultColor(Color.BLACK);
C3.AssignValueColor(if o3M == 1 then (if o3RS <= 1 then GlobalColor("L01") else if o3RS <= 2 then GlobalColor("L02") else if o3RS <= 3 then GlobalColor("L03") else if o3RS <= 4 then GlobalColor("L04") else if o3RS <= 5 then GlobalColor("L05") else if o3RS <= 6 then GlobalColor("L06") else if o3RS <= 7 then GlobalColor("L07") else if o3RS <= 8 then GlobalColor("L08") else if o3RS <= 9 then GlobalColor("L09") else GlobalColor("L10")) else
(if o3RS <= 1 then GlobalColor("H01") else if o3RS <= 2 then GlobalColor("H02") else if o3RS <= 3 then GlobalColor("H03") else if o3RS <= 4 then GlobalColor("H04") else if o3RS <= 5 then GlobalColor("H05") else if o3RS <= 6 then GlobalColor("H06") else if o3RS <= 7 then GlobalColor("H07") else if o3RS <= 8 then GlobalColor("H08") else if o3RS <= 9 then GlobalColor("H09") else GlobalColor("H10")));

plot C4 = centerStrike - strikeSpacing * 3;
C4.SetLineWeight(5);
C4.SetDefaultColor(Color.BLACK);
C4.AssignValueColor(if o4M == 1 then (if o4RS <= 1 then GlobalColor("L01") else if o4RS <= 2 then GlobalColor("L02") else if o4RS <= 3 then GlobalColor("L03") else if o4RS <= 4 then GlobalColor("L04") else if o4RS <= 5 then GlobalColor("L05") else if o4RS <= 6 then GlobalColor("L06") else if o4RS <= 7 then GlobalColor("L07") else if o4RS <= 8 then GlobalColor("L08") else if o4RS <= 9 then GlobalColor("L09") else GlobalColor("L10")) else
(if o4RS <= 1 then GlobalColor("H01") else if o4RS <= 2 then GlobalColor("H02") else if o4RS <= 3 then GlobalColor("H03") else if o4RS <= 4 then GlobalColor("H04") else if o4RS <= 5 then GlobalColor("H05") else if o4RS <= 6 then GlobalColor("H06") else if o4RS <= 7 then GlobalColor("H07") else if o4RS <= 8 then GlobalColor("H08") else if o4RS <= 9 then GlobalColor("H09") else GlobalColor("H10")));


plot C5 = centerStrike + strikeSpacing;
C5.SetLineWeight(5);
C5.SetDefaultColor(Color.BLACK);
C5.AssignValueColor(if o5M == 1 then (if o5RS <= 1 then GlobalColor("L01") else if o5RS <= 2 then GlobalColor("L02") else if o5RS <= 3 then GlobalColor("L03") else if o5RS <= 4 then GlobalColor("L04") else if o5RS <= 5 then GlobalColor("L05") else if o5RS <= 6 then GlobalColor("L06") else if o5RS <= 7 then GlobalColor("L07") else if o5RS <= 8 then GlobalColor("L08") else if o5RS <= 9 then GlobalColor("L09") else GlobalColor("L10")) else
(if o5RS <= 1 then GlobalColor("H01") else if o5RS <= 2 then GlobalColor("H02") else if o5RS <= 3 then GlobalColor("H03") else if o5RS <= 4 then GlobalColor("H04") else if o5RS <= 5 then GlobalColor("H05") else if o5RS <= 6 then GlobalColor("H06") else if o5RS <= 7 then GlobalColor("H07") else if o5RS <= 8 then GlobalColor("H08") else if o5RS <= 9 then GlobalColor("H09") else GlobalColor("H10")));

plot C6 = centerStrike + strikeSpacing * 2;
C6.SetLineWeight(5);
C6.SetDefaultColor(Color.BLACK);

C6.AssignValueColor(if o6M == 1 then (if o6RS <= 1 then GlobalColor("L01") else if o6RS <= 2 then GlobalColor("L02") else if o6RS <= 3 then GlobalColor("L03") else if o6RS <= 4 then GlobalColor("L04") else if o6RS <= 5 then GlobalColor("L05") else if o6RS <= 6 then GlobalColor("L06") else if o6RS <= 7 then GlobalColor("L07") else if o6RS <= 8 then GlobalColor("L08") else if o6RS <= 9 then GlobalColor("L09") else GlobalColor("L10")) else
(if o6RS <= 1 then GlobalColor("H01") else if o6RS <= 2 then GlobalColor("H02") else if o6RS <= 3 then GlobalColor("H03") else if o6RS <= 4 then GlobalColor("H04") else if o6RS <= 5 then GlobalColor("H05") else if o6RS <= 6 then GlobalColor("H06") else if o6RS <= 7 then GlobalColor("H07") else if o6RS <= 8 then GlobalColor("H08") else if o6RS <= 9 then GlobalColor("H09") else GlobalColor("H10")));

plot C7 = centerStrike + strikeSpacing * 3;
C7.SetLineWeight(5);
C7.SetDefaultColor(Color.BLACK);

C7.AssignValueColor(if o7M == 1 then (if o7RS <= 1 then GlobalColor("L01") else if o7RS <= 2 then GlobalColor("L02") else if o7RS <= 3 then GlobalColor("L03") else if o7RS <= 4 then GlobalColor("L04") else if o7RS <= 5 then GlobalColor("L05") else if o7RS <= 6 then GlobalColor("L06") else if o7RS <= 7 then GlobalColor("L07") else if o7RS <= 8 then GlobalColor("L08") else if o7RS <= 9 then GlobalColor("L09") else GlobalColor("L10")) else
(if o7RS <= 1 then GlobalColor("H01") else if o7RS <= 2 then GlobalColor("H02") else if o7RS <= 3 then GlobalColor("H03") else if o7RS <= 4 then GlobalColor("H04") else if o7RS <= 5 then GlobalColor("H05") else if o7RS <= 6 then GlobalColor("H06") else if o7RS <= 7 then GlobalColor("H07") else if o7RS <= 8 then GlobalColor("H08") else if o7RS <= 9 then GlobalColor("H09") else GlobalColor("H10")));

plot C8 = centerStrike - strikeSpacing * 4;
C8.SetLineWeight(5);
C8.SetDefaultColor(Color.BLACK);

C8.AssignValueColor(if o8M == 1 then (if o8RS <= 1 then GlobalColor("L01") else if o8RS <= 2 then GlobalColor("L02") else if o8RS <= 3 then GlobalColor("L03") else if o8RS <= 4 then GlobalColor("L04") else if o8RS <= 5 then GlobalColor("L05") else if o8RS <= 6 then GlobalColor("L06") else if o8RS <= 7 then GlobalColor("L07") else if o8RS <= 8 then GlobalColor("L08") else if o8RS <= 9 then GlobalColor("L09") else GlobalColor("L10")) else
(if o8RS <= 1 then GlobalColor("H01") else if o8RS <= 2 then GlobalColor("H02") else if o8RS <= 3 then GlobalColor("H03") else if o8RS <= 4 then GlobalColor("H04") else if o8RS <= 5 then GlobalColor("H05") else if o8RS <= 6 then GlobalColor("H06") else if o8RS <= 7 then GlobalColor("H07") else if o8RS <= 8 then GlobalColor("H08") else if o8RS <= 9 then GlobalColor("H09") else GlobalColor("H10")));

plot C9 = centerStrike + strikeSpacing * 4;
C9.SetLineWeight(5);
C9.SetDefaultColor(Color.BLACK);

C9.AssignValueColor(if o9M == 1 then (if o9RS <= 1 then GlobalColor("L01") else if o9RS <= 2 then GlobalColor("L02") else if o9RS <= 3 then GlobalColor("L03") else if o9RS <= 4 then GlobalColor("L04") else if o9RS <= 5 then GlobalColor("L05") else if o9RS <= 6 then GlobalColor("L06") else if o9RS <= 7 then GlobalColor("L07") else if o9RS <= 8 then GlobalColor("L08") else if o9RS <= 9 then GlobalColor("L09") else GlobalColor("L10")) else
(if o9RS <= 1 then GlobalColor("H01") else if o9RS <= 2 then GlobalColor("H02") else if o9RS <= 3 then GlobalColor("H03") else if o9RS <= 4 then GlobalColor("H04") else if o9RS <= 5 then GlobalColor("H05") else if o9RS <= 6 then GlobalColor("H06") else if o9RS <= 7 then GlobalColor("H07") else if o9RS <= 8 then GlobalColor("H08") else if o9RS <= 9 then GlobalColor("H09") else GlobalColor("H10")));

plot C10 = centerStrike - strikeSpacing * 5;
C10.SetLineWeight(5);
C10.SetDefaultColor(Color.BLACK);

C10.AssignValueColor(if o10M == 1 then (if o10RS <= 1 then GlobalColor("L01") else if o10RS <= 2 then GlobalColor("L02") else if o10RS <= 3 then GlobalColor("L03") else if o10RS <= 4 then GlobalColor("L04") else if o10RS <= 5 then GlobalColor("L05") else if o10RS <= 6 then GlobalColor("L06") else if o10RS <= 7 then GlobalColor("L07") else if o10RS <= 8 then GlobalColor("L08") else if o10RS <= 9 then GlobalColor("L09") else GlobalColor("L10")) else
(if o10RS <= 1 then GlobalColor("H01") else if o10RS <= 2 then GlobalColor("H02") else if o10RS <= 3 then GlobalColor("H03") else if o10RS <= 4 then GlobalColor("H04") else if o10RS <= 5 then GlobalColor("H05") else if o10RS <= 6 then GlobalColor("H06") else if o10RS <= 7 then GlobalColor("H07") else if o10RS <= 8 then GlobalColor("H08") else if o10RS <= 9 then GlobalColor("H09") else GlobalColor("H10")));

plot C11 = centerStrike + strikeSpacing * 4;
C11.SetLineWeight(5);
C11.SetDefaultColor(Color.BLACK);

C11.AssignValueColor(if o11M == 1 then (if o11RS <= 1 then GlobalColor("L01") else if o11RS <= 2 then GlobalColor("L02") else if o11RS <= 3 then GlobalColor("L03") else if o11RS <= 4 then GlobalColor("L04") else if o11RS <= 5 then GlobalColor("L05") else if o11RS <= 6 then GlobalColor("L06") else if o11RS <= 7 then GlobalColor("L07") else if o11RS <= 8 then GlobalColor("L08") else if o11RS <= 9 then GlobalColor("L09") else GlobalColor("L10")) else
(if o11RS <= 1 then GlobalColor("H01") else if o11RS <= 2 then GlobalColor("H02") else if o11RS <= 3 then GlobalColor("H03") else if o11RS <= 4 then GlobalColor("H04") else if o11RS <= 5 then GlobalColor("H05") else if o11RS <= 6 then GlobalColor("H06") else if o11RS <= 7 then GlobalColor("H07") else if o11RS <= 8 then GlobalColor("H08") else if o11RS <= 9 then GlobalColor("H09") else GlobalColor("H10")));


plot C12 = centerStrike - strikeSpacing * 6;
C12.SetLineWeight(5);
C12.SetDefaultColor(Color.BLACK);

C12.AssignValueColor(if o12M == 1 then (if o12RS <= 1 then GlobalColor("L01") else if o12RS <= 2 then GlobalColor("L02") else if o12RS <= 3 then GlobalColor("L03") else if o12RS <= 4 then GlobalColor("L04") else if o12RS <= 5 then GlobalColor("L05") else if o12RS <= 6 then GlobalColor("L06") else if o12RS <= 7 then GlobalColor("L07") else if o12RS <= 8 then GlobalColor("L08") else if o12RS <= 9 then GlobalColor("L09") else GlobalColor("L10")) else
(if o12RS <= 1 then GlobalColor("H01") else if o12RS <= 2 then GlobalColor("H02") else if o12RS <= 3 then GlobalColor("H03") else if o12RS <= 4 then GlobalColor("H04") else if o12RS <= 5 then GlobalColor("H05") else if o12RS <= 6 then GlobalColor("H06") else if o12RS <= 7 then GlobalColor("H07") else if o12RS <= 8 then GlobalColor("H08") else if o12RS <= 9 then GlobalColor("H09") else GlobalColor("H10")));

plot C13 = centerStrike + strikeSpacing * 6;
C13.SetLineWeight(5);
C13.SetDefaultColor(Color.BLACK);

C13.AssignValueColor(if o13M == 1 then (if o13RS <= 1 then GlobalColor("L01") else if o13RS <= 2 then GlobalColor("L02") else if o13RS <= 3 then GlobalColor("L03") else if o13RS <= 4 then GlobalColor("L04") else if o13RS <= 5 then GlobalColor("L05") else if o13RS <= 6 then GlobalColor("L06") else if o13RS <= 7 then GlobalColor("L07") else if o13RS <= 8 then GlobalColor("L08") else if o13RS <= 9 then GlobalColor("L09") else GlobalColor("L10")) else
(if o13RS <= 1 then GlobalColor("H01") else if o13RS <= 2 then GlobalColor("H02") else if o13RS <= 3 then GlobalColor("H03") else if o13RS <= 4 then GlobalColor("H04") else if o13RS <= 5 then GlobalColor("H05") else if o13RS <= 6 then GlobalColor("H06") else if o13RS <= 7 then GlobalColor("H07") else if o13RS <= 8 then GlobalColor("H08") else if o13RS <= 9 then GlobalColor("H09") else GlobalColor("H10")));

plot C14 = centerStrike - strikeSpacing * 7;
C14.SetLineWeight(5);
C14.SetDefaultColor(Color.BLACK);

C14.AssignValueColor(if o14M == 1 then (if o14RS <= 1 then GlobalColor("L01") else if o14RS <= 2 then GlobalColor("L02") else if o14RS <= 3 then GlobalColor("L03") else if o14RS <= 4 then GlobalColor("L04") else if o14RS <= 5 then GlobalColor("L05") else if o14RS <= 6 then GlobalColor("L06") else if o14RS <= 7 then GlobalColor("L07") else if o14RS <= 8 then GlobalColor("L08") else if o14RS <= 9 then GlobalColor("L09") else GlobalColor("L10")) else
(if o14RS <= 1 then GlobalColor("H01") else if o14RS <= 2 then GlobalColor("H02") else if o14RS <= 3 then GlobalColor("H03") else if o14RS <= 4 then GlobalColor("H04") else if o14RS <= 5 then GlobalColor("H05") else if o14RS <= 6 then GlobalColor("H06") else if o14RS <= 7 then GlobalColor("H07") else if o14RS <= 8 then GlobalColor("H08") else if o14RS <= 9 then GlobalColor("H09") else GlobalColor("H10")));

plot C15 = centerStrike + strikeSpacing * 7;
C15.SetLineWeight(5);
C15.SetDefaultColor(Color.BLACK);

C15.AssignValueColor(if o15M == 1 then (if o15RS <= 1 then GlobalColor("L01") else if o15RS <= 2 then GlobalColor("L02") else if o15RS <= 3 then GlobalColor("L03") else if o15RS <= 4 then GlobalColor("L04") else if o15RS <= 5 then GlobalColor("L05") else if o15RS <= 6 then GlobalColor("L06") else if o15RS <= 7 then GlobalColor("L07") else if o15RS <= 8 then GlobalColor("L08") else if o15RS <= 9 then GlobalColor("L09") else GlobalColor("L10")) else
(if o15RS <= 1 then GlobalColor("H01") else if o15RS <= 2 then GlobalColor("H02") else if o15RS <= 3 then GlobalColor("H03") else if o15RS <= 4 then GlobalColor("H04") else if o15RS <= 5 then GlobalColor("H05") else if o15RS <= 6 then GlobalColor("H06") else if o15RS <= 7 then GlobalColor("H07") else if o15RS <= 8 then GlobalColor("H08") else if o15RS <= 9 then GlobalColor("H09") else GlobalColor("H10")));

plot C16 = centerStrike - strikeSpacing * 8;
C16.SetLineWeight(5);
C16.SetDefaultColor(Color.BLACK);

C16.AssignValueColor(if o16M == 1 then (if o16RS <= 1 then GlobalColor("L01") else if o16RS <= 2 then GlobalColor("L02") else if o16RS <= 3 then GlobalColor("L03") else if o16RS <= 4 then GlobalColor("L04") else if o16RS <= 5 then GlobalColor("L05") else if o16RS <= 6 then GlobalColor("L06") else if o16RS <= 7 then GlobalColor("L07") else if o16RS <= 8 then GlobalColor("L08") else if o16RS <= 9 then GlobalColor("L09") else GlobalColor("L10")) else
(if o16RS <= 1 then GlobalColor("H01") else if o16RS <= 2 then GlobalColor("H02") else if o16RS <= 3 then GlobalColor("H03") else if o16RS <= 4 then GlobalColor("H04") else if o16RS <= 5 then GlobalColor("H05") else if o16RS <= 6 then GlobalColor("H06") else if o16RS <= 7 then GlobalColor("H07") else if o16RS <= 8 then GlobalColor("H08") else if o16RS <= 9 then GlobalColor("H09") else GlobalColor("H10")));

plot C17 = centerStrike + strikeSpacing * 8;
C17.SetLineWeight(5);
C17.SetDefaultColor(Color.BLACK);

C17.AssignValueColor(if o17M == 1 then (if o17RS <= 1 then GlobalColor("L01") else if o17RS <= 2 then GlobalColor("L02") else if o17RS <= 3 then GlobalColor("L03") else if o17RS <= 4 then GlobalColor("L04") else if o17RS <= 5 then GlobalColor("L05") else if o17RS <= 6 then GlobalColor("L06") else if o17RS <= 7 then GlobalColor("L07") else if o17RS <= 8 then GlobalColor("L08") else if o17RS <= 9 then GlobalColor("L09") else GlobalColor("L10")) else
(if o17RS <= 1 then GlobalColor("H01") else if o17RS <= 2 then GlobalColor("H02") else if o17RS <= 3 then GlobalColor("H03") else if o17RS <= 4 then GlobalColor("H04") else if o17RS <= 5 then GlobalColor("H05") else if o17RS <= 6 then GlobalColor("H06") else if o17RS <= 7 then GlobalColor("H07") else if o17RS <= 8 then GlobalColor("H08") else if o17RS <= 9 then GlobalColor("H09") else GlobalColor("H10")));

plot C18 = centerStrike - strikeSpacing * 9;
C18.SetLineWeight(5);
C18.SetDefaultColor(Color.BLACK);

C18.AssignValueColor(if o18M == 1 then (if o18RS <= 1 then GlobalColor("L01") else if o18RS <= 2 then GlobalColor("L02") else if o18RS <= 3 then GlobalColor("L03") else if o18RS <= 4 then GlobalColor("L04") else if o18RS <= 5 then GlobalColor("L05") else if o18RS <= 6 then GlobalColor("L06") else if o18RS <= 7 then GlobalColor("L07") else if o18RS <= 8 then GlobalColor("L08") else if o18RS <= 9 then GlobalColor("L09") else GlobalColor("L10")) else
(if o18RS <= 1 then GlobalColor("H01") else if o18RS <= 2 then GlobalColor("H02") else if o18RS <= 3 then GlobalColor("H03") else if o18RS <= 4 then GlobalColor("H04") else if o18RS <= 5 then GlobalColor("H05") else if o18RS <= 6 then GlobalColor("H06") else if o18RS <= 7 then GlobalColor("H07") else if o18RS <= 8 then GlobalColor("H08") else if o18RS <= 9 then GlobalColor("H09") else GlobalColor("H10")));

plot C19 = centerStrike + strikeSpacing * 9;
C19.SetLineWeight(5);
C19.SetDefaultColor(Color.BLACK);

C19.AssignValueColor(if o19M == 1 then (if o19RS <= 1 then GlobalColor("L01") else if o19RS <= 2 then GlobalColor("L02") else if o19RS <= 3 then GlobalColor("L03") else if o19RS <= 4 then GlobalColor("L04") else if o19RS <= 5 then GlobalColor("L05") else if o19RS <= 6 then GlobalColor("L06") else if o19RS <= 7 then GlobalColor("L07") else if o19RS <= 8 then GlobalColor("L08") else if o19RS <= 9 then GlobalColor("L09") else GlobalColor("L10")) else
(if o19RS <= 1 then GlobalColor("H01") else if o19RS <= 2 then GlobalColor("H02") else if o19RS <= 3 then GlobalColor("H03") else if o19RS <= 4 then GlobalColor("H04") else if o19RS <= 5 then GlobalColor("H05") else if o19RS <= 6 then GlobalColor("H06") else if o19RS <= 7 then GlobalColor("H07") else if o19RS <= 8 then GlobalColor("H08") else if o19RS <= 9 then GlobalColor("H09") else GlobalColor("H10")));

C1.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
C2.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
C3.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
C4.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
C5.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
C6.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
C7.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
C8.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
C9.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
C10.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
C11.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
C12.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
C13.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
C14.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
C15.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
C16.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
C17.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
C18.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);
C19.SetPaintingStrategy(PaintingStrategy.HORIZONTAL);


price.SetPaintingStrategy(PaintingStrategy.DASHES);
price.SetDefaultColor(Color.WHITE);
price.setLineWeight(2);
 

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.
Top