NYSE Tick & Breadth: Thinkorswim Chart Setup
Trading with the market internals such as the NYSE tick and market breadth can lead to increased efficiency in your entry’s and exits. While it is most commonly used for intraday trading, it is possible to trade larger timeframes. The NYSE tick is only available during regular trading hours of 9:30 AM EST – 4:00 PM EST as the data is derived from the New York Stock Exchange.
Here I have optimized the setup my NYSE tick chart for day trading the E-mini S&P Futures.
Instructions for Installing the Code:
To setup your chart per the video above, click on
Studies > Edit Studies > New Study (bottom left)
Delete ‘plot Data = Close;’ and paste the following code below.
Note: You can modify the parameters in the properties box
NYSE Tick Range Code
(Original code courtesy of thinkscripter, but it has since been modified)
Copy this tick range code into the new study box in Thinkorswim.

Breadth Box Code
Same as above, copy this code into a new study, save and activate.
def A = close(“$UVOL”);
def D = close (“$DVOL”);
def ADL = Round(A / D, 1);
def ADR = if A > D then Round(A / D, 1) else Round(-D / A, 1);
input mode = {default Ratio};
def modeSwitch = if mode == mode.Ratio then 1 else 0;
AddLabel(yes, Concat(
if modeSwitch then ADR else ADL, Concat(” “,
if modeSwitch then “:1″ else ” “)),
if modeSwitch then if ADR > ADR[1] then Color.GREEN else Color.RED else if ADL > ADL[1] then Color.GREEN else Color.RED);
plot null = Double.NaN;
Advance/Decline Box Code
def A = close(“$ADVN”);
def D = close (“$DECN”);
def ADL = Round(A / D);
def ADR = if A > D then Round(A – D) else Round (-D + A);
input mode = {default Ratio};
def modeSwitch = if mode == mode.Ratio then 1 else 0;
AddLabel(yes, Concat(
if modeSwitch then ADR else ADL, Concat(” “,
if modeSwitch then ” ” else ” “)),
if modeSwitch then if ADR > ADR[1] then Color.GREEN else Color.RED else if ADL > ADL[1] then Color.GREEN else Color.RED);
plot null = Double.NaN;
|
Like What You Read?
If so, please join over 5,000 people who receive exclusive weekly trading insights on how I trade for a living, and get a FREE COPY of my Trading Plan Guide! Just enter your name and email below:
|
|


April 12, 2011 






About Tim

Tim this is brilliant! Thanks very much, specially for the Breadth Box Code. I’ve seen it on your setup before, it’s great that you shared it
just came across your site. thanks. it’s great
Free advice that really works is rare. Thank-you for this insight. You clearly have some great ideas for making day trading a bit easier.
I’m really enjoying all the free info on your site, much appreciated.
I’m a struggling ES trader looking to get better. I’m using ToS and have implemented your tools on this page.
Thanks!
I have seen your webinar with IF this week, and I’m really amazed of your E-mini S%P trading system, its simplicity is a great catch; now I see your site and I’m astonished for all the free info you share,
Thanks!
Thanks Renato, happy to help and share my methods.
Hi Tim, is ToS Think or Swim a charting software service run by Ameritrade simular to Esignal Supercharts etc.?Ill get to your web site asap. Take care, eat well, sleep well, live well, and of course…..trade well.
Yes it is John. TDAmeritrade acquired Thinkorswim in June of 2011. Esignal and Tradestation offer very comparable platforms, I’ve just been with TOS for the past 6 years and thus built some platform loyalty.
Hello, I having trouble copying the code. The next message appear:
Invalid statement: AddChartLabel at 7:1
Hi Nato, I’m not too sure on that specific invalid statement, however if you shoot a note over to support@thinkorswim.com they should know how to fix it.
Yeah I am getting the same error, Nato did you get it figured out?
I think AddChartLabel has been replaced by addlabel, so the code should be:
def A = close(“$UVOL”);
def D = close (“$DVOL”);
def ADL = Round(A / D, 1);
def ADR = if A > D then Round(A / D, 1) else Round(-D / A, 1);
input mode = {default Ratio};
def modeSwitch = if mode == mode.Ratio then 1 else 0;
addlabel(yes, concat(
if modeSwitch then ADR else ADL, concat(” “,
if modeSwitch then “:1″ else ” “)),
if modeSwitch then if ADR > ADR[1] then color.green else color.red else if ADL > ADL[1] then color.green else color.red);
plot null = Double.NaN;
I am NOT positive this is doing the same thing as the original code, so use at your own risk, but as of 11/18/2012 this removes the error on the TOS platform.
I cannot get the Breadth Box code to work correctly in TOS. I am getting an error when I try to create the study.
Hi Winnbridge, have you tried the modified code in Prescott’s post just above? There have been a few thinkorswim updates since I first published the code. support@thinkorswim.com has always been super helpful as well.
I tried the modified code in Prescott’s post and still get an error from line 7 “addlabel” down through the end of the code.
I just recopied the code over from my thinkorswim study editor. It appears Prescott was correct, the AddChartLabel was replaced by AddLabel.
The script work. But they doesn’t refresh data. Any help please!
I’m talking with thinkorswim code support, it seems the new software updates are affecting the code. Try this excel spreadsheet in the meantime http://eminimind.com/wp-content/uploads/2012/12/Market-Internals-Excel.xlsx
Thank you!
Nick over at thinkorswim informed me that the last update caused an issue with the ‘AddLabel’ command. The latest update has since fixed the issue and the code above is working correctly on my system. You should be good to go!
Tim, I use Infinity as the broker and Sierra Charts for charting. I have looked for something like this on their system with no luck, any ideas about how to build the above in Sierra?
That I don’t Robert. Have you asked Jim or your individual broker at Infinity? I just Googled “Market Internals for Sierra Charts” and there were a couple of forum posts that might be helpful.
I was having the same problem with the “breath box” not working in TOS, but I got it to work. Here is the script again. Thanks so much for this Tim.
def A = close(“$UVOL”);
def D = close (“$DVOL”);
def ADL = Round(A / D, 1);
def ADR = if A > D then Round(A / D, 1) else Round(-D / A, 1);
input mode = {default Ratio};
def modeSwitch = if mode == mode.Ratio then 1 else 0;
AddLabel(yes, Concat(
if modeSwitch then ADR else ADL, Concat(” “,
if modeSwitch then ”:1 ” else ” “)),
if modeSwitch then if ADR > ADR[1] then Color.GREEN else Color.RED else if ADL > ADL[1] then Color.GREEN else Color.RED);
plot null = Double.NaN;
Sorry I should clarify how I made the change. At line 7, I deleted all info. from that line down, and then copied and pasted the code from the “ADVN/DECN that Tim has above.
Then all I added was :1
For some reason, even tho’ the codes are exactly the same from line 7 onward…the breath box code does not seem to want to compute in TOS, but A/D will. So now it should work.
I’m copying and pasting what Trader69 has above and its not working.
Hi Maurice, this is copied directly from my TOS Studies Editor…
def A = close(“$UVOL”);
def D = close (“$DVOL”);
def ADL = Round(A / D, 1);
def ADR = if A > D then Round(A / D, 1) else Round(-D / A, 1);
input mode = {default Ratio};
def modeSwitch = if mode == mode.Ratio then 1 else 0;
AddLabel(yes, Concat(
if modeSwitch then ADR else ADL, Concat(” “,
if modeSwitch then “:1″ else ” “)),
if modeSwitch then if ADR > ADR[1] then Color.GREEN else Color.RED else if ADL > ADL[1] then Color.GREEN else Color.RED);
plot null = Double.NaN;