- Platform
-
- Thinkorswim
This is a companion indicator to Follow Line indicator converted by @bigboss and enhanced by @NPTechs here: https://b4indicators.com/threads/follow-line-indicator.143/
It is a lower indicator where it shows the long/short entries and opportunities to add/reduce (label text of
It is a lower indicator where it shows the long/short entries and opportunities to add/reduce (label text of
Red
is short for reduce) your position.
Code:
# Angle Attack / Follow Line for b4indicators.com
# Free for use. Header credits must be included when any form of the code included in this package is used.
# v1.0 - barbaros - converted for b4indicators.com
declare lower;
input BBperiod = 21;
input BBdeviations = 1.00;
input UseATRfilter = yes;
input ATRperiod = 5;
def BBUpper = SimpleMovingAvg(close, BBperiod) + stdev(close, BBperiod) * BBdeviations;
def BBLower = SimpleMovingAvg(close, BBperiod) - stdev(close, BBperiod) * BBdeviations;
def BBSignal = if close > BBUpper then 1 else if close < BBLower then -1 else 0;
def Range = ATR(ATRperiod);
def TrendLine = if BarNumber() == 1 then close
else if BBSignal == 1 and UseATRfilter then
if low - Range < TrendLine[1] then TrendLine[1]
else low - Range
else if BBSignal == -1 and UseATRfilter then
if high + Range > TrendLine[1] then TrendLine[1]
else high + Range
else if BBSignal == 0 and UseATRfilter then
TrendLine[1]
else if BBSignal == 1 and !UseATRfilter then
if low < TrendLine[1] then TrendLine[1]
else low
else if BBSignal == -1 and !UseATRfilter then
if high > TrendLine[1] then TrendLine[1]
else high
else if BBSignal == 0 and !UseATRfilter then
TrendLine[1]
else TrendLine[1];
def iTrend = if BarNumber() == 1 then 0
else if TrendLine > TrendLine[1] then 1
else if TrendLine < TrendLine[1] then -1
else iTrend[1];
### ANGLE FL
input i_lookback = 8;
input i_atrPeriod = 10;
def _angle_fl = (180 / 3.14159265359) * ATan((TrendLine - Trendline[i_lookback]) / ATR(i_atrPeriod));
### Buy/Sell
input Max_level_1 = 40;
input Max_level_2 = 65;
input Min_level_1 = -40;
input Min_level_2 = -65;
def buy_0 = iTrend[1] < 0 and iTrend > 0;
def sell_0 = iTrend[1] > 0 and iTrend < 0;
def add_buy_1 = _angle_fl [2] > 0 and _angle_fl [1] == 0 and _angle_fl == 0 and iTrend > 0;
def add_sell_1 = _angle_fl [2] < 0 and _angle_fl [1] == 0 and _angle_fl == 0 and iTrend < 0;
def add_buy_2 = _angle_fl [5] > 0 and _angle_fl [4] == 0 and _angle_fl[3] == 0 and _angle_fl[2] == 0 and _angle_fl[1] == 0 and _angle_fl == 0 and iTrend > 0;
def add_sell_2 = _angle_fl [5] < 0 and _angle_fl [4] == 0 and _angle_fl[3] == 0 and _angle_fl[2] == 0 and _angle_fl[1] == 0 and _angle_fl == 0 and iTrend < 0;
def add_buy_3 = _angle_fl [8] > 0 and _angle_fl [7] == 0 and _angle_fl[6] == 0 and _angle_fl[5] == 0 and _angle_fl[4] == 0 and _angle_fl[3] == 0 and _angle_fl[2] == 0 and _angle_fl[1] == 0 and _angle_fl == 0 and iTrend > 0;
def add_sell_3 = _angle_fl [8] < 0 and _angle_fl [7] == 0 and _angle_fl[6] == 0 and _angle_fl[5] == 0 and _angle_fl[4] == 0 and _angle_fl[3] == 0 and _angle_fl[2] == 0 and _angle_fl[1] == 0 and _angle_fl == 0 and iTrend < 0;
def redu_buy_1 = _angle_fl [1] < Max_level_1 and _angle_fl > Max_level_1;
def redu_buy_2 = _angle_fl [1] < Max_level_2 and _angle_fl > Max_level_2;
def redu_buy_3 = _angle_fl [2] < Max_level_2 and _angle_fl [1] > Max_level_2 and _angle_fl > Max_level_2;
def redu_buy_4 = _angle_fl [3] < Max_level_2 and _angle_fl [2] > Max_level_2 and _angle_fl [1] > Max_level_2 and _angle_fl > Max_level_2;
def redu_buy_5 = _angle_fl [4] < Max_level_2 and _angle_fl [3] > Max_level_2 and _angle_fl [2] > Max_level_2 and _angle_fl [1] > Max_level_2 and _angle_fl > Max_level_2;
def redu_sell_1 = _angle_fl [1] > Min_level_1 and _angle_fl < Min_level_1;
def redu_sell_2 = _angle_fl [1] > Min_level_2 and _angle_fl < Min_level_2;
def redu_sell_3 = _angle_fl [2] > Min_level_2 and _angle_fl [1] < Min_level_2 and _angle_fl < Min_level_2;
def redu_sell_4 = _angle_fl [3] > Min_level_2 and _angle_fl [2] < Min_level_2 and _angle_fl [1] < Min_level_2 and _angle_fl < Min_level_2;
def redu_sell_5 = _angle_fl [4] > Min_level_2 and _angle_fl [3] < Min_level_2 and _angle_fl [2] < Min_level_2 and _angle_fl [1] < Min_level_2 and _angle_fl < Min_level_2;
plot AngleLine = _angle_fl;
AngleLine.AssignValueColor(if iTrend > 0 then Color.GREEN else Color.RED);
AddCloud(0, if _angle_fl > 0 then AngleLine else Double.NaN, Color.GREEN, Color.GREEN);
AddCloud(0, if _angle_fl < 0 then AngleLine else Double.NaN, Color.RED, Color.RED);
plot H1 = Max_level_1;
plot H2 = Max_level_2;
plot L1 = Min_level_1;
plot L2 = Min_level_2;
AddChartBubble(buy_0, 0, "Buy", Color.GREEN, no);
AddChartBubble(add_buy_1, 0, "Add", Color.GREEN, no);
AddChartBubble(redu_buy_1 or redu_buy_2 or redu_buy_3, _angle_fl, "Red", Color.YELLOW, no);
AddChartBubble(sell_0, 0, "Sell", Color.RED, yes);
AddChartBubble(add_sell_1, 0, "Add", Color.RED, yes);
AddChartBubble(redu_sell_1 or redu_sell_2 or redu_sell_3, _angle_fl, "Red", Color.RED, yes);