Support & Resistance Channels for Thinkorswim


Well-known member


# filename: _Support_Resistance_Channels_
# source:
# created by tradescripter
# last update May 20, 2011

input length=10;

def o=open;
def c=close;
def h=high;
def l=low;

def hh=h>h[1];
def ll=l<l[1];

def ClsUp=c>o;
def ClsDwn=c<o;

def BarLngth=h-l;
def AvgBarLngth=average(BarLngth,20);
def Threshhold=AvgBarLngth+StDev(BarLngth,20);

def ClsHigher=c>c[1];
def ClsLower=c<c[1];

def HiestHi=highest(close[3],length);
def LwestLw=lowest(close[3],length);

rec LastHi=if HiestHi>HiestHi[1] then HiestHi[1] else LastHi[1];
rec LastLw=if LwestLw<LwestLw[1] then LwestLw[1] else LastLw[1];

def ClsOvrHi=close>HiestHi;
def ClsUndrLw=close<LwestLw;

def ClsUndrLastHi=close<LastHi;
def ClsOvrLastLw=close>LastLw;

def Hi1 = !ClsOvrHi[2] and ClsOvrHi[1] and ClsOvrHi and ClsHigher;
def Hi2 = BarLngth>Threshhold and ClsUp;

def Lw1 = !ClsUndrLw[2] and ClsUndrLw[1] and ClsUndrLw and ClsLower;
def Lw2 = BarLngth>Threshhold and ClsDwn;

def HiSig=Hi1 or Hi2;
def LwSig=Lw1 or Lw2;

def LwOvrSupport=l>LwestLw;
def HiUndrSupport=h<HiestHi;

plot PriceHigh = if HiSig then high else double.nan;

plot PriceLow = if LwSig then low else double.nan;

def BreaksSpprt=LwOvrSupport[3] and LwOvrSupport[2] and LwOvrSupport[1] and l<=LwestLw;
def BreaksRzist=HiUndrSupport[3] and HiUndrSupport[2] and HiUndrSupport[1] and h>HiestHi;

plot FirstSupportBreak=if BreaksSpprt then l else double.nan;

plot FirstResistanceBreak=if BreaksRzist then h else double.nan;

plot HighestHigh=HiestHi;
HighestHigh.SetDefaultColor (color.magenta); #(color.light_red);

plot LowestLow=LwestLw;
LowestLow.SetDefaultColor (color.yellow); #(color.light_green);

plot LastHigh=LastHi;

plot LastLow=LastLw;

plot LongStopLossHit=if !ClsUndrLastHi[1] and ClsUndrLastHi then l else double.nan;

plot ShortStopLossHit=if !ClsOvrLastLw[1] and ClsOvrLastLw then h else double.nan;;


Green arrows pointing down are price highs.
Red arrows pointing up are price lows

Price highs and lows are determined by a few different methods.
One method is to assume a price high or low if the length of the bar is greater than the average
bar length, plus one standard deviation. In other words, if there is an unusually big price
move on one bar, a price high or low is assumed.

A price high and a price low may not be a trend peak or bottom.

Many of the price high and low signals are one bar early. Take that into account.

As soon as you get an signal, you must decide whether it's trend peak/bottom or not

If you think it's not the end of a trend place an exit order to take profit just over the current high
or under the current low. If you don't get a fill almost immediately on the next bar, you must
adjust your exit to a smaller profit within seconds, or use a market order to take profit.

If the price high or low is a trend peak or bottom, the price probably won't go higher for a peak
or lower for the bottom. So you must decide on a strategy for taking profits.

Whether you take profit immediately on a signal, or wait for the next bar, either way you will loose out on some
profit. You must decide when it's better to take profit, at the signal, or just after the signal.

There is often a price high when the price first hits a prior high after being under the high
for a while. That potential price high is shown by a magenta arrow down over the high of the bar.

A potential price low, bouncing off support of a prior low, is a blue arrow.

Stop losses are shown by squares. The stop losses turn out to also be points of price highs
and lows. A long stop loss is show by a red square. The long stop loss is often a price low however.
You must use your discretion on how to trade it.

A price high signal, and a stop loss signal often occur on the same bar. That may be a double
confirmation that the price is at a high. You must use your discretion.

Prior highs and low are also shown. The prior highs and lows are the "Stepped" horizontal lines,
so you can keep track of recent prior highs and lows.

I have not back-tested this study. I have no idea if it is any good or not.

Good Luck and Good Trading :)

Join useThinkScript to post your question to a community of 21,000+ developers and traders.

Not the exact question you're looking for?

Start a new thread and receive assistance from our community.

87k+ Posts
386 Online
Create Post

The Market Trading Game Changer

Join 2,500+ subscribers inside the useThinkScript VIP Membership Club
  • Exclusive indicators
  • Proven strategies & setups
  • Private Discord community
  • ‘Buy The Dip’ signal alerts
  • Exclusive members-only content
  • Add-ons and resources
  • 1 full year of unlimited support

Frequently Asked Questions

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?
VIP members get exclusive access to these proven and tested premium indicators: Buy the Dip, Advanced Market Moves 2.0, Take Profit, and Volatility Trading Range. In addition, VIP members get access to over 50 VIP-only custom indicators, add-ons, and strategies, private VIP-only forums, private Discord channel to discuss trades and strategies in real-time, customer support, trade alerts, and much more. Learn all about VIP membership here.
How can I access the premium indicators?
To access the premium indicators, which are plug and play ready, sign up for VIP membership here.