ziongotoptions
Active member
Still nothing, do I need to change the option string?do 50 bars to the right
Still nothing, do I need to change the option string?do 50 bars to the right
Join useThinkScript to post your question to a community of 21,000+ developers and traders.
Thank you! I finally got it! It’s going to take awhile for me to comprehend everything but I’ll see if I can figure out how they made this220414
Don’t forget options expire on Thursday instead of Friday next week, that’s why it feels like a pain this week lolchanged line 45 to this and saw a response --
def ExpDOM = FirstFridayDOM + 13; #15 default
the next3rdfriday date calculator is such a pain
my date code parsed the yyyymmdd format to try and account for errors in option call ticker symbol into yymmdd with zeroes in the first position of the two digit date code -- nowhere near perfect but check and make sure the Exp variables are all properly calculated. I think halcyon pointed out that it wasn't necessary to do what I did. in the old code they tried to insert a zero if expdom <=9 -- I tried to turn the date into a decimal and "shear off" the digits to create the date. I really wish TD would just make expiry variables for us so this isn't necessary.using mountain king date code here is what i came up with for optionseries
AddLabel(1, "." + getsymbol() + Concat((ExpY1),"") + Concat((ExpY2),"") + Concat((ExpM1),"") + Concat((ExpM2),"") + Concat((ExpD1),"") + Concat((ExpD2),""), CreateColor(135,135,135));
Using the old code:
AddLabel(yes,(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))))));
I keep getting an error when trying to define as variable however, it says expected double
use the manual version I shared via link earlier. can you guys please change it so it grabs open interests instead of volume.my date code parsed the yyyymmdd format to try and account for errors in option call ticker symbol into yymmdd with zeroes in the first position of the two digit date code -- nowhere near perfect but check and make sure the Exp variables are all properly calculated. I think halcyon pointed out that it wasn't necessary to do what I did. in the old code they tried to insert a zero if expdom <=9 -- I tried to turn the date into a decimal and "shear off" the digits to create the date. I really wish TD would just make expiry variables for us so this isn't necessary.
is the error with the old code or mk?
and increase the strikes ranges to maybe 60 instead of 19
def series = 1;
input show_label = yes;
def RTHopen = open(period = AggregationPeriod.DAY);
def CurrentYear =GetYear();
def CurrentMonth = GetMonth();
def CurrentDOM = GetDayOfMonth(GetYYYYMMDD());
def Day1DOW1 = GetDayOfWeek((CurrentYear * 10000) + (CurrentMonth * 100) + 1); # First DOM is this DOW
def FirstFridayDOM1 = if Day1DOW1 < 6
then 6 - Day1DOW1
else if Day1DOW1 == 6
then 7
else 6;
def SecondFridayDOM = FirstFridayDOM1 + 7;
def ThirdFridayDOM = FirstFridayDOM1 + 14;
def FourthFridayDOM = FirstFridayDOM1 + 21;
def RollDOM = FirstFridayDOM1 + 14; #changed to 21 to pick up all Fridays of the current month for weekly options
def ExpMonth1 = if RollDOM > CurrentDOM
then CurrentMonth + series - 1
else CurrentMonth + series;
def ExpMonth2 = if ExpMonth1 > 12 #options month input
then ExpMonth1 - 12
else ExpMonth1;
def ExpYear = if ExpMonth1 > 12 #options year input
then CurrentYear + 1
else CurrentYear;
def Day1DOW = GetDayOfWeek(ExpYear * 10000 + ExpMonth2 * 100 + 1); #first friday expiry calc
def FirstFridayDOM = if Day1DOW < 6
then 6 - Day1DOW
else if Day1DOW == 6
then 7
else 6;
def ExpDOM = firstFridayDOM + 13;
def ExpYY = ExpYear - 2000; # convert YYYY to 0-10 number YY or Y
def ExpY1 = if ExpYY > 9 # if year is double digit
then Round(ExpYY / 10,0) # use round to shear off first digit of YY (ex. 19, 1.9, 9)
else 0; # otherwise make first digit zero
def ExpY2 = if ExpYY > 9 # if year is double digit
then Round((ExpYY/10) - ExpY1,1) * 10 # isolate tenths of Y.Y as whole number # isolate tenths of Y.Y as whole number (ex. 1.9, 0.9, 9) -- fixed
else ExpYY; # otherwise return unprocessed single digit year
#MK Month Expiry Digit Format -MK
def ExpM1 = if ExpMonth2 > 9 # if double digit
then Round(ExpMonth2 / 10,0) # get month first digit
else 0; # else return 0
def ExpM2 = if ExpMonth2 > 9 # if double digit
then Round((ExpMonth2/10) - ExpM1,1) * 10 # isolate tenths of M.M as whole number -- fixed
else ExpMonth2; # otherwise return unprocessed single digit monthly
#MK Day Expiry Digit Format -MK
def ExpD1 = if ExpDOM > 9 # if double digit
then absvalue(Rounddown(absvalue(ExpDOM) / 10,0)) # get day first digit
else 0; # else return 0
def ExpD2 = if ExpDOM > 9 # if double digit
then absvalue((Round((ExpDOM/10) - ExpD1,1) * 10)) # isolate tenths of M.M as whole number -- fixed
else absvalue(ExpDOM); # otherwise return unprocessed single digit month
def pricerange1 = if close(period = AggregationPeriod.DAY)<=2 then 1 else 0; #.5
def pricerange2 = if close(period = AggregationPeriod.DAY)>5 and close(period = AggregationPeriod.DAY)<=150 then 1 else 0; #1
def pricerange3 = if close(period = AggregationPeriod.DAY)>150 and close(period = AggregationPeriod.DAY)<=500 then 1 else 0; #2.5
def pricerange4 = if close(period = AggregationPeriod.DAY)>550 and close(period = AggregationPeriod.DAY)<=4000 then 1 else 0; #5
def pricerange5 = if getsymbol()== "SPY" or getsymbol()== "QQQ" then 1 else 0;
def centerStrike = floor(close/10)*10;
rec strikeSpacing = if pricerange5 then 1
else if pricerange4 then 5
else if pricerange3 then 5
else if pricerange2 then 5
else if pricerange1 then 1
else double.nan;
rec barOffset = if !IsNaN(close) then strikeSpacing / 10.0 else barOffset[1];
AddLabel(yes, 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);
AddLabel(yes,(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))))));
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", 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 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];
great, looking forward to it, the dude on twitter changed his handle to private btw lol.def series = 1;
input show_label = yes;
def RTHopen = open(period = AggregationPeriod.DAY);
def CurrentYear =GetYear();
def CurrentMonth = GetMonth();
def CurrentDOM = GetDayOfMonth(GetYYYYMMDD());
def Day1DOW1 = GetDayOfWeek((CurrentYear * 10000) + (CurrentMonth * 100) + 1); # First DOM is this DOW
def FirstFridayDOM1 = if Day1DOW1 < 6
then 6 - Day1DOW1
else if Day1DOW1 == 6
then 7
else 6;
def SecondFridayDOM = FirstFridayDOM1 + 7;
def ThirdFridayDOM = FirstFridayDOM1 + 14;
def FourthFridayDOM = FirstFridayDOM1 + 21;
def RollDOM = FirstFridayDOM1 + 14; #changed to 21 to pick up all Fridays of the current month for weekly options
def ExpMonth1 = if RollDOM > CurrentDOM
then CurrentMonth + series - 1
else CurrentMonth + series;
def ExpMonth2 = if ExpMonth1 > 12 #options month input
then ExpMonth1 - 12
else ExpMonth1;
def ExpYear = if ExpMonth1 > 12 #options year input
then CurrentYear + 1
else CurrentYear;
def Day1DOW = GetDayOfWeek(ExpYear * 10000 + ExpMonth2 * 100 + 1); #first friday expiry calc
def FirstFridayDOM = if Day1DOW < 6
then 6 - Day1DOW
else if Day1DOW == 6
then 7
else 6;
def ExpDOM = firstFridayDOM + 13;
def ExpYY = ExpYear - 2000; # convert YYYY to 0-10 number YY or Y
def ExpY1 = if ExpYY > 9 # if year is double digit
then Round(ExpYY / 10,0) # use round to shear off first digit of YY (ex. 19, 1.9, 9)
else 0; # otherwise make first digit zero
def ExpY2 = if ExpYY > 9 # if year is double digit
then Round((ExpYY/10) - ExpY1,1) * 10 # isolate tenths of Y.Y as whole number # isolate tenths of Y.Y as whole number (ex. 1.9, 0.9, 9) -- fixed
else ExpYY; # otherwise return unprocessed single digit year
#MK Month Expiry Digit Format -MK
def ExpM1 = if ExpMonth2 > 9 # if double digit
then Round(ExpMonth2 / 10,0) # get month first digit
else 0; # else return 0
def ExpM2 = if ExpMonth2 > 9 # if double digit
then Round((ExpMonth2/10) - ExpM1,1) * 10 # isolate tenths of M.M as whole number -- fixed
else ExpMonth2; # otherwise return unprocessed single digit monthly
#MK Day Expiry Digit Format -MK
def ExpD1 = if ExpDOM > 9 # if double digit
then absvalue(Rounddown(absvalue(ExpDOM) / 10,0)) # get day first digit
else 0; # else return 0
def ExpD2 = if ExpDOM > 9 # if double digit
then absvalue((Round((ExpDOM/10) - ExpD1,1) * 10)) # isolate tenths of M.M as whole number -- fixed
else absvalue(ExpDOM); # otherwise return unprocessed single digit month
def pricerange1 = if close(period = AggregationPeriod.DAY)<=2 then 1 else 0; #.5
def pricerange2 = if close(period = AggregationPeriod.DAY)>5 and close(period = AggregationPeriod.DAY)<=150 then 1 else 0; #1
def pricerange3 = if close(period = AggregationPeriod.DAY)>150 and close(period = AggregationPeriod.DAY)<=500 then 1 else 0; #2.5
def pricerange4 = if close(period = AggregationPeriod.DAY)>550 and close(period = AggregationPeriod.DAY)<=4000 then 1 else 0; #5
def pricerange5 = if getsymbol()== "SPY" or getsymbol()== "QQQ" then 1 else 0;
def centerStrike = 450;
rec strikeSpacing = if pricerange5 then 1
else if pricerange4 then 5
else if pricerange3 then 5
else if pricerange2 then 5
else if pricerange1 then 1
else double.nan;
rec barOffset = if !IsNaN(close) then strikeSpacing / 10.0 else barOffset[1];
AddLabel(yes, 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);
AddLabel(yes,(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))))));
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", 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 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"));
def strikespac = 1;
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 - strikeSpac 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 - strikeSpac * 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 - strikeSpac * 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 + strikeSpac 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 + strikeSpac * 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 + strikeSpac * 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 - strikeSpac * 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 + strikeSpac * 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 - strikeSpac * 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 + strikeSpac * 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 - strikeSpac * 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 + strikeSpac * 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 - strikeSpac * 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 + strikeSpac * 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 - strikeSpac * 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 + strikeSpac * 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 - strikeSpac * 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 + strikeSpac * 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 - strikeSpac 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 - strikeSpac * 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 - strikeSpac * 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 + strikeSpac 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 + strikeSpac * 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 + strikeSpac * 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 - strikeSpac * 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 + strikeSpac * 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 - strikeSpac * 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 + strikeSpac * 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 - strikeSpac * 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 + strikeSpac * 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 - strikeSpac * 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 + strikeSpac * 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 - strikeSpac * 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 + strikeSpac * 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 - strikeSpac * 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 + strikeSpac * 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];
I updated it, had some errors , also there is still the issue of getting the plots to come up, if no one comes up with a solution, we will have to sert centerStrike as an input and enter it manuallygreat, looking forward to it, the dude on twitter changed his handle to private btw lol.
make sure not to mix my vars and the old varsI updated it, had some errors , also there is still the issue of getting the plots to come up, if no one comes up with a solution, we will have to sert centerStrike as an input and enter it manually
They’re not , your vars are ones I modify for monthly options using a different script , so there’s no confusion on that end. The issue is the plot, I still can’t wrap my mind on how those lines are able to plot like that , gonna have to do deep diving during a week I have free, because I think somewhere in there would explain why you can’t use a variable defined as a function for center strike , the option volume works fine it’s the plot that’s the issue, dates are good, although expdom will need to be modified back to 14 once options expire on next month on the 14thmake sure not to mix my vars and the old vars
They’re not , your vars are ones I modify for monthly options using a different script , so there’s no confusion on that end. The issue is the plot, I still can’t wrap my mind on how those lines are able to plot like that , gonna have to do deep diving during a week I have free, because I think somewhere in there would explain why you can’t use a variable defined as a function for center strike , the option volume works fine it’s the plot that’s the issue, dates are good, although expdom will need to be modified back to 14 once options expire on next month on the 14th
def series = 1;
input show_label = yes;
def RTHopen = open(period = AggregationPeriod.DAY);
def CurrentYear = GetYear();
def CurrentMonth = GetMonth();
def CurrentDOM = GetDayOfMonth(GetYYYYMMDD());
def Day1DOW1 = GetDayOfWeek((CurrentYear * 10000) + (CurrentMonth * 100) + 1); # First DOM is this DOW
def FirstFridayDOM1 = if Day1DOW1 < 6
then 6 - Day1DOW1
else if Day1DOW1 == 6
then 7
else 6;
def SecondFridayDOM = FirstFridayDOM1 + 7;
def ThirdFridayDOM = FirstFridayDOM1 + 14;
def FourthFridayDOM = FirstFridayDOM1 + 21;
def RollDOM = FirstFridayDOM1 + 14; #changed to 21 to pick up all Fridays of the current month for weekly options
def ExpMonthA = if RollDOM > CurrentDOM #MK - expmonth1 changed to ExpmonthA
then CurrentMonth + series - 1
else CurrentMonth + series;
def ExpMonthB = if ExpMonthA > 12 #options month input -- #MK - expmonth2 changed to ExpmonthB
then ExpMonthA - 12
else ExpMonthA;
def ExpYear = if ExpMonthA > 12 #options year input
then CurrentYear + 1
else CurrentYear;
def Day1DOW = GetDayOfWeek(ExpYear * 10000 + ExpMonthB * 100 + 1); #first friday expiry calc
def FirstFridayDOM = if Day1DOW < 6
then 6 - Day1DOW
else if Day1DOW == 6
then 7
else 6;
#MK added easier input to fix date
input datefix = 0;
def ExpDOM = FirstFridayDOM + 13 + datefix;
def ExpMonth2 = ExpMonthB; #MK in case more date issues need to be fixed
def pricerange1 = if close(period = AggregationPeriod.DAY) <= 10 then 1 else 0; #.5
def pricerange2 = if close(period = AggregationPeriod.DAY) > 10 and close(period = AggregationPeriod.DAY) <= 100 then 1 else 0; #1
def pricerange3 = if close(period = AggregationPeriod.DAY) > 150 and close(period = AggregationPeriod.DAY) <= 500 then 1 else 0; #2.5
def pricerange4 = if close(period = AggregationPeriod.DAY) > 501 and close(period = AggregationPeriod.DAY) <= 1000 then 1 else 0; #5
def pricerange5 = if close(period = AggregationPeriod.DAY) > 1000 and close(period = AggregationPeriod.DAY) <= 5000 then 1 else 0;;
#MK - sizing for price fixed
rec strikeSpacing =
if pricerange1 then .5
else if pricerange2 then 1
else if pricerange3 then 2.5
else if pricerange4 then 5
else if pricerange5 then 10
else Double.NaN;
#bar offset and default weight
rec barOffset = if !IsNaN(close) then strikeSpacing / 10.0 else barOffset[1];
def barWeight = 1;
# 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
rec extBar = if IsNaN(close[displayOffset]) then extBar[1] + 1 else 0;
input barLength = 45;
#centerstrike
input mode = {default AUTO, MANUAL};
input manualcenterstrike = 450;
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]; #MK - imported from prev code - plot now working
#call/put colors
DefineGlobalColor("Calls", Color.GREEN);
DefineGlobalColor("Puts", Color.RED);
#current option expiry label
AddLabel(yes, 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(yes, (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))))));
#options calculations **************
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))));
#puts
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 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"));
#strike spacing
def strikespac = if mode == mode.auto then strikespacing else 1; #MK - auto pricerange option
AddLabel(show_label, Concat("Strike Spacing: ", strikeSpac), Color.white);
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 - strikespac 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 - strikespac * 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 - strikespac * 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 + strikespac 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 + strikespac * 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 + strikespac * 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 - strikespac * 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 + strikespac * 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 - strikespac * 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 + strikespac * 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 - strikespac * 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 + strikespac * 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 - strikespac * 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 + strikespac * 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 - strikespac * 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 + strikespac * 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 - strikespac * 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 + strikespac * 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 - strikespac 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 - strikespac * 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 - strikespac * 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 + strikespac 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 + strikespac * 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 + strikespac * 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 - strikespac * 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 + strikespac * 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 - strikespac * 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 + strikespac * 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 - strikespac * 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 + strikespac * 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 - strikespac * 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 + strikespac * 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 - strikespac * 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 + strikespac * 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 - strikespac * 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 + strikespac * 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];
#Option Auto Strike OI
def series = 1;
input show_label = yes;
input mode = {default AUTO, MANUAL};
def RTHopen = open(period = AggregationPeriod.DAY);
def CurrentYear = GetYear();
def CurrentMonth = GetMonth();
def CurrentDOM = GetDayOfMonth(GetYYYYMMDD());
def Day1DOW1 = GetDayOfWeek((CurrentYear * 10000) + (CurrentMonth * 100) + 1); # First DOM is this DOW
def FirstFridayDOM1 = if Day1DOW1 < 6
then 6 - Day1DOW1
else if Day1DOW1 == 6
then 7
else 6;
def SecondFridayDOM = FirstFridayDOM1 + 7;
def ThirdFridayDOM = FirstFridayDOM1 + 14;
def FourthFridayDOM = FirstFridayDOM1 + 21;
def RollDOM = FirstFridayDOM1 + 14; #changed to 21 to pick up all Fridays of the current month for weekly options
def ExpMonthA = if RollDOM > CurrentDOM #MK - expmonth1 changed to ExpmonthA
then CurrentMonth + series - 1
else CurrentMonth + series;
def ExpMonthB = if ExpMonthA > 12 #options month input -- #MK - expmonth2 changed to ExpmonthB
then ExpMonthA - 12
else ExpMonthA;
def ExpYear = if ExpMonthA > 12 #options year input
then CurrentYear + 1
else CurrentYear;
def Day1DOW = GetDayOfWeek(ExpYear * 10000 + ExpMonthB * 100 + 1); #first friday expiry calc
def FirstFridayDOM = if Day1DOW < 6
then 6 - Day1DOW
else if Day1DOW == 6
then 7
else 6;
#MK added easier input to fix date
input datefix = 0;
def ExpDOM = FirstFridayDOM + 13 + datefix;
def ExpMonth2 = ExpMonthB; #MK in case more date issues need to be fixed
#strike spacing inputs
input maxStrikeSpacing = 25;
input manualCenterStrike = 440;
input manualStrikeSpacing = 1.0;
#centerstrike
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]; #MK - imported from prev code - plot now working
#strikeSpacing
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];
### bar vars ###
input displayOffset = 5; # Number of bars to right of current bar for display
input barWeight = 1;
rec barOffset = if !IsNaN(close) then strikeSpacing / 10.0 else barOffset[1];
rec extBar = if IsNaN(close[displayOffset]) then extBar[1] + 1 else 0; # Number of bars of right space minus 5
input barLength = 45;
#call/put colors
DefineGlobalColor("Calls", Color.GREEN);
DefineGlobalColor("Puts", Color.RED);
#current option expiry label
AddLabel(yes, 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(yes, (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))))));
#options calculations **************
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))));
#puts
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 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"));
#strike spacing
def strikespac = if mode == mode.AUTO then strikeSpacing else 1; #MK - auto pricerange option
AddLabel(show_label, Concat("Strike Spacing: ", strikespac), Color.WHITE);
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 - strikespac 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 - strikespac * 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 - strikespac * 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 + strikespac 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 + strikespac * 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 + strikespac * 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 - strikespac * 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 + strikespac * 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 - strikespac * 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 + strikespac * 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 - strikespac * 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 + strikespac * 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 - strikespac * 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 + strikespac * 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 - strikespac * 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 + strikespac * 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 - strikespac * 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 + strikespac * 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 - strikespac 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 - strikespac * 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 - strikespac * 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 + strikespac 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 + strikespac * 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 + strikespac * 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 - strikespac * 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 + strikespac * 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 - strikespac * 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 + strikespac * 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 - strikespac * 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 + strikespac * 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 - strikespac * 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 + strikespac * 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 - strikespac * 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 + strikespac * 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 - strikespac * 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 + strikespac * 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];
wish we had a fold/for loop for how many strikes because all that option code is a pita to copy paste but that's beyond meand increase the strikes ranges to maybe 60 instead of 19
wow! thanks @MountainKing333 you're a genius it works perfectly!!! . think you could modify it for weekly options?this one works
Code:#Option Auto Strike OI def series = 1; input show_label = yes; input mode = {default AUTO, MANUAL}; def RTHopen = open(period = AggregationPeriod.DAY); def CurrentYear = GetYear(); def CurrentMonth = GetMonth(); def CurrentDOM = GetDayOfMonth(GetYYYYMMDD()); def Day1DOW1 = GetDayOfWeek((CurrentYear * 10000) + (CurrentMonth * 100) + 1); # First DOM is this DOW def FirstFridayDOM1 = if Day1DOW1 < 6 then 6 - Day1DOW1 else if Day1DOW1 == 6 then 7 else 6; def SecondFridayDOM = FirstFridayDOM1 + 7; def ThirdFridayDOM = FirstFridayDOM1 + 14; def FourthFridayDOM = FirstFridayDOM1 + 21; def RollDOM = FirstFridayDOM1 + 14; #changed to 21 to pick up all Fridays of the current month for weekly options def ExpMonthA = if RollDOM > CurrentDOM #MK - expmonth1 changed to ExpmonthA then CurrentMonth + series - 1 else CurrentMonth + series; def ExpMonthB = if ExpMonthA > 12 #options month input -- #MK - expmonth2 changed to ExpmonthB then ExpMonthA - 12 else ExpMonthA; def ExpYear = if ExpMonthA > 12 #options year input then CurrentYear + 1 else CurrentYear; def Day1DOW = GetDayOfWeek(ExpYear * 10000 + ExpMonthB * 100 + 1); #first friday expiry calc def FirstFridayDOM = if Day1DOW < 6 then 6 - Day1DOW else if Day1DOW == 6 then 7 else 6; #MK added easier input to fix date input datefix = 0; def ExpDOM = FirstFridayDOM + 13 + datefix; def ExpMonth2 = ExpMonthB; #MK in case more date issues need to be fixed #strike spacing inputs input maxStrikeSpacing = 25; input manualCenterStrike = 440; input manualStrikeSpacing = 1.0; #centerstrike 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]; #MK - imported from prev code - plot now working #strikeSpacing 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]; ### bar vars ### input displayOffset = 5; # Number of bars to right of current bar for display input barWeight = 1; rec barOffset = if !IsNaN(close) then strikeSpacing / 10.0 else barOffset[1]; rec extBar = if IsNaN(close[displayOffset]) then extBar[1] + 1 else 0; # Number of bars of right space minus 5 input barLength = 45; #call/put colors DefineGlobalColor("Calls", Color.GREEN); DefineGlobalColor("Puts", Color.RED); #current option expiry label AddLabel(yes, 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(yes, (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)))))); #options calculations ************** 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)))); #puts 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 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")); #strike spacing def strikespac = if mode == mode.AUTO then strikeSpacing else 1; #MK - auto pricerange option AddLabel(show_label, Concat("Strike Spacing: ", strikespac), Color.WHITE); 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 - strikespac 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 - strikespac * 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 - strikespac * 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 + strikespac 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 + strikespac * 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 + strikespac * 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 - strikespac * 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 + strikespac * 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 - strikespac * 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 + strikespac * 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 - strikespac * 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 + strikespac * 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 - strikespac * 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 + strikespac * 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 - strikespac * 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 + strikespac * 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 - strikespac * 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 + strikespac * 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 - strikespac 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 - strikespac * 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 - strikespac * 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 + strikespac 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 + strikespac * 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 + strikespac * 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 - strikespac * 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 + strikespac * 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 - strikespac * 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 + strikespac * 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 - strikespac * 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 + strikespac * 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 - strikespac * 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 + strikespac * 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 - strikespac * 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 + strikespac * 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 - strikespac * 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 + strikespac * 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];
no genius here lol I barely know how to code -- just inserted old code from a previous version and cleaned it up.wow! thanks @MountainKing333 you're a genius it works perfectly!!! . think you could modify it for weekly options?
Thread starter | Similar threads | Forum | Replies | Date |
---|---|---|---|---|
S | Unusual Options Metric (Option Chain Column) For ThinkOrSwim | Indicators | 55 | |
Unusual Option Activity Scanner for ThinkorSwim | Indicators | 61 | ||
FlowAlgo Dark pool and Option Flow for ThinkorSwim | Indicators | 23 | ||
Option Greeks Calculation Labels for ThinkorSwim | Indicators | 5 |
Start a new thread and receive assistance from our community.
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.
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.