Average True Range (ATR) Breakouts Indicator for ThinkorSwim

BenTen

Administrative
Staff member
Staff
VIP
Lifetime
There was not much information written about this indicator. Take it as is.

6IUxLTA.png


thinkScript Code

Code:
# ATR Breakouts
# Assembled by BenTen at useThinkScript.com
# Converted from https://www.tradingview.com/script/RqEk3iZu/

def long_entry = (expAverage(close, 50)) + (2 * atr(20));
def short_entry = (expAverage(close, 50)) - (2 * atr(20));

def short_stop_loss = (expAverage(close, 50)) + (atr(20));
def long_stop_loss = (expAverage(close, 50)) - (atr(20));

plot b_entry = long_entry;
plot s_entry = short_entry;
plot s_stop = short_stop_loss;
plot l_stop = long_stop_loss;

b_entry.SetDefaultColor(GetColor(6));
s_entry.SetDefaultColor(GetColor(5));
s_stop.SetDefaultColor(GetColor(1));
l_stop.SetDefaultColor(GetColor(0));
 

Attachments

  • 6IUxLTA.png
    6IUxLTA.png
    138.6 KB · Views: 173
Last edited:

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

Average True Range Breakout
https://tos.mx/pmrY0uz
Ruby:
#+-------------------------------------------------------------+
# |Example: ATR Breakout                                       |
# |Rleased to the public.... verifyed  12/19/2020              |
# |robert payne                                                |
# |funwiththinkscript.com                                      |
# |I added credit to the coder___12/19/2020                    |
# +------------------------------------------------------------+
#



# white - entry point
# green - first profit target to scale out
# yellow - opening range
# orange - ATR breakout confirmation level 
 
 
#  ------------------------------------
# for extended hours 
#script OpenRange { 
#   input ORtime = 5 ;
#    def FirstBar = secondsfromtime(0930) >= 0 and secondsfromtime(0930) < 60; 
#    def RangeTime = SecondsFromTime(0930) >= 0 and SecondsFromTime(0930) < 60 * ORtime; 
#    def Rhigh = if FirstBar then high else if RangeTime and high > Rhigh[1] then high else Rhigh[1]; 
#    def Rlow = if FirstBar then low else if RangeTime and low < Rlow[1] then low else Rlow[1]; 
#    plot h = if RangeTime or secondstilltime(0930) > 0 then Double.NaN else Rhigh; 
#    plot l = if RangeTime or secondstilltime(0930) > 0then Double.NaN else Rlow; }
#  ------------------------------------
 
# -------------------------------------
# marketForecast hours
script OpenRange {
    input ORtime = 5;
    def FirstBar = GetDay() != GetDay()[1];
    def RangeTime = SecondsFromTime(0930) >= 0 and SecondsFromTime(0930) < 60 * ORtime;
    def Rhigh = if FirstBar then high else if RangeTime and high > Rhigh[1] then high else Rhigh[1];
    def Rlow = if FirstBar then low else if RangeTime and low < Rlow[1] then low else Rlow[1];
    plot h = if RangeTime then Double.NaN else Rhigh;
    plot l = if RangeTime then Double.NaN else Rlow;
 }
 
# ------------------------------------
 
def first30 = SecondsFromTime(0930) >= 0 and SecondsTillTime(1000) >= 0;
def today = GetLastDay() == GetDay();
def ATR = Average(TrueRange(high,  close,  low),  10);
plot yHigh = if !today then Double.NaN else high(period = "day" )[1];
yHigh.SetDefaultColor(Color.CYAN);
plot yLow = if !today then Double.NaN else low(period = "day" )[1];
yLow.SetDefaultColor(Color.PINK);
plot h5 = if !today then Double.NaN else if !first30 then Double.NaN else OpenRange(5).h;
h5.SetDefaultColor(Color.YELLOW);
plot l5 = if !today then Double.NaN else if !first30 then Double.NaN else OpenRange(5).l;
l5.SetDefaultColor(Color.YELLOW);
plot h30 = if !today then Double.NaN else OpenRange(30).h;
h30.SetDefaultColor(Color.YELLOW);
plot l30 = if !today then Double.NaN else OpenRange(30).l;
l30.SetDefaultColor(Color.YELLOW);
def lowConf = if first30 then Min(yLow, l5) - ATR else Min(yLow, l30) - ATR;
def highConf = if first30 then Max(yHigh, h5) + ATR else Max(yHigh, h30) + ATR;
plot lc1 = if first30 then lowConf else Double.NaN;
lc1.SetDefaultColor(Color.ORANGE);
plot lc2 = if !first30 then lowConf else Double.NaN;
lc2.SetDefaultColor(Color.ORANGE);
plot hc1 = if first30 then highConf else Double.NaN;
hc1.SetDefaultColor(Color.ORANGE);
plot hc2 = if !first30 then highConf else Double.NaN;
hc2.SetDefaultColor(Color.ORANGE);
def decisionL = if close > lowConf then Double.NaN else if close crosses below lowConf then low else decisionL[1];
def decisionH = if close < highConf then Double.NaN else if close crosses above highConf then high else decisionH[1];
plot dL = if !today then Double.NaN else decisionL;
dL.SetDefaultColor(Color.WHITE);
plot dH = if !today then Double.NaN else decisionH;
dH.SetDefaultColor(Color.WHITE);
def TL = CompoundValue(1, if IsNaN(dL) then Double.NaN else if !IsNaN(TL[1]) then TL[1] else if close crosses below dL then dL - 2 * ATR else Double.NaN, Double.NaN);
def SL = CompoundValue(1, if IsNaN(dL) then Double.NaN else if !IsNaN(SL[1]) then SL[1] else if close crosses below dL then dL + 2 * ATR else Double.NaN, Double.NaN);
plot Target1Low = if !today then Double.NaN else TL;
Target1Low.SetDefaultColor(Color.GREEN);
Target1Low.SetStyle(Curve.SHORT_DASH);
plot Stop1Low = if !today then Double.NaN else SL;
Stop1Low.SetDefaultColor(Color.RED);
Stop1Low.SetLineWeight(2);
AddChartBubble(IsNaN(TL[1]) and !IsNaN(TL), TL, "Target 1\n" + Round(TL, 2), Color.GREEN, no);
AddChartBubble(IsNaN(SL[1]) and !IsNaN(SL), SL, "Stop\n" + Round(SL, 2), Color.RED);

def alertup = close[1] crosses above hc1 or close[1] crosses above hc2;
def alertdn = close[1] crosses below lc1 or close[1] crosses below lc2;
alert(alertup, getsymbol() + " UP", alert.bar, sound.bell);
alert(alertdn, getsymbol() + " DOWN", alert.bar, sound.bell);
 
Last edited by a moderator:
I'm hoping someone can help me with a script to color any candles blue if they exceed 30% of ATR. Thanks in advance.
 

Similar threads

Not the exact question you're looking for?

Start a new thread and receive assistance from our community.

87k+ Posts
467 Online
Create Post

Similar threads

Similar threads

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.
Back
Top