//@version=3
study('虹MA+BB', overlay=true)
//input
length = input(20, minval=1, title="SMA length")
src = input(close, title="Source")
mult1 = input(1.0, minval=0.001, maxval=50, title="BB1 mult")
mult2 = input(2.0, minval=0.001, maxval=50, title="BB2 mult")
mult3 = input(3.0, minval=0.001, maxval=50, title="BB3 mult")
bb1 = input(true, title="display BB1")
bb2 = input(true, title="display BB2")
bb3 = input(true, title="display BB3")
alert = input(2, minval=1, maxval=3, title="BB for alert number")
upper_src = input(high, title="BB uppper cross source")
lower_src = input(low, title="BB lower cross source")
cross_select = input("Outside", options=["Outside", "Inside"], title="cross select")
//SMA
basis = sma(src, length)
//BB3
dev3 = mult3 * stdev(src, length)
upper3 = basis + dev3
lower3 = basis - dev3
p5 = plot(bb3 ? upper3 : na, color=blue, title="upper 3")
p6 = plot(bb3 ? lower3 : na, color=blue, title="lower 3")
fill(p5, p6, color=aqua,transp=95,title="fill BB3")
//BB2
dev2 = mult2 * stdev(src, length)
upper2 = basis + dev2
lower2 = basis - dev2
p3 = plot(bb2 ? upper2 : na, color=blue, title="upper 2")
p4 = plot(bb2 ? lower2 : na, color=blue, title="upper 2")
fill(p3, p4, color=aqua,transp=95, title="fill BB2")
//BB1
dev1 = mult1 * stdev(src, length)
upper1 = basis + dev1
lower1 = basis - dev1
p1 = plot(bb1 ? upper1 : na, color=blue, title="upper 1")
p2 = plot(bb1 ? lower1 : na, color=blue, title="lower 1")
fill(p1, p2, color=aqua,transp=95, title="fill BB1")
plot(basis, color=red, title="SMA")
upper = alert == 1 ? upper1 : alert == 2 ? upper2 : upper3
lower = alert == 1 ? lower1 : alert == 2 ? lower2 : lower3
upper_cross = cross_select == "Outside" ? crossover(upper_src, upper) : crossunder(upper_src, upper)
lower_cross = cross_select == "Outside" ? crossunder(lower_src, lower) : crossover(lower_src, lower)
alertcondition(upper_cross or lower_cross, title="Alert BB Cross", message="Alert BB Cross")
//MA
emaOrSma = input(title="MAの選択", defval="EMA", options=["EMA", "SMA"])
maPeriodFast_1 = input(title="MA Period Fast 1", type=integer, defval=3, minval=1, maxval=10000)
maPeriodFast_2 = input(title="MA Period Fast 2", type=integer, defval=5, minval=1, maxval=10000)
maPeriodFast_3 = input(title="MA Period Fast 3", type=integer, defval=8, minval=1, maxval=10000)
maPeriodFast_4 = input(title="MA Period Fast 4", type=integer, defval=10, minval=1, maxval=10000)
maPeriodFast_5 = input(title="MA Period Fast 5", type=integer, defval=12, minval=1, maxval=10000)
maPeriodFast_6 = input(title="MA Period Fast 6", type=integer, defval=15, minval=1, maxval=10000)
maPeriodSlow_1 = input(title="MA Period Slow 1", type=integer, defval=30, minval=1, maxval=10000)
maPeriodSlow_2 = input(title="MA Period Slow 2", type=integer, defval=35, minval=1, maxval=10000)
maPeriodSlow_3 = input(title="MA Period Slow 3", type=integer, defval=40, minval=1, maxval=10000)
maPeriodSlow_4 = input(title="MA Period Slow 4", type=integer, defval=45, minval=1, maxval=10000)
maPeriodSlow_5 = input(title="MA Period Slow 5", type=integer, defval=50, minval=1, maxval=10000)
maPeriodSlow_6 = input(title="MA Period Slow 6", type=integer, defval=60, minval=1, maxval=10000)
fast_1 = emaOrSma == "EMA" ? ema(close, maPeriodFast_1) : sma(close, maPeriodFast_1)
fast_2 = emaOrSma == "EMA" ? ema(close, maPeriodFast_2) : sma(close, maPeriodFast_2)
fast_3 = emaOrSma == "EMA" ? ema(close, maPeriodFast_3) : sma(close, maPeriodFast_3)
fast_4 = emaOrSma == "EMA" ? ema(close, maPeriodFast_4) : sma(close, maPeriodFast_4)
fast_5 = emaOrSma == "EMA" ? ema(close, maPeriodFast_5) : sma(close, maPeriodFast_5)
fast_6 = emaOrSma == "EMA" ? ema(close, maPeriodFast_6) : sma(close, maPeriodFast_6)
slow_1 = emaOrSma == "EMA" ? ema(close, maPeriodSlow_1) : sma(close, maPeriodSlow_1)
slow_2 = emaOrSma == "EMA" ? ema(close, maPeriodSlow_2) : sma(close, maPeriodSlow_2)
slow_3 = emaOrSma == "EMA" ? ema(close, maPeriodSlow_3) : sma(close, maPeriodSlow_3)
slow_4 = emaOrSma == "EMA" ? ema(close, maPeriodSlow_4) : sma(close, maPeriodSlow_4)
slow_5 = emaOrSma == "EMA" ? ema(close, maPeriodSlow_5) : sma(close, maPeriodSlow_5)
slow_6 = emaOrSma == "EMA" ? ema(close, maPeriodSlow_6) : sma(close, maPeriodSlow_6)
//color
plot(fast_1, color=yellow)
plot(fast_2, color=orange)
plot(fast_3, color=red)
plot(fast_4, color=maroon)
plot(fast_5, color=fuchsia)
plot(fast_6, color=purple)
plot(slow_1, color=navy)
plot(slow_2, color=blue)
plot(slow_3, color=aqua)
plot(slow_4, color=teal)
plot(slow_5, color=lime)
plot(slow_6, color=green)