Advertisement
PineCoders

Bar coloring

Sep 1st, 2019
1,468
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.36 KB | None | 0 0
  1. //@version=2
  2. study("Smooth Regression Bands [DW]", shorttitle="SRB [DW]", overlay=true)
  3. //By Donovan Wall
  4.  
  5. //This is an experimental study using Kaufman Adaptive Moving Average (KAMA), ATR Decay, Linear Regression Bands, and McGinley Dynamic smoothing.
  6.  
  7. //---------------------------------------------------------------------------------------------------------------------------------------------------------------
  8. //Inputs
  9. //---------------------------------------------------------------------------------------------------------------------------------------------------------------
  10.  
  11. //Linear Regression
  12. lrlen = input(defval=377, title="Number of Bars for Linear Regression Calculation")
  13.  
  14. //ATR
  15. atrlen = input(defval=100, title="ATR Period")
  16. atrmult = input(defval=0.125, title="ATR Decay Multiplier")
  17.  
  18. //KAMA
  19. kfast = input(defval=0.666, step=0.001, title="KAMA Smoothing Constant Fast End")
  20. kslow = input(defval=0.0645, step=0.0001, title="KAMA Smoothing Constant Slow End")
  21.  
  22. //McGinley Smoothing
  23. mglen = input(defval=21, minval=1, title="McGinley Dynamic Smoothing Period")
  24.  
  25. // Bar coloring on/off
  26. colorBars = input(true, "Color bars?")
  27.  
  28. //---------------------------------------------------------------------------------------------------------------------------------------------------------------
  29. //Definitions
  30. //---------------------------------------------------------------------------------------------------------------------------------------------------------------
  31.  
  32. //KAMA Function
  33. ksrc = close
  34. kama(ksrc, L)=>
  35. dist = abs(ksrc[0] - ksrc[1])
  36. signal = abs(ksrc - ksrc[L])
  37. noise = sum(dist, L)
  38. effr = noise!=0 ? signal/noise : 1
  39. sc = pow(effr*(kfast - kslow) + kslow,2)
  40. kama = nz(kama[1],ksrc) + sc*(ksrc - nz(kama[1], ksrc))
  41.  
  42. //Band Levels
  43. atrdec = atr(atrlen)*atrmult
  44. ph = nz(srh[1], high)-atrdec
  45. pl = nz(srl[1], low)+atrdec
  46. srh = high >= ph ? high : ph
  47. srl = low <= pl ? low : pl
  48. srhc = max(high, min(srh, linreg(avg(srh, high), lrlen, 0)))
  49. srlc = min(low, max(srl, linreg(avg(srl, low), lrlen, 0)))
  50. devh = srhc + stdev(srhc, lrlen)
  51. devl = srlc - stdev(srlc, lrlen)
  52. lrdevh = linreg(srhc + stdev(srhc, lrlen), lrlen, 0)
  53. hmgsrc = lrdevh
  54. hmg = 0.0
  55. hmg := na(hmg[1]) ? kama(hmgsrc, mglen) : hmg[1] + (hmgsrc - hmg[1]) / (mglen * pow(hmgsrc/hmg[1], 4))
  56. lrdevl = linreg(srlc - stdev(srlc, lrlen), lrlen, 0)
  57. lmgsrc = lrdevl
  58. lmg = 0.0
  59. lmg := na(lmg[1]) ? kama(lmgsrc, mglen) : lmg[1] + (lmgsrc - lmg[1]) / (mglen * pow(lmgsrc/lmg[1], 4))
  60. lrdevm = (lrdevh + lrdevl)/2
  61. mmgsrc = lrdevm
  62. mmg = 0.0
  63. mmg := na(mmg[1]) ? kama(mmgsrc, mglen) : mmg[1] + (mmgsrc - mmg[1]) / (mglen * pow(mmgsrc/mmg[1], 4))
  64. lrdevgmh = lrdevh + (lrdevh - lrdevm)*((1+sqrt(5))/2)
  65. mgsrcgmh = lrdevgmh
  66. mggmh = 0.0
  67. mggmh := na(mggmh[1]) ? kama(mgsrcgmh, mglen) : mggmh[1] + (mgsrcgmh - mggmh[1]) / (mglen * pow(mgsrcgmh/mggmh[1], 4))
  68. lrdevgml = lrdevl - (lrdevm - lrdevl)*((1+sqrt(5))/2)
  69. mgsrcgml = lrdevgml
  70. mggml = 0.0
  71. mggml := na(mggml[1]) ? kama(mgsrcgml, mglen) : mggml[1] + (mgsrcgml - mggml[1]) / (mglen * pow(mgsrcgml/mggml[1], 4))
  72.  
  73. //---------------------------------------------------------------------------------------------------------------------------------------------------------------
  74. //Plots and Fills
  75. //---------------------------------------------------------------------------------------------------------------------------------------------------------------
  76.  
  77. //Band Plots
  78. gmhplot = plot(mggmh, color=#228B22, linewidth=1, transp=0, style=linebr, title="Golden Mean High Band")
  79. hmgplot = plot(hmg, color=#98FB98, linewidth=1, transp=0, style=linebr, title="High Band")
  80. mmgplot = plot(mmg, color=white, linewidth=2, transp=0, style=linebr, title="Central Band")
  81. lmgplot = plot(lmg, color=#CD5C5C, linewidth=1, transp=0, style=linebr, title="Low Band")
  82. gmlplot = plot(mggml, color=#B22222, linewidth=1, transp=0, style=linebr, title="Golden Mean Low Band")
  83.  
  84. //Band Fills
  85. fill(gmhplot, hmgplot, color=#228B22, transp=80, title="Golden Mean High Channel")
  86. fill(hmgplot, mmgplot, color=#98FB98, transp=70, title="High Channel")
  87. fill(lmgplot, mmgplot, color=#CD5C5C, transp=70, title="Low Channel")
  88. fill(gmlplot, lmgplot, color=#B22222, transp=80, title="Golden Mean Low Channel")
  89.  
  90. // Color Bars
  91. barcolor(colorBars ? close > mmg ? lime : red : na)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement