Average True Range (ATR) Breakouts Indicator for ThinkorSwim

BenTen

Administrative
Staff member
Staff
VIP
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));
 
Last edited:

J007RMC

Well-known member
2019 Donor
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:

mosdef213

New member
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

Top