# Converted by Sam4Cok@Samer800 - 04/2024
#https://www.tradingview.com/v/qIKR3tbN/
# @Rashad
#study(shorttitle="FBB", title="Fibonacci Bollinger Bands", overlay=true)
input inner = no;
input src = hlc3; #, title="Source")
input length = 180; #, minval=1)
input mult1 = 1.0;
input mult0 = 2.0;
input mult = 3.0; #, minval=0.001, maxval=50)
input movAvgType = {Default VWMA, SMA, EMA, WMA, HMA, RMA};
def na = Double.NaN;
def vwma = Average(src * volume, length) / Average(volume, length);
def basis; # = ExpAverage(src, length);
Switch (movAvgType) {
Case SMA : basis = Average(src, length);
Case EMA : basis = ExpAverage(src, length);
Case WMA : basis = WMA(src, length);
Case HMA : basis = HullMovingAvg(src, length);
Case RMA : basis = WildersAverage(src, length);
Default : basis = vwma;
}
def dev = mult * stdev(src, length);
def dev1 = mult0 * stdev(src, length);
def dev0 = mult1 * stdev(src, length);
def upper_1= basis + (0.236*dev);
def upper_2= basis + (0.382*dev);
def upper_3= basis + (0.5*dev);
def upper_4= basis + (0.618*dev);
def upper_5= basis + (0.764*dev);
def upper_6= basis + (1*dev);
def upper_7= basis + (1*dev1);
def upper_8= basis + (1*dev0);
def lower_1= basis - (0.236*dev);
def lower_2= basis - (0.382*dev);
def lower_3= basis - (0.5*dev);
def lower_4= basis - (0.618*dev);
def lower_5= basis - (0.764*dev);
def lower_6= basis - (1*dev);
def lower_7 = basis - (1*dev1);
def lower_8 = basis - (1*dev0);
plot baseLine = basis; #, color=fuchsia, linewidth=2)
plot u236 = if inner then upper_1 else double.nan; # color=white, linewidth=1, title="0.236")
plot u382 = if inner then upper_2 else double.nan; # , color=white, linewidth=1, title="0.382")
plot u500 = if inner then upper_3 else double.nan; # , color=white, linewidth=1, title="0.5")
plot u618 = if inner then upper_4 else double.nan; # , color=white, linewidth=1, title="0.618")
def u764 = if inner then upper_5 else double.nan; # , color=white, linewidth=1, title="0.764")
plot u100 = upper_6; # , color=red, linewidth=2, title="1")
plot l236 = if inner then lower_1 else double.nan; # , color=white, linewidth=1, title="0.236")
plot l382 = if inner then lower_2 else double.nan; # , color=white, linewidth=1, title="0.382")
plot l500 = if inner then lower_3 else double.nan; # , color=white, linewidth=1, title="0.5")
plot l618 = if inner then lower_4 else double.nan; # , color=white, linewidth=1, title="0.618")
def l764 = if inner then lower_5 else double.nan; # , color=white, linewidth=1, title="0.764")
plot l100 = lower_6; # , color=green, linewidth=2, title="1")
plot u1 = upper_8;
plot l1 = lower_8;
plot u2 = upper_7;
plot l2 = lower_7;
u2.SetLineWeight(2);
l2.SetLineWeight(2);
baseLine.SetLineWeight(3);
u100.SetLineWeight(4);
l100.SetLineWeight(4);
AddCloud(l2, L100, COLOR.DARK_GREEN, COLOR.DARK_GREEN);
AddCloud(u2, u100, COLOR.DARK_RED, COLOR.DARK_RED);
baseLine.SetDefaultColor(Color.yellow);
u1.SetDefaultColor(Color.dark_orange);
l1.SetDefaultColor(Color.light_green);
u2.SetDefaultColor(Color.magenta);
l2.SetDefaultColor(Color.cyan);
u236.SetDefaultColor(Color.DARK_GREEN);
u382.SetDefaultColor(Color.DARK_GREEN);
u500.SetDefaultColor(Color.DARK_GREEN);
u618.SetDefaultColor(Color.DARK_GREEN);
#u764.SetDefaultColor(Color.DARK_GREEN);
u100.SetDefaultColor(Color.magenta);
l236.SetDefaultColor(Color.DARK_RED);
l382.SetDefaultColor(Color.DARK_RED);
l500.SetDefaultColor(Color.DARK_RED);
l618.SetDefaultColor(Color.DARK_RED);
#l764.SetDefaultColor(Color.DARK_RED);
l100.SetDefaultColor(Color.cyan);
#-- END of CODE