xmd79

NG [All Moving Averages]

Apr 21st, 2021
358
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.14 KB | None | 0 0
  1. //@version=3
  2. //Feel free to use everywhere
  3. //Crafted by NGBaltic
  4.  
  5. study(title = "NG [All Moving Averages]" , shorttitle = "NG [MALL]", overlay=true, precision=8)
  6.  
  7. haClose = close
  8. haOpen = open
  9. haHigh = high
  10. haLow = low
  11.  
  12. haClose := (open + high + low + close) / 4
  13. haOpen := (nz(haOpen[1]) + nz(haClose[1])) / 2
  14. haHigh := max(high, max(haOpen, haClose))
  15. haLow := min(low , min(haOpen, haClose))
  16.  
  17. ssrc = input(title = "Source", defval = close)
  18. ha = input(title = "Use Heiken Ashi", type = bool, defval = false)
  19.  
  20. o = ha ? haOpen : open
  21. c = ha ? haClose : close
  22. h = ha ? haHigh : high
  23. l = ha ? haLow : low
  24.  
  25. ssrc := ssrc == close ? ha ? haClose : c : ssrc
  26. ssrc := ssrc == open ? ha ? haOpen : o : ssrc
  27. ssrc := ssrc == high ? ha ? haHigh : h : ssrc
  28. ssrc := ssrc == low ? ha ? haLow : l : ssrc
  29. ssrc := ssrc == hl2 ? ha ? (haHigh + haLow) / 2 : hl2 : ssrc
  30. ssrc := ssrc == hlc3 ? ha ? (haHigh + haLow + haClose) / 3 : hlc3 : ssrc
  31. ssrc := ssrc == ohlc4 ? ha ? (haHigh + haLow + haClose+ haOpen) / 4 : ohlc4 : ssrc
  32.  
  33. 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"])
  34.  
  35. len1=input(8, title ="MA 1")
  36. len2=input(13, title = "MA 2")
  37. len3=input(21, title = "MA 3")
  38. len4=input(55, title = "MA 4")
  39. len5=input(89, title = "MA 5")
  40.  
  41. onOff1 = input(defval=true, title="Enable 1")
  42. onOff2 = input(defval=true, title="Enable 2")
  43. onOff3 = input(defval=true, title="Enable 3")
  44. onOff4 = input(defval=true, title="Enable 4")
  45. onOff5 = input(defval=true, title="Enable 5")
  46.  
  47. gauss_poles = input(3, "*** Gaussian poles ***", minval = 1, maxval = 14)
  48. linew = input(title = "Line Width", minval = 1, maxval = 5, defval = 2)
  49. shapes = input(title = "Show Cross Shapes", type = bool, defval = true)
  50.  
  51.  
  52. variant_supersmoother(src,len) =>
  53. Pi = 2 * asin(1)
  54. a1 = exp(-1.414* Pi / len)
  55. b1 = 2*a1*cos(1.414* Pi / len)
  56. c2 = b1
  57. c3 = (-a1)*a1
  58. c1 = 1 - c2 - c3
  59. v9 = 0.0
  60. v9 := c1*(src + nz(src[1])) / 2 + c2*nz(v9[1]) + c3*nz(v9[2])
  61. v9
  62.  
  63. variant_smoothed(src,len) =>
  64. v5 = 0.0
  65. v5 := na(v5[1]) ? sma(src, len) : (v5[1] * (len - 1) + src) / len
  66. v5
  67.  
  68. variant_zerolagema(src, len) =>
  69. price = src
  70. l = (len - 1) / 2
  71. d = (price + (price - price[l]))
  72. z = ema(d, len)
  73. z
  74.  
  75. variant_doubleema(src,len) =>
  76. v2 = ema(src, len)
  77. v6 = 2 * v2 - ema(v2, len)
  78. v6
  79.  
  80. variant_WiMA(src, length) =>
  81. MA_s= nz(src)
  82. MA_s:=(src + nz(MA_s[1] * (length-1)))/length
  83. MA_s
  84.  
  85. fact(num)=>
  86. a = 1
  87. nn = num <= 1 ? 1 : num
  88. for i = 1 to nn
  89. a := a * i
  90. a
  91.  
  92. getPoles(f, Poles, alfa)=>
  93. filt = f
  94. sign = 1
  95. results = 0 + n//tv series spoofing
  96. for r = 1 to max(min(Poles, n),1)
  97. mult = fact(Poles) / (fact(Poles - r) * fact(r))
  98. matPo = pow(1 - alfa, r)
  99. prev = nz(filt[r-1],0)
  100. sum = sign * mult * matPo * prev
  101. results := results + sum
  102. sign := sign * -1
  103. results := results - n
  104. results
  105.  
  106. variant_gauss(Price, Lag, Poles)=>
  107. Pi = 2 * asin(1)
  108. beta = (1 - cos(2 * Pi / Lag)) / ( pow (sqrt(2), 2.0 / Poles) - 1)
  109. alfa = -beta + sqrt(beta * beta + 2 * beta)
  110. pre = nz(Price, 0) * pow(alfa, Poles)
  111. filter = pre
  112. result = n > 0 ? getPoles(nz(filter[1]), Poles, alfa) : 0
  113. filter := pre + result
  114.  
  115. variant_mg(src, len)=>
  116. mg = 0.0
  117. mg := na(mg[1]) ? ema(src, len) : mg[1] + (src - mg[1]) / (len * pow(src/mg[1], 4))
  118. mg
  119.  
  120. variant_sinewma(src, length) =>
  121. PI = 2 * asin(1)
  122. sum = 0.0
  123. weightSum = 0.0
  124. for i = 0 to length - 1
  125. weight = sin(i * PI / (length + 1))
  126. sum := sum + nz(src[i]) * weight
  127. weightSum := weightSum + weight
  128. sinewma = sum / weightSum
  129. sinewma
  130.  
  131. variant_geoMean(price, per)=>
  132. gmean = pow(price, 1.0/per)
  133. gx = for i = 1 to per-1
  134. gmean := gmean * pow(price[i], 1.0/per)
  135. gmean
  136. ggx = n > per? gx : price
  137. ggx
  138.  
  139. variant_rema(src, length)=>
  140. lambda = .5
  141. alpha = 2 / (length + 1)
  142. rema = 0.0
  143. rema := (nz(rema[1]) + alpha * (src - nz(rema[1])) + lambda * (2 * nz(rema[1]) - nz(rema[2]))) / (lambda + 1)
  144. rema
  145.  
  146. t3_mult(series, length) =>
  147. factor = .7
  148. mult = ema(series, length) * (1 + factor) - ema(ema(series, length), length) * factor
  149. mult
  150.  
  151. variant_t3(src, len)=> t3 = t3_mult(t3_mult(t3_mult(src, len), len), len)
  152.  
  153. variant_butt2pole(pr, p1)=>
  154. Pi = 2 * asin(1)
  155. DTR = Pi / 180
  156. a1 = exp(-sqrt(2) * Pi / p1)
  157. b1 = 2 * a1 * cos(DTR * (sqrt(2) * 180 / p1))
  158. cf1 = (1 - b1 + a1 * a1) / 4
  159. cf2 = b1
  160. cf3 = -a1 * a1
  161. butt_filt = pr
  162. butt_filt := cf1 * (pr + 2 * nz(pr[1]) + nz(pr[2])) + cf2 * nz(butt_filt[1]) + cf3 * nz(butt_filt[2])
  163.  
  164. variant_lowPass(src, len)=>
  165. LP = src
  166. sr = src
  167. a = 2.0 / (1.0 + len)
  168. 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])
  169. LP
  170.  
  171. variant_ema(src, len) =>
  172. alpha = 2 / (len + 1)
  173. sum = 0.0
  174. sum := alpha * src + (1 - alpha) * nz(sum[1])
  175. sum
  176.  
  177. variant_sma(src, len) =>
  178. sum = 0.0
  179. for i = 0 to len - 1
  180. sum := sum + src[i] / len
  181. sum
  182.  
  183. variant_trima(src, length) =>
  184. len = ceil((length + 1) * 0.5)
  185. trima = sum(sma(src, len), len)/len
  186. trima
  187.  
  188.  
  189.  
  190. variant(type, src, len) =>
  191. type=="EMA" ? variant_ema(src, len) :
  192. type=="LowPass" ? variant_lowPass(src, len) :
  193. type=="Linreg" ? linreg(src, len, 0) :
  194. type=="Gaussian" ? variant_gauss(src, len, gauss_poles) :
  195. type=="Sine_WMA" ? variant_sinewma(src, len) :
  196. type=="Regularized_MA" ? variant_rema(src, len) :
  197. type=="Geometric_Mean" ? variant_geoMean(src, len) :
  198. type=="T3" ? variant_t3(src, len) :
  199. type=="Butterworth_2Pole" ? variant_butt2pole(src, len) :
  200. type=="Smoothed_MA" ? variant_smoothed(src, len) :
  201. type=="Triangular_MA" ? variant_trima(src, len) :
  202. type=="McGuinley" ? variant_mg(src, len) :
  203. type=="DEMA" ? variant_doubleema(src, len):
  204. type=="Super_Smoother" ? variant_supersmoother(src, len) :
  205. type=="Zero_Lag" ? variant_zerolagema(src, len) :
  206. type=="Wilders"? variant_WiMA(src, len) : variant_sma(src, len)
  207.  
  208.  
  209. c1=#44E2D6
  210. c2=#DDD10D
  211. c3=#0AA368
  212. c4=#E0670E
  213. c5=#AB40B2
  214.  
  215. cRed = #F93A00
  216. tBase = 0
  217. tStep = 5
  218.  
  219. ma1 = variant(type, ssrc, len1)
  220. ma2 = variant(type, ssrc, len2)
  221. ma3 = variant(type, ssrc, len3)
  222. ma4 = variant(type, ssrc, len4)
  223. ma5 = variant(type, ssrc, len5)
  224.  
  225. col1 = c1
  226. col2 = c2
  227. col3 = c3
  228. col4 = c4
  229. col5 = c5
  230.  
  231. p1 = plot(onOff1 ? ma1 : na, title = "MA 1", color = col1, linewidth = linew, style = linebr, transp = tBase)
  232. p2 = plot(onOff2 ? ma2 : na, title = "MA 2", color = col2, linewidth = linew, style = linebr, transp = tBase + tStep)
  233. p3 = plot(onOff3 ? ma3 : na, title = "MA 3", color = col3, linewidth = linew, style = linebr, transp = tBase + tStep * 2)
  234. p4 = plot(onOff5 ? ma4 : na, title = "MA 4", color = col4, linewidth = linew, style = linebr, transp = tBase + tStep * 3)
  235. p5 = plot(onOff5 ? ma5 : na, title = "MA 5", color = col5, linewidth = linew, style = linebr, transp = tBase + tStep * 4)
  236.  
  237. sBase = 10
  238. sStep = 10
  239.  
  240. col()=>
  241. c = black
  242. c := crossover(ma1, ma2) and shapes and onOff1 and onOff2 ? c1 : c
  243. c := crossover(ma1, ma3) and shapes and onOff1 and onOff3 ? c1 : c
  244. c := crossover(ma1, ma4) and shapes and onOff1 and onOff4 ? c1 : c
  245. c := crossover(ma1, ma5) and shapes and onOff1 and onOff5 ? c1 : c
  246. c := crossover(ma2, ma3) and shapes and onOff2 and onOff3 ? c2 : c
  247. c := crossover(ma2, ma4) and shapes and onOff2 and onOff4 ? c2 : c
  248. c := crossover(ma2, ma5) and shapes and onOff2 and onOff5 ? c2 : c
  249. c := crossover(ma3, ma4) and shapes and onOff3 and onOff4 ? c3 : c
  250. c := crossover(ma3, ma5) and shapes and onOff3 and onOff5 ? c3 : c
  251. c := crossover(ma4, ma5) and shapes and onOff4 and onOff5 ? c4 : c
  252. c
  253.  
  254. colU()=>
  255. c = black
  256. c := crossunder(ma1, ma2) and shapes and onOff1 and onOff2 ? c1 : c
  257. c := crossunder(ma1, ma3) and shapes and onOff1 and onOff3 ? c1 : c
  258. c := crossunder(ma1, ma4) and shapes and onOff1 and onOff4 ? c1 : c
  259. c := crossunder(ma1, ma5) and shapes and onOff1 and onOff5 ? c1 : c
  260. c := crossunder(ma2, ma3) and shapes and onOff2 and onOff3 ? c2 : c
  261. c := crossunder(ma2, ma4) and shapes and onOff2 and onOff4 ? c2 : c
  262. c := crossunder(ma2, ma5) and shapes and onOff2 and onOff5 ? c2 : c
  263. c := crossunder(ma3, ma4) and shapes and onOff3 and onOff4 ? c3 : c
  264. c := crossunder(ma3, ma5) and shapes and onOff3 and onOff5 ? c3 : c
  265. c := crossunder(ma4, ma5) and shapes and onOff4 and onOff5 ? c4 : c
  266. c
  267.  
  268. plotshape(col() == black ? false : true, style = shape.triangleup, location = location.abovebar, color = col(), transp = sBase)
  269. plotshape(colU() == black ? false : true, style = shape.triangledown, location = location.belowbar, color = colU(), transp = sBase)
  270.  
  271.  
Advertisement
Add Comment
Please, Sign In to add comment