input trailType = {default modified, unmodified};
input ATRPeriod = 28;
input ATRFactor = 5;
input firstTrade = {default long, short};
input averageType = AverageType.WILDERS;
input fib1Level = 61.8;
input fib2Level = 78.6;
input fib3Level = 88.6;
Assert(ATRFactor > 0, "'atr factor' must be positive: " + ATRFactor);
def trail = ATRTrailingStop(trailType, ATRPeriod, ATRFactor, firstTrade, averageType);
def stateLong = low > trail[1];
def stateShort = high < trail[1];
def BuySignal = Crosses(stateLong, 0, CrossingDirection.ABOVE);
def SellSignal = Crosses(stateShort, 0, CrossingDirection.ABOVE);
def ex = if BuySignal then high else if SellSignal then low else if stateLong then Max(ex[1], high) else if stateShort then Min(ex[1], low) else ex[1];
def TrailingStop = trail;
def Extremum = ex;
def f1 = ex + (trail - ex) * fib1Level / 100;
def f2 = ex + (trail - ex) * fib2Level / 100;
def f3 = ex + (trail - ex) * fib3Level / 100;
def l100 = trail + 0;
def Fib1 = f1;
def Fib2 = f2; def Fib3 = f3;
##edited by Playstation 31.05.2020##
##Criteria of price between f1 & f2 zones and swingarm trend is bullish##
##Criteria of price between f1 & f2 zones and swingarm trend is bearish##
plot data = if (close is greater than f2 and close is less than f1) and f1 > f2 then 2 else if (close is less than f2 and close is greater than f1) and f1 < f2 then 1 else 0;
AssignBackgroundColor(if data == 2 then Color.PINK else if data==1 then Color.BLUE else Color.GRAY);