Declare Lower;
Input APC =0;
input Arrows = 0;
input Dotsize = 2;
Def EM8 = ExpAverage(Close,8);
Def EM21 = ExpAverage(Close,21);
Def EM34 = ExpAverage(Close,34);
Def EM55 = ExpAverage(Close,55);
Def EM89 = ExpAverage(Close,89);
Def Cu1 = EM8 >= Max(EM21,Max(EM34,Max(EM55,EM89)));
Def Cu2 = EM21 >= Max(EM34,Max(EM55,EM89));
Def Cu3 = EM34 >=Max(EM55,EM89) ;
Def Cu4 = EM55 >= EM89;
Def CD1 = EM89 >= Max(EM55, Max(EM34, Max(EM21, EM8)));
Def CD2 = EM55 >= Max(EM34, Max(EM21, EM8));
Def CD3 = EM34 >= Max(EM21, EM8);
Def CD4 = EM21 >= EM8;
Def Tup = (Cu1 + Cu2 + Cu3 + Cu4 );
def Tdn = (Cd1 + Cd2 + Cd3 + Cd4 );
Plot Str =.5 *(Tup - Tdn);
Plot StrR = Str[1];
Str.SetPaintingStrategy(PaintingStrategy.LINE);
Str.AssignValueColor(if STR >=Str[1] then Color.Cyan else Color.Magenta);
StrR.SetPaintingStrategy(PaintingStrategy.LINE);
StrR.AssignValueColor(if STRR >=STRR[1] then Color.Cyan else Color.Magenta);
Plot UZA = If(Average(Str,34) + (1.618*StDev(Str,34))) >= 10.5 then 10.5 else Average(Str,34) + (1.618*StDev(Str,34)) ;
Plot LZA = if(Average(Str,34) - (1.618*StDev(Str,34))) <= -10.5 then -10.5 else Average(Str,34) - (1.618*StDev(Str,34));
Plot UL = 10.5;
Plot LL = -10.5;
UL.SetDefaultColor(Color.Gray);
LL.SetDefaultColor(Color.Gray);
UZA.SetPaintingStrategy(PaintingStrategy.LINE);
LZA.SetPaintingStrategy(PaintingStrategy.LINE);
UZA.SetDefaultColor(Color.yellow);
LZA.SetDefaultColor(Color.yellow);
AddCloud(Str,StrR, Color.Cyan,Color.magenta);
def mx = Max(Str,StrR);
def mn = Min(Str,StrR);
Addcloud(mn ,0, Color.Light_Green,Color.Black);
Addcloud(mx ,0, Color.Black,Color.Light_red);
AssignPriceColor(if APC ==1 && Str >= 0 then Color.Cyan else if APC ==1 && Str <0 then Color.Magenta else if APC ==2 && Str >= StrR then Color.Cyan else if APC ==2 && Str <= StrR then color.Magenta else Color.Current);
#ARROWS
plot ArrowDown = if arrows == 1 && (Str Crosses below 0) then 0 else if Arrows ==2 && Str Crosses below StrR then mx else double.nan;
ArrowDown.setpaintingStrategy(paintingStrategy.Arrow_Down);
ArrowDown.setDefaultColor(color.Yellow);
ArrowDown.setLineWeight(dotsize);
plot ArrowUp = if arrows == 1 && (Str crosses above 0 ) then 0 else if Arrows ==2 && Str crosses above StrR then mn else double.nan;
ArrowUp.setpaintingStrategy(paintingStrategy.Arrow_Up);
ArrowUp.setDefaultColor(color.Yellow);
ArrowUp.setLineWeight(dotsize);