能不能帮我写一个pine脚本，功能是同时使用Volatility Oscillator指标、Bollinger Bands指标、Normalized MACD指标。Volatility Oscillator指标、Normalized MACD指标我会提供，Bollinger Bands指标直接调用tradingview的就行，设置保持默认。代码如下Volatility Oscillator指标
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © veryfid


//@version=4
study("Volatility Oscillator", resolution = "")
length = input(100)
spike = close - open
x = stdev(spike,length)
y = stdev(spike,length) * -1


plot(spike, color = color.white, linewidth = 2, title = "Spike Linel")


p1 = plot(x, "Upper Line")
p2 = plot(y, "Lower Line")


plot(0, color= color.gray, title= "Zero Line")


plot(spike, color= color.blue, style=plot.style_area, transp=80, title = "Spike Fill")


osc2 = spike


lbR = 5
lbL = 5
rangeUpper =60
rangeLower = 5
plotBull = input(title="Plot Bullish", defval=true)
plotHiddenBull = input(title="Plot Hidden Bullish", defval=false)
plotBear = input(title="Plot Bearish", defval=true)
plotHiddenBear = input(title="Plot Hidden Bearish", defval=false)
delay_plot_til_closed = input(title="Delay diversion plot until candle is closed (don't repaint)", defval=false)
bearColor = color.red
bullColor = color.green
hiddenBullColor = color.new(color.green, 80)
hiddenBearColor = color.new(color.red, 80)
textColor = color.white
noneColor = color.new(color.white, 100)


repaint = (not(delay_plot_til_closed) or barstate.ishistory or barstate.isconfirmed)


plFound = na(pivotlow(osc2, lbL, lbR)) ? false : true
phFound = na(pivothigh(osc2, lbL, lbR)) ? false : true
_inRange(cond) =>
    bars = barssince(cond == true)
    rangeLower <= bars and bars <= rangeUpper


//------------------------------------------------------------------------------
// Regular Bullish
// Osc: Higher Low


oscHL = osc2[lbR] > valuewhen(plFound, osc2[lbR], 1) and _inRange(plFound[1])


// Price: Lower Low


priceLL = low[lbR] < valuewhen(plFound, low[lbR], 1)
bullCond = plotBull and priceLL and oscHL and plFound and repaint




plotshape(
     bullCond ? osc2[lbR] : na,
     offset=-lbR,
     title="Regular Bullish Label",
     text="R",
     style=shape.labelup,
     location=location.absolute,
     color=bullColor,
     textcolor=textColor,
     transp=0
     )


//------------------------------------------------------------------------------
// Hidden Bullish
// Osc: Lower Low


oscLL = osc2[lbR] < valuewhen(plFound, osc2[lbR], 1) and _inRange(plFound[1])


// Price: Higher Low


priceHL = low[lbR] > valuewhen(plFound, low[lbR], 1)
hiddenBullCond = plotHiddenBull and priceHL and oscLL and plFound and repaint






plotshape(
     hiddenBullCond ? osc2[lbR] : na,
     offset=-lbR,
     title="Hidden Bullish Label",
     text="H",
     style=shape.labelup,
     location=location.absolute,
     color=bullColor,
     textcolor=textColor,
     transp=0
     )


//------------------------------------------------------------------------------
// Regular Bearish
// Osc: Lower High


oscLH = osc2[lbR] < valuewhen(phFound, osc2[lbR], 1) and _inRange(phFound[1])


// Price: Higher High


priceHH = high[lbR] > valuewhen(phFound, high[lbR], 1)


bearCond = plotBear and priceHH and oscLH and phFound and repaint






plotshape(
     bearCond ? osc2[lbR] : na,
     offset=-lbR,
     title="Regular Bearish Label",
     text="R",
     style=shape.labeldown,
     location=location.absolute,
     color=bearColor,
     textcolor=textColor,
     transp=0
     )


//------------------------------------------------------------------------------
// Hidden Bearish
// Osc: Higher High


oscHH = osc2[lbR] > valuewhen(phFound, osc2[lbR], 1) and _inRange(phFound[1])


// Price: Lower High


priceLH = high[lbR] < valuewhen(phFound, high[lbR], 1)


hiddenBearCond = plotHiddenBear and priceLH and oscHH and phFound and repaint






plotshape(
     hiddenBearCond ? osc2[lbR] : na,
     offset=-lbR,
     title="Hidden Bearish Label",
     text="H",
     style=shape.labeldown,
     location=location.absolute,
     color=bearColor,
     textcolor=textColor,
     transp=0
     )


//barcolor(color = spike > 0 ? color.green : color.red )
Normalized MACD指标
study("Normalized MACD",shorttitle='N MACD')
sma = input(13,title='Fast MA')
lma = input(21,title='Slow MA')
tsp = input(9,title='Trigger')
np = input(50,title='Normalize')
h=input(true,title='Histogram')
docol = input(false,title="Color Change")
dofill=input(false,title="Fill")
type = input(1,minval=1,maxval=3,title="1=Ema, 2=Wma, 3=Sma")


sh = type == 1 ? ema(close,sma)  
 : type == 2 ? wma(close, sma)
 : sma(close, sma)


lon=type == 1 ? ema(close,lma)
 : type == 2 ? wma(close, lma)
 : sma(close, lma)


ratio = min(sh,lon)/max(sh,lon)
Mac = (iff(sh>lon,2-ratio,ratio)-1)
MacNorm = ((Mac-lowest(Mac, np)) /(highest(Mac, np)-lowest(Mac, np)+.000001)*2)- 1
MacNorm2 = iff(np<2,Mac,MacNorm)
Trigger = wma(MacNorm2, tsp)
Hist = (MacNorm2-Trigger)
Hist2 = Hist>1?1:Hist<-1?-1:Hist
swap=Hist2>Hist2[1]?green:red
swap2 = docol ? MacNorm2 > MacNorm2[1] ? #0094FF : #FF006E : red
plot(h?Hist2:na,color=swap,style=columns,title='Hist',histbase=0)
plot(MacNorm2,color=swap2,title='MacNorm')
plot(dofill?MacNorm2:na,color=MacNorm2>0?green:red,style=columns)
plot(Trigger,color=black,title='Trigger')
hline(0)