Choppiness Index Indicator for ThinkorSwim

tomsk

Well-known member
VIP
For those interested, here is a Choppiness Indicator that Mobius posted several years ago. This would be helpful for those who'd like another measure of defining trend, chop, etc

Code:
``````# Choppiness Indicator
# Mobius
# V001.03.2012

#Hint: The Market is considered TRENDING when the index is below 38.2 \n The Market is considered CHOPPY when the index is above 61.8. \n A move above the 38.2 Level indicates a possible end to a trend and a move below 61.8 indicates a possible breakout from a period of consolidation.

declare lower;
input Length   = 14;
input Signal   =  3;
input Choppy   = 62;
input MidLine  = 50;
input Trending = 38;
input CIx = {default CIB, CIA};
def CIA = 100 * log( Sum( TrueRange(high, close, low), Length))
/ ( Highest(close[1], Length) - Lowest(close[1], Length))
/ log(Length);
def CIB = ((log(Sum(TrueRange(high, close, low), Length) /
(Highest(if high >= close[1] then high else
close[1], Length) -
Lowest( if low <= close[1] then low else close[1], Length)))
/ log(10)) / (log(Length)/log(10))) * 100;
plot CI = if CIx == CIx.CIB then CIB else CIA;
CI.SetDefaultColor( Color.White);
plot CIavg = average(CI, Signal);;
CIavg.setdefaultColor(Color.Green);
plot Chop = Choppy;
Chop.SetDefaultColor(Color.red);
plot Mid = MidLine;
Mid.SetDefaultColor(Color.gray);
plot Trend = Trending;
Trend.SetDefaultColor(Color.green);
AddLabel(yes, if CI > MidLine then "CHOPPY " else "TRENDING ", if CI < Trend then Color.Green else if CI > Trend and CI < MidLine then Color.Light_Green else if CI > MidLine and CI < Chop then Color.Yellow else Color.Red);
# END CODE #``````

Updated version from 2015

Code:
``````# Choppiness Index
# UpTheCreek
# 09.21.2015
# V 1.0

# Choppiness Index was developed by Australian commodity trader E.W. Dreiss
# and may be used to determine if the market is consolidating or trending.
# The Choppiness Index is a directionless indicator. Values above the upper
# guide (61.8) indicate that the market is moving sideways in a ranging or
# choppy manner. Values below the lower guide (38.2) indicate the market is
# trending.
#
# The CI measures the relationship between the Sum of daily trading ranges
# during a given period of time against the total range for that period.
# Low readings in the CI correspond closely with the end of strong impulsive
# movements either up OR down, while High readings occur after significant
# consolidations in the price. Extended periods of trendless price movement
# are reflected in extended periods of above-average readings of the CI.
#
# Bill Dreiss says "high CI readings can be used to indicate that a
# consolidation is about to end and a position should be entered or a
# breakout anticipated. Since the CI reading has nothing to do with market
# direction, it does NOT indicate in which direction to expect the breakout,
# but that the breakout will probably be followed by a significant move.)
# In this respect, the CI is similar in usage to Bollinger Band width (%B).
#
# Commodity Traders Consumer Report, July/August, 1992, Bill Dreiss “The
# Fractal Wave Algorithm, Charts And Systems”
#
# CI is similar to ADX where values below the 38.2 line coincides with ADX
# values above 20 which show a trending market. The author Driess preferred

declare lower;
input length = 14;
input UseLabels = yes;

def Hmax=highest(high, length);
def Lmin=lowest(low, length);

plot choppiness = 100* log(sum(truerange(high, close, low),length)/(Hmax-Lmin))/log(length);
choppiness.SetDefaultColor(Color.BLUE);
choppiness.SetLineWeight(1);

plot choppy=61.8;
choppy.SetDefaultColor(GetColor(2));
choppy.SetLineWeight(1);
choppy.SetStyle(Curve.POINTS);

plot trending=38.2;
trending.SetDefaultColor(GetColor(2));
trending.SetLineWeight(1);
trending.SetStyle(Curve.POINTS);

AddLabel(UseLabels && choppiness > choppy, "Consolidating, watch for break", Color.RED);
AddLabel(UseLabels && choppiness < trending, "Trending, watch for chop", Color.DARK_GREEN);

# End Study``````

BenTen

Staff member
Staff
VIP
Here's a simple indicator, it's not going to tell you if the market is going up or down, instead, it will tell you when the market is moving sideways. The indicator was made to solve my problem. I hate executing trades in choppy markets.

I think this indicator is going to be a great assistant when it comes to dealing with choppy markets. It could potentially save your account.

Usage:

Sideways indicator comes in the form of an oscillator. By combining the range between DI+ and DI- lines from the DMI indicator.

When two lines are close to each other it means we have a sideways market. I would avoid trading when this happens. Also, the indicator will highlight the candles when it's experiencing choppiness.

Code:
``````# Sideways Indicator
# Original Code developed by WalkingBallista
# Concept and Idea by BenTen at useThinkScript.com
# Identify choppy market. Can also be used to find consolidation/breakout patterns.

declare lower;
input length = 14;
input averageType = AverageType.WILDERS;
input price = close;

def hiDiff = high - high[1];
def loDiff = low[1] - low;

def plusDM = if hiDiff > loDiff and hiDiff > 0 then hiDiff else 0;
def minusDM =  if loDiff > hiDiff and loDiff > 0 then loDiff else 0;

def ATR = MovingAverage(averageType, TrueRange(high, close, low), length);
def "DI+" = 100 * MovingAverage(averageType, plusDM, length) / ATR;
def "DI-" = 100 * MovingAverage(averageType, minusDM, length) / ATR;

plot range = AbsValue(AbsValue("DI+")-AbsValue("DI-"));

# Define Consolidation Range
# Change the number 5 to 10 if you want more sideways filter
AssignPriceColor(if range < 5 then Color.Yellow else Color.Current);``````

Last edited:

horserider

Well-known member
VIP
Easily done with different indicators. Here is an RSI based one. Sometimes works , sometimes does not.

Billions

Active member
2019 Donor
VIP
@BenTen Does this work on mobile?

BenTen

Staff member
Staff
VIP
@Billions The lower study should. It will not paint your candles on mobile though.

Billions

Active member
2019 Donor
VIP
Great Script @BenTen Thanks Working Great!

gjervis

New member
2019 Donor
This is lovely, fantastic indicator.

Vision

Member
2019 Donor
When two lines are close to each other it means we have a sideways market.

What am I missing? There's only one line in your posted chart and on mine.

BenTen

Staff member
Staff
VIP
@Vision

Sideways indicator comes in the form of an oscillator. I use the same method that was mentioned in this post. By combining the range between DI+ and DI- lines from the DMI indicator.

2019 Donor
Thanks again.

Billions

Active member
2019 Donor
VIP
@BenTen Hi is there anyways to get this to work on mobile and change the candles color?

BenTen

Staff member
Staff
VIP
@Billions The lower study is compatible with the mobile app but not the candle colors.

n7ekg

New member
Is there any way for the indicator to draw a box around the range of the candles, as shown on the first images posted? Thanks!

Alex

Active member
VIP
I am looking for the best indicator to avoid getting chopped in a trade. Any suggestions are much appreciated!

soary

Member
@mc01439 None of them come up on TOS it has error message saying ref appears to be broken.

mc01439

Well-known member
2019 Donor
VIP
@mc01439 None of them come up on TOS it has error message saying ref appears to be broken.

@soary - Loaded all three and all worked as designed.

Vincenzo

New member
Hello!

I am looking to create a study to search for specific stocks. the study I am wanting to create would
1. find stocks where the price action for the last 48 five minute candles has been sideways
2. toward the end of market day volume increases
3. last 2 five minute candles are higher than average buying volume.
is there anyway to do this or something already built?

thank you for the help

dannoh99

New member
VIP
Can anyone help me find a way to turn this indicator to a scan?

Join 2,500+ subscribers inside the useThinkScript VIP Membership Club
• Exclusive indicators
• Proven strategies & setups
• Private Discord community
• Exclusive members-only content
• 1 full year of unlimited support

What is useThinkScript?

useThinkScript is the #1 community of stock market investors using indicators and other tools to power their trading strategies. Traders of all skill levels use our forums to learn about scripting and indicators, help each other, and discover new ways to gain an edge in the markets.

How do I get started?

We get it. Our forum can be intimidating, if not overwhelming. With thousands of topics, tens of thousands of posts, our community has created an incredibly deep knowledge base for stock traders. No one can ever exhaust every resource provided on our site.

If you are new, or just looking for guidance, here are some helpful links to get you started.

What are the benefits of VIP Membership?