#//@Shizaru
#study("Murray Math Levels",shorttitle="MML_SH",overlay=true)
# Converted and mod by Sam4Cok#Samer800 - 12/2022
input Length = 64;#(64,title="Length")
input ColorBar = yes;
input ShowSignals = yes;
input showLines = no;
input ShowCloud = yes;
input ShowBand = yes;
def na = Double.NaN;
############## theme 1########################################
DefineGlobalColor("Sky1" , CreateColor(0, 221, 255)); # >=90
DefineGlobalColor("Sky2" , CreateColor(4, 188, 217)); # >=80
DefineGlobalColor("Sky3" , CreateColor(4, 156, 179)); # >=70
DefineGlobalColor("Sky4" , CreateColor(4, 127, 145)); # >=60
DefineGlobalColor("Sky5" , CreateColor(4, 103, 117)); # >=50
DefineGlobalColor("Magenta1" , CreateColor(216, 0, 255)); # >=40
DefineGlobalColor("Magenta2" , CreateColor(187, 4, 219)); # >=30
DefineGlobalColor("Magenta3" , CreateColor(155, 5, 181)); # >=20
DefineGlobalColor("Magenta4" , CreateColor(123, 3, 143)); # >=10
DefineGlobalColor("Magenta5" , CreateColor(100, 2, 117)); # >=0
############## theme 2########################################
DefineGlobalColor("Green1" , CreateColor(1,255,0)); # >=90
DefineGlobalColor("Green2" , CreateColor(5,217,4)); # >=80
DefineGlobalColor("Green4" , CreateColor(3,145,3)); # >=60
DefineGlobalColor("Green5" , CreateColor(2,117,2)); # >=50
DefineGlobalColor("Red1" , CreateColor(255,5,5)); # >=40
DefineGlobalColor("Red2" , CreateColor(214,6,6)); # >=30
DefineGlobalColor("Red4" , CreateColor(145,3,3)); # >=10
DefineGlobalColor("Red5" , CreateColor(117,2,2)); # >=0
def h = high[1]; def l = low[1]; def c = close[1]; def o = open[1];
def srcHi = (h+c+c) / 3;
def srcLo = (l+c+c) / 3;
def HiHi = Highest(srcHi, Length);
def LoLo = Lowest(srcLo, Length);
def h44 = HiHi + (HiHi - LoLo) / 8;
def h55 = h44 + (HiHi - LoLo) / 8;
def h33 = HiHi - (HiHi - LoLo) / 8;
def h22 = h33 - (HiHi - LoLo) / 8;
def h11 = h22 - (HiHi - LoLo) / 8;
def Mid = h11 - (HiHi - LoLo) / 8;
def L11 = Mid - (HiHi - LoLo) / 8;
def L22 = L11 - (HiHi - LoLo) / 8;
def L33 = L22 - (HiHi - LoLo) / 8;
def L44 = LoLo - (HiHi - LoLo) / 8;
def L55 = L44 - (HiHi - LoLo) / 8;
plot L5 = if !showLines then na else L55;
L5.SetDefaultColor(GlobalColor("Magenta1"));
plot L4 = if !showLines then na else L44;
L4.SetDefaultColor(GlobalColor("Magenta2"));
plot LL = if !ShowBand then na else LoLo;
LL.SetDefaultColor(Color.RED);
plot L3 = if !showLines then na else L33;
L3.SetDefaultColor(GlobalColor("Magenta3"));
plot L2 = if !showLines then na else L22;
L2.SetDefaultColor(GlobalColor("Magenta4"));
plot L1 = L11;
L1.SetDefaultColor(GlobalColor("Magenta5"));
L1.SetStyle(Curve.LONG_DASH);
def Trend = Average(Mid,Length) ;
plot MidLine = Average(Mid,2);
MidLine.AssignValueColor(if Mid>Trend then Color.CYAN else Color.MAGENTA);
plot H1 = h11;
H1.SetDefaultColor(GlobalColor("Sky5"));
H1.SetStyle(Curve.LONG_DASH);
plot H2 = if !showLines then na else h22;
H2.SetDefaultColor(GlobalColor("Sky4"));
plot H3 = if !showLines then na else h33;
H3.SetDefaultColor(GlobalColor("Sky3"));
plot HH = if !ShowBand then na else HiHi;
HH.SetDefaultColor(Color.GREEN);
plot H4 = if !showLines then na else h44;
H4.SetDefaultColor(GlobalColor("Sky2"));
plot H5 = if !showLines then na else h55;
H5.SetDefaultColor(GlobalColor("Sky1"));
#---- Signals
def SigUp = if (srcHi>Mid and Mid>Trend) then SigUp[1]+1 else 0;
def SigDn = if (srcLo<Mid and Mid<Trend) then SigDn[1]+1 else 0;
plot ArrUp = if !ShowSignals then na else if (SigUp==1 and highest(SigUp[1],9)<1 and highest(SigDn[1],2)<1) then low else na;
plot ArrDn = if !ShowSignals then na else if (SigDn==1 and highest(SigUp[1],2)<1 and highest(SigDn[1],9)<1) then high else na;
ArrUp.SetPaintingStrategy(PaintingStrategy.ARROW_UP);
ArrDn.SetPaintingStrategy(PaintingStrategy.ARROW_DOWN);
ArrUp.SetDefaultColor(Color.WHITE);
ArrDn.SetDefaultColor(Color.DARK_ORANGE);
ArrUp.SetLineWeight(2);
ArrDn.SetLineWeight(2);
#--- Clouds
AddCloud(H1, L1, Color.DARK_GRAY);
AddCloud(If(!ShowCloud, na, H22), H11, GlobalColor("Sky5"), GlobalColor("Sky5"));
AddCloud(If(!ShowCloud, na, H33), H22, GlobalColor("Sky4"), GlobalColor("Sky4"));
AddCloud(If(!ShowCloud, na, H44), H33, GlobalColor("Sky3"), GlobalColor("Sky3"));
AddCloud(If(!ShowCloud, na, H55), H44, GlobalColor("Sky2"), GlobalColor("Sky2"));
AddCloud(If(!ShowCloud, na, L11), L22, GlobalColor("Magenta5"), GlobalColor("Magenta5"));
AddCloud(If(!ShowCloud, na, L22), L33, GlobalColor("Magenta4"), GlobalColor("Magenta4"));
AddCloud(If(!ShowCloud, na, L33), L44, GlobalColor("Magenta3"), GlobalColor("Magenta3"));
AddCloud(If(!ShowCloud, na, L44), L55, GlobalColor("Magenta2"), GlobalColor("Magenta2"));
#-- Bar Color
AssignPriceColor(if !ColorBar then Color.CURRENT else
if srcHi>H44 then GlobalColor("Green1") else
if srcHi>H33 then GlobalColor("Green2") else
if srcHi>H22 then GlobalColor("Green4") else
if srcHi>H11 then GlobalColor("Green5") else
if srcLo<L44 then GlobalColor("red1") else
if srcLo<L33 then GlobalColor("red2") else
if srcLo<L22 then GlobalColor("red4") else
if srcLo<L11 then GlobalColor("red5") else Color.GRAY);
#---- END CODE