Welcome! Log In Create A New Profile

Get Earnings and Seasonal Trends - Subscribe Today!

Advanced

Fun with ThinkScript

Posted by robert 
Re: Fun with ThinkScript
April 12, 2015 07:53AM
Hi

Is it possible to make a watch-list for that indicator to give alert only when the red bars of the histogram changed into blue bar and also when the green bars change into blue bar ( Period 1 hour ) ?" only for the first bar that changed "







#

declare lower;

input period = 10;
input smoothingPeriod = 3;
input priceChangeWeighted = YES;
def delta = absValue(close-close[1]);
def multiplier = if(priceChangeWeighted, delta,1);

plot maxLine = 80.0;
plot minLine = 20.0;
maxLine.setDefaultColor(color.BLUE);
maxLine.setLineWeight(2);
minLine.setDefaultColor(color.BLUE);
minLine.setLineWeight(2);
plot midLine = 50.0;
midLine.setDefaultColor(color.WHITE);
midLine.setLineWeight(2);

DEF up = if(close > close[1], volume*multiplier, 0);
DEF down = if(close < close[1], volume*multiplier, 0);
DEF upvol = sum(up, period);
DEF downvol = sum(down, period);
DEF ratio = (100.0*(upvol/(downvol+upvol)));
DEF UPDVR = HullMovingAvg(ratio,smoothingPeriod);

DEF lineColor = if(UPDVR >= 80.0, 6, if(UPDVR < 20.0,5,1));
DEF plotData = UPDVR;
plot VolumeRatio = UPDVR;
VolumeRatio.AssignValueColor(getColor(linecolor));
VolumeRatio.setLineWeight(3);
VolumeRatio.setPaintingStrategy(paintingStrategy.HISTOGRAM);
plot VolumeRatioLine = UPDVR;
VolumeRatioLine.AssignValueColor(getColor(if(linecolor != 1, linecolor, 9)));
VolumeRatioLine.setLineWeight(2);

#


thanks ..



Edited 1 time(s). Last edit at 04/12/2015 07:54AM by optiontrader101.
Re: Fun with ThinkScript
April 12, 2015 11:49AM
This code will signal in the column only when it changes from red or green to cyan. You must set aggregation to 1 hour


input period = 10;
input smoothingPeriod = 3;
input priceChangeWeighted = YES;
def delta = absValue(close-close[1]);
def multiplier = if(priceChangeWeighted, delta,1);

def maxLine = 80.0;
def minLine = 20.0;


DEF up = if(close > close[1], volume*multiplier, 0);
DEF down = if(close < close[1], volume*multiplier, 0);
DEF upvol = sum(up, period);
DEF downvol = sum(down, period);
DEF ratio = (100.0*(upvol/(downvol+upvol)));
DEF UPDVR = HullMovingAvg(ratio,smoothingPeriod);

plot sig = if UPDVR < 80 and updvr[1] > 80 then 1 else if UPDVR > 20 and updvr[1] < 20 then 2 else 0;


sig.AssignvalueColor(IF sig == 1 THEN COLOR.red else if sig ==2 then color.green ELSE Color.WHITE);

AssignbackgroundColor(IF sig == 1 THEN COLOR.red else if sig ==2 then color.green ELSE Color.WHITE);
Re: Fun with ThinkScript
April 12, 2015 12:58PM
Thank you MTUT , I really appreciate your help. it is perfect thumbs up
Re: Fun with ThinkScript
April 12, 2015 05:43PM
Hello!!! I'm new at this. I was wondering if anyone could help me. I'm looking for a scan that will show me stocks that have moving averages converging. pretty much coming together. The scan I have is this but i would prefer a more efficient one where i can add multiple moving averages.

def ma = movAvgExponential(close,9);
def s = ma*0.01;
plot scan = absvalue(close - ma) is less than or equal to s;


I would appreciate any help.
az
Re: Fun with ThinkScript
April 12, 2015 06:13PM
Hi,

I have quick question for a scan. What would be the code to search for stocks that satisfy the following criteria:

Option bid price / stock price = > 0.20

Basically looking for options that have a premium of more than 20% of the stock price.

Would appreciate some help.

Thanks.
Re: Fun with ThinkScript
April 13, 2015 12:04AM
Quote
az
I have quick question for a scan. What would be the code to search for stocks that satisfy the following criteria:

Option bid price / stock price = > 0.20

It's not possible. ThinkScript does not have access to option prices. Here is a list of all the option related functions that ThinkScript supports---price is not among them.

- robert


Professional ThinkorSwim indicators for the average Joe



Edited 1 time(s). Last edit at 04/13/2015 12:04AM by robert.
Re: Fun with ThinkScript
April 13, 2015 02:29AM
Quote
brazilianpillar
Hello!!! I'm new at this. I was wondering if anyone could help me. I'm looking for a scan that will show me stocks that have moving averages converging. pretty much coming together. The scan I have is this but i would prefer a more efficient one where i can add multiple moving averages.

def ma = movAvgExponential(close,9);
def s = ma*0.01;
plot scan = absvalue(close - ma) is less than or equal to s;

The following scan turned up this (among others).



Change the values to suit your needs.

def MA1 = ExpAverage(close, 10);
def MA2 = ExpAverage(close, 50);
def s = MA1 * 0.01;
plot scan = AbsValue(MA1 - MA2) <= s;

- robert


Professional ThinkorSwim indicators for the average Joe
Re: Fun with ThinkScript
April 13, 2015 06:17AM
I have this script for " PUT / CALL ratio " :



#


declare lower;
declare once_per_bar;

input expirationDate = 20150321;
input expirationDate2 = 20150418;
input expirationDate3 = 20150516;

input pcrAveragePeriod = 20;

def atmC = volume(GetATMOption(GetUnderlyingSymbol(), expirationDate, OptionClass.CALL));
def itmC1 = volume(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate, OptionClass.CALL)));
def itmC2 = volume(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate, OptionClass.CALL))));
def itmC3 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate, OptionClass.CALL)))));
def itmC4 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate, OptionClass.CALL))))));
def itmC5 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate, OptionClass.CALL)))))));
def itmC6 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate, OptionClass.CALL))))))));
def itmC7 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate, OptionClass.CALL)))))))));
def itmC8 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate, OptionClass.CALL))))))))));
def itmC9 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate, OptionClass.CALL)))))))))));
def itmC10 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate, OptionClass.CALL))))))))))));
def otmC1 = volume(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate, OptionClass.CALL)));
def otmC2 = volume(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate, OptionClass.CALL))));
def otmC3 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate, OptionClass.CALL)))));
def otmC4 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate, OptionClass.CALL))))));
def otmC5 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate, OptionClass.CALL)))))));
def otmC6 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate, OptionClass.CALL))))))));
def otmC7 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate, OptionClass.CALL)))))))));
def otmC8 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate, OptionClass.CALL))))))))));
def otmC9 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate, OptionClass.CALL)))))))))));
def otmC10 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate, OptionClass.CALL))))))))))));
def atmCV = if !IsNaN(atmC) then atmC else 0;
def itmC1V = if !IsNaN(itmC1) then itmC1 else 0;
def itmC2V = if !IsNaN(itmC2) then itmC2 else 0;
def itmC3V = if !IsNaN(itmC3) then itmC3 else 0;
def itmC4V = if !IsNaN(itmC4) then itmC4 else 0;
def itmC5V = if !IsNaN(itmC5) then itmC5 else 0;
def itmC6V = if !IsNaN(itmC6) then itmC6 else 0;
def itmC7V = if !IsNaN(itmC7) then itmC7 else 0;
def itmC8V = if !IsNaN(itmC8) then itmC8 else 0;
def itmC9V = if !IsNaN(itmC9) then itmC9 else 0;
def itmC10V = if !IsNaN(itmC10) then itmC10 else 0;
def otmC1V = if !IsNaN(otmC1) then otmC1 else 0;
def otmC2V = if !IsNaN(otmC2) then otmC2 else 0;
def otmC3V = if !IsNaN(otmC3) then otmC3 else 0;
def otmC4V = if !IsNaN(otmC4) then otmC4 else 0;
def otmC5V = if !IsNaN(otmC5) then otmC5 else 0;
def otmC6V = if !IsNaN(otmC6) then otmC6 else 0;
def otmC7V = if !IsNaN(otmC7) then otmC7 else 0;
def otmC8V = if !IsNaN(otmC8) then otmC8 else 0;
def otmC9V = if !IsNaN(otmC9) then otmC9 else 0;
def otmC10V = if !IsNaN(otmC10) then otmC10 else 0;


def atmP = volume(GetATMOption(GetUnderlyingSymbol(), expirationDate, OptionClass.PUT));
def itmP1 = volume(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate, OptionClass.PUT)));
def itmP2 = volume(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate, OptionClass.PUT))));
def itmP3 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate, OptionClass.PUT)))));
def itmP4 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate, OptionClass.PUT))))));
def itmP5 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate, OptionClass.PUT)))))));
def itmP6 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate, OptionClass.PUT))))))));
def itmP7 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate, OptionClass.PUT)))))))));
def itmP8 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate, OptionClass.PUT))))))))));
def itmP9 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate, OptionClass.PUT)))))))))));
def itmP10 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate, OptionClass.PUT))))))))))));
def otmP1 = volume(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate, OptionClass.PUT)));
def otmP2 = volume(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate, OptionClass.PUT))));
def otmP3 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate, OptionClass.PUT)))));
def otmP4 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate, OptionClass.PUT))))));
def otmP5 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate, OptionClass.PUT)))))));
def otmP6 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate, OptionClass.PUT))))))));
def otmP7 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate, OptionClass.PUT)))))))));
def otmP8 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate, OptionClass.PUT))))))))));
def otmP9 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate, OptionClass.PUT)))))))))));
def otmP10 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate, OptionClass.PUT))))))))))));
def atmPV = if !IsNaN(atmP) then atmP else 0;
def itmP1V = if !IsNaN(itmP1) then itmP1 else 0;
def itmP2V = if !IsNaN(itmP2) then itmP2 else 0;
def itmP3V = if !IsNaN(itmP3) then itmP3 else 0;
def itmP4V = if !IsNaN(itmP4) then itmP4 else 0;
def itmP5V = if !IsNaN(itmP5) then itmP5 else 0;
def itmP6V = if !IsNaN(itmP6) then itmP6 else 0;
def itmP7V = if !IsNaN(itmP7) then itmP7 else 0;
def itmP8V = if !IsNaN(itmP8) then itmP8 else 0;
def itmP9V = if !IsNaN(itmP9) then itmP9 else 0;
def itmP10V = if !IsNaN(itmP10) then itmP10 else 0;
def otmP1V = if !IsNaN(otmP1) then otmP1 else 0;
def otmP2V = if !IsNaN(otmP2) then otmP2 else 0;
def otmP3V = if !IsNaN(otmP3) then otmP3 else 0;
def otmP4V = if !IsNaN(otmP4) then otmP4 else 0;
def otmP5V = if !IsNaN(otmP5) then otmP5 else 0;
def otmP6V = if !IsNaN(otmP6) then otmP6 else 0;
def otmP7V = if !IsNaN(otmP7) then otmP7 else 0;
def otmP8V = if !IsNaN(otmP8) then otmP8 else 0;
def otmP9V = if !IsNaN(otmP9) then otmP9 else 0;
def otmP10V = if !IsNaN(otmP10) then otmP10 else 0;


def atm2C = volume(GetATMOption(GetUnderlyingSymbol(), expirationDate2, OptionClass.CALL));
def itm2C1 = volume(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate2, OptionClass.CALL)));
def itm2C2 = volume(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate2, OptionClass.CALL))));
def itm2C3 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate2, OptionClass.CALL)))));
def itm2C4 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate2, OptionClass.CALL))))));
def itm2C5 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate2, OptionClass.CALL)))))));
def itm2C6 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate2, OptionClass.CALL))))))));
def itm2C7 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate2, OptionClass.CALL)))))))));
def itm2C8 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate2, OptionClass.CALL))))))))));
def itm2C9 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate2, OptionClass.CALL)))))))))));
def itm2C10 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate2, OptionClass.CALL))))))))))));
def otm2C1 = volume(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate2, OptionClass.CALL)));
def otm2C2 = volume(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate2, OptionClass.CALL))));
def otm2C3 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate2, OptionClass.CALL)))));
def otm2C4 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate2, OptionClass.CALL))))));
def otm2C5 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate2, OptionClass.CALL)))))));
def otm2C6 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate2, OptionClass.CALL))))))));
def otm2C7 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate2, OptionClass.CALL)))))))));
def otm2C8 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate2, OptionClass.CALL))))))))));
def otm2C9 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate2, OptionClass.CALL)))))))))));
def otm2C10 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate2, OptionClass.CALL))))))))))));
def atm2CV = if !IsNaN(atm2C) then atm2C else 0;
def itm2C1V = if !IsNaN(itm2C1) then itm2C1 else 0;
def itm2C2V = if !IsNaN(itm2C2) then itm2C2 else 0;
def itm2C3V = if !IsNaN(itm2C3) then itm2C3 else 0;
def itm2C4V = if !IsNaN(itm2C4) then itm2C4 else 0;
def itm2C5V = if !IsNaN(itm2C5) then itm2C5 else 0;
def itm2C6V = if !IsNaN(itm2C6) then itm2C6 else 0;
def itm2C7V = if !IsNaN(itm2C7) then itm2C7 else 0;
def itm2C8V = if !IsNaN(itm2C8) then itm2C8 else 0;
def itm2C9V = if !IsNaN(itm2C9) then itm2C9 else 0;
def itm2C10V = if !IsNaN(itm2C10) then itm2C10 else 0;
def otm2C1V = if !IsNaN(otm2C1) then otm2C1 else 0;
def otm2C2V = if !IsNaN(otm2C2) then otm2C2 else 0;
def otm2C3V = if !IsNaN(otm2C3) then otm2C3 else 0;
def otm2C4V = if !IsNaN(otm2C4) then otm2C4 else 0;
def otm2C5V = if !IsNaN(otm2C5) then otm2C5 else 0;
def otm2C6V = if !IsNaN(otm2C6) then otm2C6 else 0;
def otm2C7V = if !IsNaN(otm2C7) then otm2C7 else 0;
def otm2C8V = if !IsNaN(otm2C8) then otm2C8 else 0;
def otm2C9V = if !IsNaN(otm2C9) then otm2C9 else 0;
def otm2C10V = if !IsNaN(otm2C10) then otm2C10 else 0;

def atm2P = volume(GetATMOption(GetUnderlyingSymbol(), expirationDate2, OptionClass.PUT));
def itm2P1 = volume(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate2, OptionClass.PUT)));
def itm2P2 = volume(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate2, OptionClass.PUT))));
def itm2P3 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate2, OptionClass.PUT)))));
def itm2P4 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate2, OptionClass.PUT))))));
def itm2P5 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate2, OptionClass.PUT)))))));
def itm2P6 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate2, OptionClass.PUT))))))));
def itm2P7 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate2, OptionClass.PUT)))))))));
def itm2P8 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate2, OptionClass.PUT))))))))));
def itm2P9 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate2, OptionClass.PUT)))))))))));
def itm2P10 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate2, OptionClass.PUT))))))))))));
def otm2P1 = volume(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate2, OptionClass.PUT)));
def otm2P2 = volume(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate2, OptionClass.PUT))));
def otm2P3 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate2, OptionClass.PUT)))));
def otm2P4 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate2, OptionClass.PUT))))));
def otm2P5 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate2, OptionClass.PUT)))))));
def otm2P6 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate2, OptionClass.PUT))))))));
def otm2P7 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate2, OptionClass.PUT)))))))));
def otm2P8 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate2, OptionClass.PUT))))))))));
def otm2P9 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate2, OptionClass.PUT)))))))))));
def otm2P10 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate2, OptionClass.PUT))))))))))));
def atm2PV = if !IsNaN(atm2P) then atm2P else 0;
def itm2P1V = if !IsNaN(itm2P1) then itm2P1 else 0;
def itm2P2V = if !IsNaN(itm2P2) then itm2P2 else 0;
def itm2P3V = if !IsNaN(itm2P3) then itm2P3 else 0;
def itm2P4V = if !IsNaN(itm2P4) then itm2P4 else 0;
def itm2P5V = if !IsNaN(itm2P5) then itm2P5 else 0;
def itm2P6V = if !IsNaN(itm2P6) then itm2P6 else 0;
def itm2P7V = if !IsNaN(itm2P7) then itm2P7 else 0;
def itm2P8V = if !IsNaN(itm2P8) then itm2P8 else 0;
def itm2P9V = if !IsNaN(itm2P9) then itm2P9 else 0;
def itm2P10V = if !IsNaN(itm2P10) then itm2P10 else 0;
def otm2P1V = if !IsNaN(otm2P1) then otm2P1 else 0;
def otm2P2V = if !IsNaN(otm2P2) then otm2P2 else 0;
def otm2P3V = if !IsNaN(otm2P3) then otm2P3 else 0;
def otm2P4V = if !IsNaN(otm2P4) then otm2P4 else 0;
def otm2P5V = if !IsNaN(otm2P5) then otm2P5 else 0;
def otm2P6V = if !IsNaN(otm2P6) then otm2P6 else 0;
def otm2P7V = if !IsNaN(otm2P7) then otm2P7 else 0;
def otm2P8V = if !IsNaN(otm2P8) then otm2P8 else 0;
def otm2P9V = if !IsNaN(otm2P9) then otm2P9 else 0;
def otm2P10V = if !IsNaN(otm2P10) then otm2P10 else 0;

def atm3C = volume(GetATMOption(GetUnderlyingSymbol(), expirationDate3, OptionClass.CALL));
def itm3C1 = volume(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate3, OptionClass.CALL)));
def itm3C2 = volume(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate3, OptionClass.CALL))));
def itm3C3 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate3, OptionClass.CALL)))));
def itm3C4 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate3, OptionClass.CALL))))));
def itm3C5 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate3, OptionClass.CALL)))))));
def itm3C6 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate3, OptionClass.CALL))))))));
def itm3C7 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate3, OptionClass.CALL)))))))));
def itm3C8 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate3, OptionClass.CALL))))))))));
def itm3C9 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate3, OptionClass.CALL)))))))))));
def itm3C10 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate3, OptionClass.CALL))))))))))));
def otm3C1 = volume(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate3, OptionClass.CALL)));
def otm3C2 = volume(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate3, OptionClass.CALL))));
def otm3C3 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate3, OptionClass.CALL)))));
def otm3C4 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate3, OptionClass.CALL))))));
def otm3C5 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate3, OptionClass.CALL)))))));
def otm3C6 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate3, OptionClass.CALL))))))));
def otm3C7 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate3, OptionClass.CALL)))))))));
def otm3C8 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate3, OptionClass.CALL))))))))));
def otm3C9 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate3, OptionClass.CALL)))))))))));
def otm3C10 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate3, OptionClass.CALL))))))))))));
def atm3CV = if !IsNaN(atm3C) then atm3C else 0;
def itm3C1V = if !IsNaN(itm3C1) then itm3C1 else 0;
def itm3C2V = if !IsNaN(itm3C2) then itm3C2 else 0;
def itm3C3V = if !IsNaN(itm3C3) then itm3C3 else 0;
def itm3C4V = if !IsNaN(itm3C4) then itm3C4 else 0;
def itm3C5V = if !IsNaN(itm3C5) then itm3C5 else 0;
def itm3C6V = if !IsNaN(itm3C6) then itm3C6 else 0;
def itm3C7V = if !IsNaN(itm3C7) then itm3C7 else 0;
def itm3C8V = if !IsNaN(itm3C8) then itm3C8 else 0;
def itm3C9V = if !IsNaN(itm3C9) then itm3C9 else 0;
def itm3C10V = if !IsNaN(itm3C10) then itm3C10 else 0;
def otm3C1V = if !IsNaN(otm3C1) then otm3C1 else 0;
def otm3C2V = if !IsNaN(otm3C2) then otm3C2 else 0;
def otm3C3V = if !IsNaN(otm3C3) then otm3C3 else 0;
def otm3C4V = if !IsNaN(otm3C4) then otm3C4 else 0;
def otm3C5V = if !IsNaN(otm3C5) then otm3C5 else 0;
def otm3C6V = if !IsNaN(otm3C6) then otm3C6 else 0;
def otm3C7V = if !IsNaN(otm3C7) then otm3C7 else 0;
def otm3C8V = if !IsNaN(otm3C8) then otm3C8 else 0;
def otm3C9V = if !IsNaN(otm3C9) then otm3C9 else 0;
def otm3C10V = if !IsNaN(otm3C10) then otm3C10 else 0;

def atm3P = volume(GetATMOption(GetUnderlyingSymbol(), expirationDate3, OptionClass.PUT));
def itm3P1 = volume(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate3, OptionClass.PUT)));
def itm3P2 = volume(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate3, OptionClass.PUT))));
def itm3P3 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate3, OptionClass.PUT)))));
def itm3P4 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate3, OptionClass.PUT))))));
def itm3P5 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate3, OptionClass.PUT)))))));
def itm3P6 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate3, OptionClass.PUT))))))));
def itm3P7 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate3, OptionClass.PUT)))))))));
def itm3P8 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate3, OptionClass.PUT))))))))));
def itm3P9 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate3, OptionClass.PUT)))))))))));
def itm3P10 = volume(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetNextITMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate3, OptionClass.PUT))))))))))));
def otm3P1 = volume(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate3, OptionClass.PUT)));
def otm3P2 = volume(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate3, OptionClass.PUT))));
def otm3P3 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate3, OptionClass.PUT)))));
def otm3P4 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate3, OptionClass.PUT))))));
def otm3P5 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate3, OptionClass.PUT)))))));
def otm3P6 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate3, OptionClass.PUT))))))));
def otm3P7 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate3, OptionClass.PUT)))))))));
def otm3P8 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate3, OptionClass.PUT))))))))));
def otm3P9 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate3, OptionClass.PUT)))))))))));
def otm3P10 = volume(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetNextOTMOption(GetATMOption(GetUnderlyingSymbol(), expirationDate3, OptionClass.PUT))))))))))));
def atm3PV = if !IsNaN(atm3P) then atm3P else 0;
def itm3P1V = if !IsNaN(itm3P1) then itm3P1 else 0;
def itm3P2V = if !IsNaN(itm3P2) then itm3P2 else 0;
def itm3P3V = if !IsNaN(itm3P3) then itm3P3 else 0;
def itm3P4V = if !IsNaN(itm3P4) then itm3P4 else 0;
def itm3P5V = if !IsNaN(itm3P5) then itm3P5 else 0;
def itm3P6V = if !IsNaN(itm3P6) then itm3P6 else 0;
def itm3P7V = if !IsNaN(itm3P7) then itm3P7 else 0;
def itm3P8V = if !IsNaN(itm3P8) then itm3P8 else 0;
def itm3P9V = if !IsNaN(itm3P9) then itm3P9 else 0;
def itm3P10V = if !IsNaN(itm3P10) then itm3P10 else 0;
def otm3P1V = if !IsNaN(otm3P1) then otm3P1 else 0;
def otm3P2V = if !IsNaN(otm3P2) then otm3P2 else 0;
def otm3P3V = if !IsNaN(otm3P3) then otm3P3 else 0;
def otm3P4V = if !IsNaN(otm3P4) then otm3P4 else 0;
def otm3P5V = if !IsNaN(otm3P5) then otm3P5 else 0;
def otm3P6V = if !IsNaN(otm3P6) then otm3P6 else 0;
def otm3P7V = if !IsNaN(otm3P7) then otm3P7 else 0;
def otm3P8V = if !IsNaN(otm3P8) then otm3P8 else 0;
def otm3P9V = if !IsNaN(otm3P9) then otm3P9 else 0;
def otm3P10V = if !IsNaN(otm3P10) then otm3P10 else 0;

def totalCallVolume = atmCV + itmC1V + itmC2V + itmC3V + itmC4V + itmC5V + itmC6V + itmC7V + itmC8V + itmC9V + itmC10V
+ otmC1V + otmC2V + otmC3V + otmC4V + otmC5V + otmC6V + otmC7V + otmC8V + otmC9V + otmC10V +
atm2CV + itm2C1V + itm2C2V + itm2C3V + itm2C4V + itm2C5V + itm2C6V + itm2C7V + itm2C8V + itm2C9V + itm2C10V
+ otm2C1V + otm2C2V + otm2C3V + otm2C4V + otm2C5V + otm2C6V + otm2C7V + otm2C8V + otm2C9V + otm2C10V +
atm3CV + itm3C1V + itm3C2V + itm3C3V + itm3C4V + itm3C5V + itm3C6V + itm3C7V + itm3C8V + itm3C9V + itm3C10V
+ otm3C1V + otm3C2V + otm3C3V + otm3C4V + otm3C5V + otm3C6V + otm3C7V + otm3C8V + otm3C9V + otm3C10V;

plot calls = if !isNan(close) then totalCallVolume else double.nan;
calls.SetDefaultColor(Color.GREEN);

def totalPutVolume = atmPV + itmP1V + itmP2V + itmP3V + itmP4V + itmP5V + itmP6V + itmP7V + itmP8V + itmP9V + itmP10V
+ otmP1V + otmP2V + otmP3V + otmP4V + otmP5V + otmP6V + otmP7V + otmP8V + otmP9V + otmP10V+
atm2PV + itm2P1V + itm2P2V + itm2P3V + itm2P4V + itm2P5V + itm2P6V + itm2P7V + itm2P8V + itm2P9V + itm2P10V
+ otm2P1V + otm2P2V + otm2P3V + otm2P4V + otm2P5V + otm2P6V + otm2P7V + otm2P8V + otm2P9V + otm2P10V+
atm3PV + itm3P1V + itm3P2V + itm3P3V + itm3P4V + itm3P5V + itm3P6V + itm3P7V + itm3P8V + itm3P9V + itm3P10V
+ otm3P1V + otm3P2V + otm3P3V + otm3P4V + otm3P5V + otm3P6V + otm3P7V + otm3P8V + otm3P9V + otm3P10V;

plot puts = if !isNan(close) then totalPutVolume else double.nan;
puts.SetDefaultColor(Color.RED);

plot pcr = (puts/max(1,calls));
pcr.setDefaultColor(color.cyan);
plot pcrAvg = average(pcr,pcrAveragePeriod);
pcrAvg.setDefaultColor(color.white);
pcr.hide();

AddLabel(yes, Concat("Put Volume: ", totalPutVolume), color.orange);
AddLabel(yes, Concat("Call Volume: ", totalCallVolume), color.lime);
AddLabel(yes, Concat("P/C: ", totalPutVolume/totalCallVolume), color.white);

#

Is it possible instead of numbers to be a BULSH alert or Bearish alert according to the value ? I wanted to be up with the chart .



az
Re: Fun with ThinkScript
April 13, 2015 07:55AM
robert Wrote:
-------------------------------------------------------
> > I have quick question for a scan. What would be
> the code to search for stocks that satisfy the
> following criteria:
>
> Option bid price / stock price = > 0.20
>
>
> It's not possible. ThinkScript does not have
> access to option prices. Here is a list of all
> the option related functions that ThinkScript
> supports---price is not among them.



Hi,

This is strange, because the page you referenced shows acces to "OptionPrice ".
Is this a new function?

Thanks.
Re: Fun with ThinkScript
April 13, 2015 07:59AM
Quote
az
This is strange, because the page you referenced shows access to "OptionPrice ".
Is this a new function?

If you read about the use of "OptionPrice" on that page, it is for calculating the theoretical value of an option price given user input parameters. It is not for looking up the actual price of options.

- robert


Professional ThinkorSwim indicators for the average Joe
Re: Fun with ThinkScript
April 13, 2015 08:25AM
Quote
optiontrader101
Is it possible instead of numbers to be a BULSH alert or Bearish alert according to the value ? I wanted to be up with the chart .

This is a really lengthy script, rather than pasting it here and cluttering up the thread, I've posted the modified version here.






- robert


Professional ThinkorSwim indicators for the average Joe
Re: Fun with ThinkScript
April 13, 2015 08:27PM
Please,

Someone get this man a Burrito!!!!

:-)
Re: Fun with ThinkScript
April 15, 2015 01:17PM
I recently received a request to write a script that would plot the overnight high and low on the current intraday chart.



If this interests you, the script is available here.

- robert


Professional ThinkorSwim indicators for the average Joe
Re: Fun with ThinkScript
April 16, 2015 07:55PM
Quote
ht65
Robert;
Your work with thinkscript is a wonder to behold..I am a longtime admirer, fist time requester..lol

Could you possible code the VolStat and StretchStat from Ken Long's work..from his bundle 2 here? [tortoisecapital.net]

VolStat available here.



StretchStat available here.



- robert


Professional ThinkorSwim indicators for the average Joe



Edited 1 time(s). Last edit at 09/17/2015 08:34AM by robert.
Re: Fun with ThinkScript
April 16, 2015 10:49PM
By using the daily closing price along with a combination of both the StretchStat and VolStat, referenced above, the market may be classified in one of nine conditions.







More information and the script available here.

- robert


Professional ThinkorSwim indicators for the average Joe
Re: Fun with ThinkScript
April 17, 2015 07:22AM
The idea for this indicator—which shows breakout above or below the previous range—came from this article by Ken Long.

NDX (10) would represent a 10 day look back period from yesterday to 11 days ago, with today being represented as the zero day.

If the asset traded in a range from 10 to 20 in the look back timeframe, and today closed at a price of 10, it would have an index value of zero. If the close today were 20, then the index value would be 100. If the close today were 21, the index value would be 110 which would indicate a breakout of 10% greater than the previous trading range.



When used in a watch-list column, this information may be useful when scanning for breakouts in a large population of stocks.



For more information, watch this video demonstrating the difference between the Williams %R and the NDX () oscillators.



The script is available here for use as either a chart indicator or a watch-list column.

- robert


Professional ThinkorSwim indicators for the average Joe
Re: Fun with ThinkScript
April 20, 2015 05:59AM
The goal of this script is to set reasonable expectations for intra-day price movement.

To establish reasonable expectations, I need to know things such as:
    On average, how far does price move up from the open to the high of the day?
    On average, how far does price move down from the open to the low of the day?
    What is the average daily price range?
Once that data has been gathered, standard deviations are calculated then the average price range is expanded by one standard deviation. According to statistics, the intra-day price movements should fall within that expanded range (avg range + 1SD) roughly 70% of the time.

Any price movement within that expanded range would be considered "normal." Price moves beyond that expanded range would signify a large move for the day.



This clip shows a slightly below average sized move.



More information and the script itself available here.

- robert


Professional ThinkorSwim indicators for the average Joe
Re: Fun with ThinkScript
April 20, 2015 06:20AM
Robert,

You go boooyyyyyy!!! Look at ya, making video clips nowsmiling smiley

That is really cool. I sort of got mesmerized staring at that thing over and over smiling smiley
Re: Fun with ThinkScript
April 20, 2015 10:22AM
Quote
RichieRick
Robert,

You go boooyyyyyy!!! Look at ya, making video clips now smiling smiley

That is really cool. I sort of got mesmerized staring at that thing over and over smiling smiley

LOL! Yeah, me too.

I figured it would be easier to play show-and-tell rather than trying to write up a full description of what the script did.

- robert


Professional ThinkorSwim indicators for the average Joe
Re: Fun with ThinkScript
April 20, 2015 01:46PM
Hello dear friends!!!!Help me please!! I want a script that shows the base on extremes, base above high and below low


ё
ё
ёёёё
ё ё
ё ё ё
ё ё ё
ё ё
ё
Re: Fun with ThinkScript
April 20, 2015 03:07PM
Quote
vadim
Hello dear friends!!!!Help me please!! I want a script that shows the base on extremes, base above high and below low



def H = if high == HighestAll(high) then high else H[1];
def L = if low == LowestAll(low) then low else L[1];
plot highest = if H == 0 then Double.NaN  else H;
plot lowest = if L == 0 then Double.NaN else L;

- robert


Professional ThinkorSwim indicators for the average Joe
Re: Fun with ThinkScript
April 20, 2015 03:28PM
specular level, base to the whathlist!
this my script
input BaseRange = .03;
input BarsCount = 4;
def Diff = 0.05;
def HighDay = high(period = "DAY"winking smiley[0];
def LowDay = low(period = "DAY"winking smiley[0];
def hh = highest(high,BarsCount);
def ll = lowest(low,BarsCount);
def HiPrevDay = high(period = "DAY"winking smiley[1];
def LowPrevDay = Low(period = "DAY"winking smiley[1];
def bBreakoutHi = if close>=HiPrevDay then 1 else 0;
def bBreakoutLow = if close<= LowPrevDay then 2 else 0;
plot c = if (hh-ll <=baseRange and bBreakoutHi and (HighDay - close <= Diff)) then 1 else if (hh-ll <=baseRange and bBreakoutLow and (close - LowDay <= Diff)) then 2 else 100;
AssignBackgroundColor (if (c == 1) then Color.daRK_GREEN else if (c == 2) then Color.LIGHT_RED else Color.black);


but i want baseRange on the specular level, I can not add image! But Thank you Robert! My english not good!



Edited 1 time(s). Last edit at 04/20/2015 03:42PM by vadim.
Re: Fun with ThinkScript
April 21, 2015 10:49PM
Is it possible to compare the move a stock has 2 weeks prior to its earnings to the same quarters earnings for the prior 5 years to see if there is a repeating pattern? I do this visually by scrolling charts back 5 years and looking for patterns around its earning events. Needless to say this is very time consuming! It sure would be nice to have a scan that could do this for me. Any thoughts would be much appreciated.

Thanks!
Re: Fun with ThinkScript
April 22, 2015 03:38AM
Quote
jburrowsiv
Is it possible to compare the move a stock has 2 weeks prior to its earnings to the same quarters earnings for the prior 5 years to see if there is a repeating pattern? I do this visually by scrolling charts back 5 years and looking for patterns around its earning events. Needless to say this is very time consuming! It sure would be nice to have a scan that could do this for me. Any thoughts would be much appreciated.

Take a look at this script. It will not automate anything for you, but it will highlight the dates before / after earnings so that it makes it easier to visually scan the daily charts for movement.

If you are handy with excel's visual basic scripting, you might take a look behind the scenes of this spreadsheet for ideas for your own research.

Alternatively, ResearchTrade (the hosts of this forum) provides a service where they do the earnings research for you.

- robert


Professional ThinkorSwim indicators for the average Joe
Needing help with Divergence Study for ThinkorSwim
April 23, 2015 01:06AM
Below divided by asterisks are two studies. I believe both work off of MACD and they show divergence. I like the way the 1st one picks up divergence earlier than the 2nd study. But I like that the 2nd study plots change of momentum. Can someone help me Meld the two together and do away with the arrows the 2nd study plots while preserving the 2nd studies plotting of momentum change?

I figure this would be a very useful study to others out there and so I'd like to share it. For me, it helps confirm my assumptions of trend change.

#Dirvergence 1
#
#

input VLB = 21;
input over_bought = 80;
input over_sold = 20;
input KPeriod = 10;
input DPeriod = 10;
input priceH = high;
input priceL = low;
input priceC = close;
input slowing_period = 3;
input smoothingType = {default SMA, EMA};

def lowest_k = Lowest(priceL, KPeriod);
def c1 = priceC - lowest_k;
def c2 = Highest(priceH, KPeriod) - lowest_k;
def FastK = if c2 != 0 then c1 / c2 * 100 else 0;

def FullK;
def FullD;

switch (smoothingType) {
case SMA:
FullK = Average(FastK, slowing_period);
FullD = Average(FullK, DPeriod);
case EMA:
FullK = ExpAverage(FastK, slowing_period);
FullD = ExpAverage(FullK, DPeriod);
}

def OverBought = over_bought;
def OverSold = over_sold;

def vmacBI = ((((FullK[1] < FullK[2]) * (FullK[1] < FullK)) * (FullK[1] > Lowest(FullK, VLcool smiley)) * (low[1] < Lowest(low, VLcool smiley[2]));

def vmacSS = ((((FullK[1] > FullK[2]) * (FullK[1] > FullK)) * (FullK[1] < Highest(FullK, VLcool smiley)) * (high[1] > Highest(high, VLcool smiley[2]));

def vmachBI = ((((FullK[1] < FullK[2]) * (FullK[1] < FullK)) * (FullK[1] < Lowest(FullK, VLcool smiley[2])) * (low[1] > Lowest(low, VLcool smiley[2]));

def vmachSS = ((((FullK[1] > FullK[2]) * (FullK[1] > FullK)) * (FullK[1] > Highest(FullK, VLcool smiley[2])) * (high[1] < Highest(high, VLcool smiley[2]));


plot DiBI = vmacBI[-1];
plot DiSS = vmacSS[-1];

plot DihiBI = vmachBI[-1];
plot DihiSS = vmachSS[-1];

DiBI.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
DiSS.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
DihiBI.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
DihiSS.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
DiBI.SetLineWeight(5);
DiSS.SetLineWeight(5);
DihiBI.SetLineWeight(5);
DihiSS.SetLineWeight(5);

DiBI.SetDefaultColor(GetColor(5));
DiSS.SetDefaultColor(GetColor(5));
DihiBI.SetDefaultColor(GetColor(6));
DihiSS.SetDefaultColor(GetColor(6));

**************************************************** Divergence 2 ******************************************

input VFL = 24;
input VSL = 52;

def VLB = VFL + VSL;

def vh34 = Highest(MACDHistogram(VFL, VSL), VLcool smiley;
def vl34 = Lowest(MACDHistogram(VFL, VSL), VLcool smiley;


input ChartBubblesON = NO;
input LinesON = Yes;

rec top;
rec bot;

top = if
MACDHistogram(VFL, VSL) == vh34
then high else top[1];
bot = if
MACDHistogram(VFL, VSL) == vl34
then low else bot[1];


plot topline = if !LinesON then Double.NaN
else top;
topline.SetLineWeight(1);
topline.AssignValueColor(if ((top < low)) then Color.DOWNTICK else Color.YELLOW);
topline.SetPaintingStrategy(PaintingStrategy.POINTS);

plot bottomline = if !LinesON then Double.NaN
else bot;
bottomline.SetLineWeight(1);
bottomline.AssignValueColor(if ((high < bot)) then Color.UPTICK else Color.YELLOW);
bottomline.SetPaintingStrategy(PaintingStrategy.DASHES);
# _____________________________________________________________
# Thinkscript is the property of ThinkorSwim and TDAmeritrade
# Sections of this script may have been copied or modified from
# one or more Thinkscript studies in part or in their entirety.
# _____________________________________________________________


#
# thinkorswim, inc. (c) 2008
#

input VLBP = 21;
input over_bought = 80;
input over_sold = 20;
input KPeriod = 8;
input DPeriod = 3;
input priceH = high;
input priceL = low;
input priceC = close;
input slowing_period = 3;
input smoothingType = {default SMA, EMA};

def lowest_k = Lowest(priceL, KPeriod);
def c1 = priceC - lowest_k;
def c2 = Highest(priceH, KPeriod) - lowest_k;
def FastK = if c2 != 0 then c1 / c2 * 100 else 0;

def FullK;
def FullD;

switch (smoothingType) {
case SMA:
FullK = Average(FastK, slowing_period);
FullD = Average(FullK, DPeriod);
case EMA:
FullK = ExpAverage(FastK, slowing_period);
FullD = ExpAverage(FullK, DPeriod);
}

def OverBought = over_bought;
def OverSold = over_sold;

def vmacBI = ((((FullK[1] < FullK[2]) * (FullK[1] < FullK)) * (FullK[1] > Lowest(FullK, VLBP))) * (low[1] < Lowest(low, VLBP)[2])) * (((high < bot)) + ((top < low)));

def vmacSS = ((((FullK[1] > FullK[2]) * (FullK[1] > FullK)) * (FullK[1] < Highest(FullK, VLBP))) * (high[1] > Highest(high, VLBP)[2])) * (((high < bot)) + ((top < low)));

def vmachBI = ((((FullK[1] < FullK[2]) * (FullK[1] < FullK)) * (FullK[1] < Lowest(FullK, VLBP)[2])) * (low[1] > Lowest(low, VLBP)[2])) * (((high < bot)) + ((top < low)));

def vmachSS = ((((FullK[1] > FullK[2]) * (FullK[1] > FullK)) * (FullK[1] > Highest(FullK, VLBP)[2])) * (high[1] < Highest(high, VLBP)[2])) * (((high < bot)) + ((top < low)));


plot DiBI = vmacBI;
plot DiSS = vmacSS;

plot DihiBI = vmachBI;
plot DihiSS = vmachSS;

DiBI.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
DiSS.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
DihiBI.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
DihiSS.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
DiBI.SetLineWeight(2);
DiSS.SetLineWeight(2);
DihiBI.SetLineWeight(2);
DihiSS.SetLineWeight(2);

DiBI.SetDefaultColor(GetColor(5));
DiSS.SetDefaultColor(GetColor(5));
DihiBI.SetDefaultColor(GetColor(6));
DihiSS.SetDefaultColor(GetColor(6));

######################################

input vlen = 9;
def vlb2 = vlen - 1;

def RSvmacBI = ((reference RSI(vlen) > Lowest(reference RSI(vlen), vlb2)[1]) * (low < Lowest(low, vlb2)[1])) ;

def RSvmacSS = ((reference RSI(vlen) < Highest(reference RSI(vlen), vlb2)[1]) * (high > Highest(high, vlb2)[1])) ;


plot RSDataBI = (RSvmacBI * ((high < bot) + (top < low)));
plot RSDataSS = (RSvmacSS * ((high < bot) + (top < low)));


RSDataBI.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
RSDataSS.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);

RSDataBI.SetLineWeight(5);
RSDataSS.SetLineWeight(5);

RSDataSS.AssignValueColor(Color.MAGENTA);
RSDataBI.AssignValueColor(Color.BLUE);

---------------------------------------------------------------------------------------------------------------------
Any help would be appreciated.
Re: Needing help with Divergence Study for ThinkorSwim
April 23, 2015 06:54AM
Quote
danyzuko
Can someone help me Meld the two together and do away with the arrows the 2nd study plots while preserving the 2nd studies plotting of momentum change?

If all you are wanting to do is remove the arrows from the second script, then there is no need to combine or modify the scripts in any way. All you have to do is disable the arrow plots you don't want to see from within the script settings panel.





- robert


Professional ThinkorSwim indicators for the average Joe
Re: Needing help with Divergence Study for ThinkorSwim
April 23, 2015 03:42PM
I am quite proud of this script because it required some very creative thinking to figure out and there is nothing else like it.

If you are conducting earnings research and want an easy to understand, big-picture view of how a particular stock has moved around earnings release dates in the past, then this tool should help.

This script will lookup the earnings release dates for the past five years then plot the price movement around each of those dates. Earnings release dates are arranged with each quarter in a different column. The most recent year is presented in the top row with previous years below. The plotted prices start 20 days before earnings release date and extend 30 days beyond.

When the ticker symbol is changed, each grid is automatically plotted and aligned for easy review.

[click for full-size image.]


More info and pre-configured chart grid .

- robert


Professional ThinkorSwim indicators for the average Joe



Edited 1 time(s). Last edit at 05/10/2015 05:08PM by robert.
Re: Needing help with Divergence Study for ThinkorSwim
April 23, 2015 07:46PM
Very interesting!! Will have to give this some strong consideration.

Perhaps your research on this may lend some light on an idea that I have been kicking around. I was wondering if there is any correlation of same trading days of the year with any stocks. Essentially, if a stock closed higher or lower the day after today in say the past ten years. So I would check the "n" th trading day of the year for each of the past five - ten years and see if they all behaved the same. I got stuck in the fact that TOS will only look back so many days so maybe 5 years would work.

Just another concept from someone with a little time to waste.

Keep em comming
Re: Needing help with Divergence Study for ThinkorSwim
April 24, 2015 06:35AM
Quote

I'm trying to gather information about past earnings and as is, I have to mouse over each 'lightbulb/exclamation point' representing past earnings to get the dates of the earnings. What I'm trying to get is the actual date the earnings occurred in the past without having to mouse over. I'd like to have each earnings date (just the date) displayed on the chart in bubbles. Is that possible?



declare hide_on_intraday;
def year = getyear() - 2000;
AddChartBubble(HasEarnings(), low, "20" + year + "/" + GetMonth() + "/" + GetDayOfMonth(GetYYYYMMDD()), Color.WHITE, 0);

- robert


Professional ThinkorSwim indicators for the average Joe
Re: Needing help with Divergence Study for ThinkorSwim
April 24, 2015 09:13AM
Robert this is some excellent work! It would be nice to start with the view you have published then once you find a qtr that looks interesting be able to switch to a detailed view for a specific Qtr that would allow viewing the 4 years of the same Qtr side by side with indicators. I am a Gary Williams student and use StochRSI, MACD and DI. I want to see how the indicators were setup so that I know what to expect for an EP. Thanks!!
Sorry, only registered users may post in this forum.

Click here to login