My 6 indicators for TOS for every day [ThinkOrSwim]

ThinkOrSwim Rangers Europe
7 min readAug 27, 2020
My Indicators for ThinkOrSwim.

Hello, people. Newbie-traders often ask me: what TOS indicators should they set up right after installing TOS. This is why I’ve decided to collect everything in one single article and share it with you.

Before starting, I would like to note that indicators for the Thinkorswim terminal are distinguished by high accuracy and clarity due to the real flow of trading volumes with virtually no lag (you have Realtime quotes).

You can safely install and customize all the scripts presented by me below. The algorithm for working with them is quite simple, and besides, I have given a brief description and mechanism of use for each. I hope that my daily indicators will really become an effective tool for you for successful trading and analysis in TOS.

So, let’s start.

1. Indicator: Basic information on the stock 📈

This is what I install first. Very useful thing. It displays all the most necessary information on the stack in the upper left corner of the chart and highlights problem areas in color.

There are many modifications of this indicator on the Internet. But here I modified it for myself over the course of several years of trading, and I consider this edition the most convenient and visual for the initial analysis of a stock when it gets on your list.

Picture and the description of every parameter.

  • ATR(14) — how much the stock can move per day. Calculated on the average value of 14 days.
  • AvgVol — average trading volume for a stock over the past 65 days, calculated in thousands.
  • Vol — how many shares traded today.
  • ATRPlay — how much today the price has passed relatively from Low to High. It is calculated in dollars and% relative to the average. The screenshot shows that the average price moves $ 5.5, and today the action has already passed 5.53, the one after ATRPlay is 100%. Without unnecessary symbols to save space. According to my strategy, the potential is no longer there, which means that the share has to be taken in the opposite direction.
  • VolPlay — What is the volume as a percentage now, the trading volume is relative average. An important parameter for an intraday trader, it is considered as a percentage. 104% on the screen. This means that if you looked at the beginning of the day … This is clearly increased volume. If a stock trades 100% in the first hour, a large seller or buyer is guaranteed to sit there.
  • Gap — % of gap at the opening is purely informational. I do not analyze in any way, but in some strategies traders rely on it when making a decision.
  • ATR (5) — And the last parameter is the average price spread for the last 5 bars. If you place a stop, it cannot be less than this value in any way. Otherwise, you will simply be carried away by the noise of the market.

#Study:Info

#by tsrangers.com

input ATRLength = 14;

input ShowATR = {default “1”, “0”}; #Average True Range

input AvgVolume = {default “1”, “0”}; #Average volume for the last 14 days

input Volume_ = {default “1”, “0”}; #Volume for today

input ATRPlay = {default “1”, “0”}; #How many ATR’s stock moved today

input VolumePlay = {default “1”, “0”}; #How many of its average volumes stock traded for the last 65 days.

def _ATR_D = TrueRange(high(period = “DAY”), close(period = “DAY”), low(period = “DAY”));

def iATR_D = Round(Average(_ATR_D, ATRLength)[1], 2);

AddLabel (!ShowATR, “ATR(“+ATRLength+”) “ + iATR_D, Color.GRAY);

def iAvgVolume = Round(Average (volume(period = “DAY”)[1], 65) / 1000, 0);

AddLabel (!AvgVolume, “AvgVol “ + iAvgVolume + “k”, Color.GRAY);

def iVolume = Round(volume(period = “DAY”) / 1000, 0);

AddLabel (!Volume_, “Vol “ + iVolume + “k”, Color.LIGHT_GREEN);

def iATRPlay = Round((high(period = “DAY”) — low(period = “DAY”)) / iATR_D, 1);

AddLabel (!ATRPlay, “ATRPlay “ + iATRPlay + “(“ + Round(high(period = “DAY”) — low(period = “DAY”), 2) + “)”, Color.LIGHT_GREEN);

def iVolumePlay = Round(iVolume / iAvgVolume, 2);

AddLabel (!VolumePlay, “VolPlay “ + iVolumePlay, Color.LIGHT_GREEN);

def Gap = Round((Open(period = “DAY”)-Close(period = “DAY”)[1])/Close(period = “DAY”)[1]*100, 2);

AddLabel (Yes, “Gap “ + Gap+”%”, Color.LIGHT_GREEN);

def ATRcur = Round (Average(TrueRange(high, close, low)[1],5));

AddLabel (Yes, “ATR(5) “ + ATRcur, if(ATRcur<=0.20) then Color.GREEN else Color.Red);

2. Indicator: Basic support and resistance levels in TOS

A very simple yet useful indicator that draws the underlying High, Low and Close levels of the previous day. These levels are used in many simple trading strategies, which is why this thinkscript is so popular among traders. This script has a very important addition: it draws levels only on lower timeframes and hides them on higher ones to make it easier to read the chart.📈

#Study:Common Level
#by tsrangers.com

declare hide_on_daily;
declare once_per_bar;

input timeFrame = {default DAY, WEEK, MONTH};

plot high = If(GetAggregationPeriod() <= AggregationPeriod.FIFTEEN_MIN, high(period = timeFrame)[1], Double.NaN);
plot Low = If(GetAggregationPeriod() <= AggregationPeriod.FIFTEEN_MIN, low(period = timeFrame)[1], Double.NaN);
plot Close = If(GetAggregationPeriod() <= AggregationPeriod.FIFTEEN_MIN, close(period = timeFrame)[1], Double.NaN);

high.SetDefaultColor (Color.GREEN);
high.SetPaintingStrategy(PaintingStrategy.DASHES);
Low.SetDefaultColor(Color.RED);
Low.SetPaintingStrategy(PaintingStrategy.DASHES);

Close.SetDefaultColor (Color.GRAY);
Close.SetPaintingStrategy(PaintingStrategy.DASHES);

3. Indicator: Potential price movement by ATR in Thinkorswim

A year ago, a professional trader asked to make this indicator for his students. And after that, I recommend it to everyone who just installed TOS. The logic of this indicator for the TOS chart is as follows: it takes the average price movement potential (ATR) and draws two lines on the chart. How long the price can pass today from its extremums to the ATR and up to 4xATR. It is very clearly visible which goal to set in the trade and whether there is still a reserve of movement before deciding to enter the trade.

As in the previous case, for the convenience of reading the chart, it works only on lower time frames. You can easily change the 4xATP coefficient in the code.

#Possibility Move by ATR Ver.1.03
#by tsrangers.com

#Potential price movement by ATR

declare once_per_bar;
declare hide_on_daily;

input length = 14;
input ShowATR = No;

def ATR = Average(TrueRange(high(period = “DAY”), close(period = “DAY”), low(period = “DAY”)), length )[1];
AddLabel (ShowATR, “ATR(“+length+”) “ + Round(ATR,2), Color.GRAY);

def newDay = SecondsFromTime(0930)==0;

def DayHigh = if newDay then High else if High[1] > DayHigh[1] then High[1] else DayHigh[1];
def DayLow = if newDay then Low else if Low[1] < DayLow[1] then Low[1] else DayLow[1];

plot UpLevel = If(GetAggregationPeriod() <= AggregationPeriod.FIFTEEN_MIN, DayLow + ATR, Double.NaN);
plot DownLevel = If(GetAggregationPeriod() <= AggregationPeriod.FIFTEEN_MIN,DayHigh — ATR, Double.NaN);
UpLevel.SetDefaultColor (Color.GRAY);
UpLevel.SetPaintingStrategy(PaintingStrategy.LINE);
UpLevel.SetStyle(Curve.LONG_DASH);
DownLevel.SetDefaultColor(Color.GRAY);
DownLevel.SetPaintingStrategy(PaintingStrategy.LINE);
DownLevel.SetStyle(Curve.LONG_DASH);

plot UpLevel4 = If(GetAggregationPeriod() <= AggregationPeriod.FIFTEEN_MIN, (DayLow + (4*ATR)), Double.NaN);
plot DownLevel4 = If(GetAggregationPeriod() <= AggregationPeriod.FIFTEEN_MIN,(DayHigh — (4*ATR)), Double.NaN);
UpLevel4.SetDefaultColor (Color.blue);
UpLevel4.SetPaintingStrategy(PaintingStrategy.LINE);
UpLevel4.SetStyle(Curve.LONG_DASH);
DownLevel4.SetDefaultColor(Color.blue);
DownLevel4.SetPaintingStrategy(PaintingStrategy.LINE);
DownLevel4.SetStyle(Curve.LONG_DASH);

4. Колонка: Спред в TOS

And a couple more scripts for the watchlist column in Thinkorswim. The first script shows the current spread in stocks and highlights in red notes where the spread is more than 6 cents and the risks are very high.

Customize for yourself, and do not hesitate to remove the stock if the spread is very large for you.

#Colume:Spread
#by tsrangers.com

Def Spread1= (ASK-BID)*100;
AddLabel(yes, AsText(Spread1, “%1$.0f”));
AssignBackgroundColor (if (Spread1> 6) then Color.red else Color.black);

5. Change From Open

This is also a script for the Thinkorswim watchlist, showing the percentage of price change in the stack after it opened today. Green highlights growing stacks, red ones that need to be short. If you have a large list for today, it is very convenient to sort by this column in order to select the most you need.

#Colume:ChFO
#by tsrangers.com

plot Change = Round((close-open)/open*100,1);
AssignBackgroundColor(if(Change < 1 and Change > -1)then Color.BLACK else if(Change>0) then Color.DARK_GREEN else Color.DARK_RED);

6. VolumeInPlay column 🔥

And also the script for the watchlist column in Thinkorswim, shows as a percentage how much the stock traded today from its average daily volume. I have already written about this very important parameter for an intraday trader many times.

How do I analyze it? If now is just the beginning of the session, and the stock has already passed from 20% to 50%, it is highlighted in blue. In the off-season of reports, this already indicates an increased interest in it from the market. If it has already done more than 50%, it glows green on the watchlist, and this is an unambiguous trigger that you need to carefully look for entry points in it.

In the season of reports, these coefficients in the code should be corrected to higher ones. The code is not complicated, I think you can easily figure it out. Well, or tap on the contacts from the profile 👆 and I’ll help.

#Colume:VolumeInPlay
#by tsrangers.com

plot VolPlay = Round(Volume/Average(Volume, 65)[1],2);
AssignBackgroundColor(if(VolPlay < 0.2)then Color.BLACK else if(VolPlay > 0.2 and VolPlay<0.5 ) then Color.BLUE else Color.DARK_GREEN);

How to properly install scripts in Thinkorswim you can read in our article using the example of the indicator “Simple Moving Average”🔥

If this article was useful to you click Claps 👏

--

--

ThinkOrSwim Rangers Europe

💥ThinkOrSwim (TOS) real-time accounts register for Canada, Australia, Europe, Israel, and Africa traders. Real TOS for non-US traders 👉 https://bit.ly/42zeb36