//========================================================================================================
//= 2 - MEDIAS BOLLINGER PSAR
//========================================================================================================
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © facien - powered by © fpucci
//@version=4
study("MA's BOL PSAR CROSS - FAcien FPucci", shorttitle='MultiIndicator - FAcien FPucci',max_bars_back=1000, overlay=true)
//Inputs
Bollinger_MA_type = input("EMA",title='Bollinger MA type', options=["OFF","SMA","EMA","WMA","VWMA","RMA"])
Bollinger_MA_value = input(21,title='Bollinger MA value')
MA_type_1 = input("EMA",title="1st Type of MA's", options=["OFF","SMA","EMA","WMA","VWMA","RMA"])
m1 = input(8,title="Moving Average 1")
m2 = input(21,title="Moving Average 2")
m3 = input(50,title="Moving Average 3")
m4 = input(100,title="Moving Average 4")
m5 = input(200,title="Moving Average 5")
MA_type_2 = input("OFF",title="2nd Type of MA's", options=["OFF","SMA","EMA","WMA","VWMA","RMA"])
m6 = input(10,title="Moving Average 6")
m7 = input(30,title="Moving Average 7")
m8 = input(200,title="Moving Average 8")
show_Golden = input(true,title='Show Golden Crossing')
show_Death = input(true,title='Show Death Crossing')
Crossing_1 = input("OFF",title="1st Crossing MA", options=["OFF","MA 1 <=> MA 2","MA 1 <=> MA 3","MA 1 <=> MA 4","MA 1 <=> MA 5","MA 2 <=> MA 3","MA 2 <=> MA 4","MA 2 <=> MA 5","MA 3 <=> MA 4","MA 3 <=> MA 5","MA 4 <=> MA 5"])
Crossing_2 = input("OFF",title="2nd Crossing MA", options=["OFF","MA 1 <=> MA 2","MA 1 <=> MA 3","MA 1 <=> MA 4","MA 1 <=> MA 5","MA 2 <=> MA 3","MA 2 <=> MA 4","MA 2 <=> MA 5","MA 3 <=> MA 4","MA 3 <=> MA 5","MA 4 <=> MA 5"])
Crossing_3 = input("OFF",title="3rd Crossing MA", options=["OFF","MA 1 <=> MA 2","MA 1 <=> MA 3","MA 1 <=> MA 4","MA 1 <=> MA 5","MA 2 <=> MA 3","MA 2 <=> MA 4","MA 2 <=> MA 5","MA 3 <=> MA 4","MA 3 <=> MA 5","MA 4 <=> MA 5"])
Crossing_4 = input("OFF",title="4th Crossing MA", options=["OFF","MA 1 <=> MA 2","MA 1 <=> MA 3","MA 1 <=> MA 4","MA 1 <=> MA 5","MA 2 <=> MA 3","MA 2 <=> MA 4","MA 2 <=> MA 5","MA 3 <=> MA 4","MA 3 <=> MA 5","MA 4 <=> MA 5"])
Crossing_5 = input("OFF",title="5th Crossing MA", options=["OFF","MA 1 <=> MA 2","MA 1 <=> MA 3","MA 1 <=> MA 4","MA 1 <=> MA 5","MA 2 <=> MA 3","MA 2 <=> MA 4","MA 2 <=> MA 5","MA 3 <=> MA 4","MA 3 <=> MA 5","MA 4 <=> MA 5"])
//selected_ma function
selected_ma(type, value) =>
if type=='EMA'
ema(close, value)
else if type=='WMA'
wma(close, value)
else if type=='SMA'
sma(close, value)
else if type=='VWMA'
vwma(close, value)
else if type=='RMA'
rma(close, value)
else
na
///////// BOLLINGER /////////
//Calculo Bollinger
bolliMax = selected_ma(Bollinger_MA_type, Bollinger_MA_value) + 2* stdev(close, Bollinger_MA_value)
bolliMin = selected_ma(Bollinger_MA_type, Bollinger_MA_value) - 2* stdev(close, Bollinger_MA_value)
//Plot Bollinger
b1 = plot(bolliMax, color=color.silver, linewidth=1, title='Bollinger_Max')
b2 = plot(bolliMin, color=color.silver, linewidth=1, title='Bollinger_Min')
fill(b1,b2,color=color.white, title='Bollinger_Background')
///////// MOVING AVERAGES //////////
//MA_type_1
ma1 = selected_ma(MA_type_1, m1)
ma2 = selected_ma(MA_type_1, m2)
ma3 = selected_ma(MA_type_1, m3)
ma4 = selected_ma(MA_type_1, m4)
ma5 = selected_ma(MA_type_1, m5)
//MA_type_2
ma6 = selected_ma(MA_type_2, m6)
ma7 = selected_ma(MA_type_2, m7)
ma8 = selected_ma(MA_type_2, m8)
//Plot EMAs
plot(ma1, color=color.green, linewidth=1, title="Moving Average 1")
plot(ma2, color=color.red, linewidth=1, title="Moving Average 2")
plot(ma3, color=color.purple, linewidth=1, title="Moving Average 3")
plot(ma4, color=color.orange, linewidth=1, title="Moving Average 4")
plot(ma5, color=color.yellow, linewidth=1, title="Moving Average 5")
plot(ma6, color=color.aqua, linewidth=1, title="Moving Average 6")
plot(ma7, color=color.blue, linewidth=1, title="Moving Average 7")
plot(ma8, color=color.fuchsia, linewidth=1, title="Moving Average 8")
//Golden Crossing
golden_Crossing(media1, media2) =>
mean1 = selected_ma(MA_type_1, media1)
mean2 = selected_ma(MA_type_1, media2)
if crossover(mean1,mean2) and show_Golden
label.new(bar_index, selected_ma(MA_type_1, media1), yloc=yloc.belowbar, color=color.white, style=label.style_label_up, text=(tostring(media1)+"▲"+tostring(media2)), textcolor=color.green)
//Death_Crossing
death_Crossing(media1, media2) =>
mean1 = selected_ma(MA_type_1, media1)
mean2 = selected_ma(MA_type_1, media2)
if crossunder(mean1,mean2) and show_Death
label.new(bar_index, mean1, yloc=yloc.abovebar, color=color.white, style=label.style_label_down, text=(tostring(media1)+"▼"+tostring(media2)), textcolor=color.red)
selected_Crossing(Cossing) =>
if Cossing == "MA 1 <=> MA 2"
golden_Crossing(m1,m2)
death_Crossing(m1,m2)
else if Cossing == "MA 1 <=> MA 3"
golden_Crossing(m1,m3)
death_Crossing(m1,m3)
else if Cossing == "MA 1 <=> MA 4"
golden_Crossing(m1,m4)
death_Crossing(m1,m4)
else if Cossing == "MA 1 <=> MA 5"
golden_Crossing(m1,m5)
death_Crossing(m1,m5)
else if Cossing == "MA 2 <=> MA 3"
golden_Crossing(m2,m3)
death_Crossing(m2,m3)
else if Cossing == "MA 2 <=> MA 4"
golden_Crossing(m2,m4)
death_Crossing(m2,m4)
else if Cossing == "MA 2 <=> MA 5"
golden_Crossing(m2,m5)
death_Crossing(m2,m5)
else if Cossing == "MA 3 <=> MA 4"
golden_Crossing(m3,m4)
death_Crossing(m3,m4)
else if Cossing == "MA 3 <=> MA 5"
golden_Crossing(m3,m5)
death_Crossing(m3,m5)
else if Cossing == "MA 4 <=> MA 5"
golden_Crossing(m4,m5)
death_Crossing(m4,m5)
else
na
selected_Crossing(Crossing_1)
selected_Crossing(Crossing_2)
selected_Crossing(Crossing_3)
selected_Crossing(Crossing_4)
selected_Crossing(Crossing_5)
/////////// Parabollic SAR /////////////
showSAR = input(true,title='Parabollic SAR')
start = input(title = "Parabollic SAR - Start", defval = 0.02, step = 0.001)
increment = input(title = "Parabollic SAR - Increment", defval = 0.02, step = 0.001)
maximum = input(title = "Parabollic SAR - Max Value", defval = 0.2, step = 0.01)
putlabel = input(title = "Parabollic SAR - Show Labels", defval = true)
int trend = 0
float sar = 0.0
float ep = 0.0
float af = 0.0
trend := nz(trend[1])
ep := nz(ep[1])
af :=nz(af[1])
sar := sar[1]
if trend == 0 and not na(high[1])
trend := high >= high[1] or low >= low[1] ? 1 : -1
sar := trend > 0 ? low[1] : high[1]
ep := trend > 0 ? high[1] : low[1]
af := start
else
nextsar = sar
if trend > 0
if high[1] > ep
ep := high[1]
af := min(maximum, af + increment)
nextsar := sar + af * (ep - sar)
nextsar := min(min(low[1], low[2]), nextsar)
//Reversal
if nextsar > low
trend := -1
nextsar := ep
ep := low
af := start
else
if low[1] < ep
ep := low[1]
af := min(maximum, af + increment)
nextsar := sar + af * (ep - sar)
nextsar := max(max(high[1], high[2]), nextsar)
//Reversal
if nextsar < high
trend := 1
nextsar := ep
ep := high
af := start
sar := nextsar
plot(iff(showSAR,sar,na), title = "Parabolic SAR", color = trend > 0 ? color.green : color.red, linewidth = 1, style = plot.style_circles)
if change(trend) > 0 and putlabel
label.new(bar_index, sar, color = color.lime, style=label.style_labelup, size = size.tiny)
if change(trend) < 0 and putlabel
label.new(bar_index, sar, color = color.red, style=label.style_labeldown, size = size.tiny)
Copiar Script