Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //@version=3
- //Feel free to use everywhere
- //Crafted by NGBaltic
- study(title = "NG [All Moving Averages]" , shorttitle = "NG [MALL]", overlay=true, precision=8)
- haClose = close
- haOpen = open
- haHigh = high
- haLow = low
- haClose := (open + high + low + close) / 4
- haOpen := (nz(haOpen[1]) + nz(haClose[1])) / 2
- haHigh := max(high, max(haOpen, haClose))
- haLow := min(low , min(haOpen, haClose))
- ssrc = input(title = "Source", defval = close)
- ha = input(title = "Use Heiken Ashi", type = bool, defval = false)
- o = ha ? haOpen : open
- c = ha ? haClose : close
- h = ha ? haHigh : high
- l = ha ? haLow : low
- ssrc := ssrc == close ? ha ? haClose : c : ssrc
- ssrc := ssrc == open ? ha ? haOpen : o : ssrc
- ssrc := ssrc == high ? ha ? haHigh : h : ssrc
- ssrc := ssrc == low ? ha ? haLow : l : ssrc
- ssrc := ssrc == hl2 ? ha ? (haHigh + haLow) / 2 : hl2 : ssrc
- ssrc := ssrc == hlc3 ? ha ? (haHigh + haLow + haClose) / 3 : hlc3 : ssrc
- ssrc := ssrc == ohlc4 ? ha ? (haHigh + haLow + haClose+ haOpen) / 4 : ohlc4 : ssrc
- type = input(defval = "EMA", title = "Type of Moving Average", options = ["Butterworth_2Pole", "DEMA", "EMA", "Gaussian", "Geometric_Mean", "LowPass", "McGuinley", "Regularized_MA", "SMA", "Sine_WMA", "Smoothed_MA", "Super_Smoother", "T3", "Triangular_MA", "Wilders", "Zero_Lag"])
- len1=input(8, title ="MA 1")
- len2=input(13, title = "MA 2")
- len3=input(21, title = "MA 3")
- len4=input(55, title = "MA 4")
- len5=input(89, title = "MA 5")
- onOff1 = input(defval=true, title="Enable 1")
- onOff2 = input(defval=true, title="Enable 2")
- onOff3 = input(defval=true, title="Enable 3")
- onOff4 = input(defval=true, title="Enable 4")
- onOff5 = input(defval=true, title="Enable 5")
- gauss_poles = input(3, "*** Gaussian poles ***", minval = 1, maxval = 14)
- linew = input(title = "Line Width", minval = 1, maxval = 5, defval = 2)
- shapes = input(title = "Show Cross Shapes", type = bool, defval = true)
- variant_supersmoother(src,len) =>
- Pi = 2 * asin(1)
- a1 = exp(-1.414* Pi / len)
- b1 = 2*a1*cos(1.414* Pi / len)
- c2 = b1
- c3 = (-a1)*a1
- c1 = 1 - c2 - c3
- v9 = 0.0
- v9 := c1*(src + nz(src[1])) / 2 + c2*nz(v9[1]) + c3*nz(v9[2])
- v9
- variant_smoothed(src,len) =>
- v5 = 0.0
- v5 := na(v5[1]) ? sma(src, len) : (v5[1] * (len - 1) + src) / len
- v5
- variant_zerolagema(src, len) =>
- price = src
- l = (len - 1) / 2
- d = (price + (price - price[l]))
- z = ema(d, len)
- z
- variant_doubleema(src,len) =>
- v2 = ema(src, len)
- v6 = 2 * v2 - ema(v2, len)
- v6
- variant_WiMA(src, length) =>
- MA_s= nz(src)
- MA_s:=(src + nz(MA_s[1] * (length-1)))/length
- MA_s
- fact(num)=>
- a = 1
- nn = num <= 1 ? 1 : num
- for i = 1 to nn
- a := a * i
- a
- getPoles(f, Poles, alfa)=>
- filt = f
- sign = 1
- results = 0 + n//tv series spoofing
- for r = 1 to max(min(Poles, n),1)
- mult = fact(Poles) / (fact(Poles - r) * fact(r))
- matPo = pow(1 - alfa, r)
- prev = nz(filt[r-1],0)
- sum = sign * mult * matPo * prev
- results := results + sum
- sign := sign * -1
- results := results - n
- results
- variant_gauss(Price, Lag, Poles)=>
- Pi = 2 * asin(1)
- beta = (1 - cos(2 * Pi / Lag)) / ( pow (sqrt(2), 2.0 / Poles) - 1)
- alfa = -beta + sqrt(beta * beta + 2 * beta)
- pre = nz(Price, 0) * pow(alfa, Poles)
- filter = pre
- result = n > 0 ? getPoles(nz(filter[1]), Poles, alfa) : 0
- filter := pre + result
- variant_mg(src, len)=>
- mg = 0.0
- mg := na(mg[1]) ? ema(src, len) : mg[1] + (src - mg[1]) / (len * pow(src/mg[1], 4))
- mg
- variant_sinewma(src, length) =>
- PI = 2 * asin(1)
- sum = 0.0
- weightSum = 0.0
- for i = 0 to length - 1
- weight = sin(i * PI / (length + 1))
- sum := sum + nz(src[i]) * weight
- weightSum := weightSum + weight
- sinewma = sum / weightSum
- sinewma
- variant_geoMean(price, per)=>
- gmean = pow(price, 1.0/per)
- gx = for i = 1 to per-1
- gmean := gmean * pow(price[i], 1.0/per)
- gmean
- ggx = n > per? gx : price
- ggx
- variant_rema(src, length)=>
- lambda = .5
- alpha = 2 / (length + 1)
- rema = 0.0
- rema := (nz(rema[1]) + alpha * (src - nz(rema[1])) + lambda * (2 * nz(rema[1]) - nz(rema[2]))) / (lambda + 1)
- rema
- t3_mult(series, length) =>
- factor = .7
- mult = ema(series, length) * (1 + factor) - ema(ema(series, length), length) * factor
- mult
- variant_t3(src, len)=> t3 = t3_mult(t3_mult(t3_mult(src, len), len), len)
- variant_butt2pole(pr, p1)=>
- Pi = 2 * asin(1)
- DTR = Pi / 180
- a1 = exp(-sqrt(2) * Pi / p1)
- b1 = 2 * a1 * cos(DTR * (sqrt(2) * 180 / p1))
- cf1 = (1 - b1 + a1 * a1) / 4
- cf2 = b1
- cf3 = -a1 * a1
- butt_filt = pr
- butt_filt := cf1 * (pr + 2 * nz(pr[1]) + nz(pr[2])) + cf2 * nz(butt_filt[1]) + cf3 * nz(butt_filt[2])
- variant_lowPass(src, len)=>
- LP = src
- sr = src
- a = 2.0 / (1.0 + len)
- LP := (a - 0.25 * a * a) * sr + 0.5 * a * a * nz(sr[1]) - (a - 0.75 * a * a) * nz(sr[2]) + 2.0 * (1.0 - a) * nz(LP[1]) - (1.0 - a) * (1.0 - a) * nz(LP[2])
- LP
- variant_ema(src, len) =>
- alpha = 2 / (len + 1)
- sum = 0.0
- sum := alpha * src + (1 - alpha) * nz(sum[1])
- sum
- variant_sma(src, len) =>
- sum = 0.0
- for i = 0 to len - 1
- sum := sum + src[i] / len
- sum
- variant_trima(src, length) =>
- len = ceil((length + 1) * 0.5)
- trima = sum(sma(src, len), len)/len
- trima
- variant(type, src, len) =>
- type=="EMA" ? variant_ema(src, len) :
- type=="LowPass" ? variant_lowPass(src, len) :
- type=="Linreg" ? linreg(src, len, 0) :
- type=="Gaussian" ? variant_gauss(src, len, gauss_poles) :
- type=="Sine_WMA" ? variant_sinewma(src, len) :
- type=="Regularized_MA" ? variant_rema(src, len) :
- type=="Geometric_Mean" ? variant_geoMean(src, len) :
- type=="T3" ? variant_t3(src, len) :
- type=="Butterworth_2Pole" ? variant_butt2pole(src, len) :
- type=="Smoothed_MA" ? variant_smoothed(src, len) :
- type=="Triangular_MA" ? variant_trima(src, len) :
- type=="McGuinley" ? variant_mg(src, len) :
- type=="DEMA" ? variant_doubleema(src, len):
- type=="Super_Smoother" ? variant_supersmoother(src, len) :
- type=="Zero_Lag" ? variant_zerolagema(src, len) :
- type=="Wilders"? variant_WiMA(src, len) : variant_sma(src, len)
- c1=#44E2D6
- c2=#DDD10D
- c3=#0AA368
- c4=#E0670E
- c5=#AB40B2
- cRed = #F93A00
- tBase = 0
- tStep = 5
- ma1 = variant(type, ssrc, len1)
- ma2 = variant(type, ssrc, len2)
- ma3 = variant(type, ssrc, len3)
- ma4 = variant(type, ssrc, len4)
- ma5 = variant(type, ssrc, len5)
- col1 = c1
- col2 = c2
- col3 = c3
- col4 = c4
- col5 = c5
- p1 = plot(onOff1 ? ma1 : na, title = "MA 1", color = col1, linewidth = linew, style = linebr, transp = tBase)
- p2 = plot(onOff2 ? ma2 : na, title = "MA 2", color = col2, linewidth = linew, style = linebr, transp = tBase + tStep)
- p3 = plot(onOff3 ? ma3 : na, title = "MA 3", color = col3, linewidth = linew, style = linebr, transp = tBase + tStep * 2)
- p4 = plot(onOff5 ? ma4 : na, title = "MA 4", color = col4, linewidth = linew, style = linebr, transp = tBase + tStep * 3)
- p5 = plot(onOff5 ? ma5 : na, title = "MA 5", color = col5, linewidth = linew, style = linebr, transp = tBase + tStep * 4)
- sBase = 10
- sStep = 10
- col()=>
- c = black
- c := crossover(ma1, ma2) and shapes and onOff1 and onOff2 ? c1 : c
- c := crossover(ma1, ma3) and shapes and onOff1 and onOff3 ? c1 : c
- c := crossover(ma1, ma4) and shapes and onOff1 and onOff4 ? c1 : c
- c := crossover(ma1, ma5) and shapes and onOff1 and onOff5 ? c1 : c
- c := crossover(ma2, ma3) and shapes and onOff2 and onOff3 ? c2 : c
- c := crossover(ma2, ma4) and shapes and onOff2 and onOff4 ? c2 : c
- c := crossover(ma2, ma5) and shapes and onOff2 and onOff5 ? c2 : c
- c := crossover(ma3, ma4) and shapes and onOff3 and onOff4 ? c3 : c
- c := crossover(ma3, ma5) and shapes and onOff3 and onOff5 ? c3 : c
- c := crossover(ma4, ma5) and shapes and onOff4 and onOff5 ? c4 : c
- c
- colU()=>
- c = black
- c := crossunder(ma1, ma2) and shapes and onOff1 and onOff2 ? c1 : c
- c := crossunder(ma1, ma3) and shapes and onOff1 and onOff3 ? c1 : c
- c := crossunder(ma1, ma4) and shapes and onOff1 and onOff4 ? c1 : c
- c := crossunder(ma1, ma5) and shapes and onOff1 and onOff5 ? c1 : c
- c := crossunder(ma2, ma3) and shapes and onOff2 and onOff3 ? c2 : c
- c := crossunder(ma2, ma4) and shapes and onOff2 and onOff4 ? c2 : c
- c := crossunder(ma2, ma5) and shapes and onOff2 and onOff5 ? c2 : c
- c := crossunder(ma3, ma4) and shapes and onOff3 and onOff4 ? c3 : c
- c := crossunder(ma3, ma5) and shapes and onOff3 and onOff5 ? c3 : c
- c := crossunder(ma4, ma5) and shapes and onOff4 and onOff5 ? c4 : c
- c
- plotshape(col() == black ? false : true, style = shape.triangleup, location = location.abovebar, color = col(), transp = sBase)
- plotshape(colU() == black ? false : true, style = shape.triangledown, location = location.belowbar, color = colU(), transp = sBase)
Advertisement
Add Comment
Please, Sign In to add comment