xmd79

Donchian RSI and Support & Resistance Levels Ribbon System

Jan 11th, 2022
208
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.11 KB | None | 0 0
  1. // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
  2. //@version=5
  3. indicator('Donchian RSI and Support & Resistance Levels Ribbon System',
  4. shorttitle='Donchian Ribbon',
  5. overlay=true,
  6. timeframe="",
  7. timeframe_gaps=true)
  8.  
  9. //DONCHIAN MA
  10. donchian(_length) =>
  11. math.avg(ta.lowest(_length), ta.highest(_length))
  12.  
  13. //input
  14. donchianon = input(true, 'Donchian Channel on?', inline="0", group='Donchian Channel')
  15. dclength = input.int(20, minval=2, inline="0", title="", group='Donchian Channel')
  16. donchianrainbow2 = input(true, 'RSI Rainbow?', inline="0", group='Donchian Channel')
  17. color regularfill = input.color(color.rgb(33, 150, 243, 0), '', group='Donchian Channel', inline='00')
  18. color uplim = input.color(color.new(color.red, 0), '', group='Donchian Channel', inline='00')
  19. color dnlim = input.color(color.new(color.green, 0), '', group='Donchian Channel', inline='00')
  20. transparencyvalue2 = input.int(95, minval=0, maxval=100, title="Channel Fill Transparency", group='Donchian Channel', inline='00')
  21. ribbonon = input(true, 'Donchian Ribbon on?', inline="0", group='Donchian Moving Average Ribbon')
  22. donchianrainbow = input(true, 'RSI Rainbow?', inline="0", group='Donchian Moving Average Ribbon')
  23. color bullma = input.color(color.new(#26a69a, 50), '', inline='00', group='Donchian Moving Average Ribbon')
  24. color bearma = input.color(color.new(#ff5252, 50), '', inline='00', group='Donchian Moving Average Ribbon')
  25. transparencyvaluema = input.int(50, minval=0, maxval=100, title="                    Ribbon Transparency", group='Donchian Moving Average Ribbon', inline='00')
  26.  
  27. transparencyvalue = if ribbonon == true
  28. transparencyvaluema
  29. else
  30. 100
  31.  
  32. len2=input(2, inline='00')
  33. len3=input(3, inline='00')
  34. len4=input(4, inline='00')
  35. len5=input(5, inline='01')
  36. len6=input(6, inline='01')
  37. len7=input(7, inline='01')
  38. len8=input(8, inline='02')
  39. len9=input(9, inline='02')
  40. len10=input(10, inline='02')
  41. len11=input(11, inline='03')
  42. len12=input(12, inline='03')
  43. len13=input(13, inline='03')
  44. len14=input(14, inline='04')
  45. len15=input(15, inline='04')
  46. len16=input(16, inline='04')
  47. len17=input(17, inline='05')
  48. len18=input(18, inline='05')
  49. len19=input(19, inline='05')
  50. len20=input(20, inline='06')
  51. len21=input(21, inline='06')
  52. len22=input(22, inline='06')
  53.  
  54. don2=donchian(len2)
  55. don3=donchian(len3)
  56. don4=donchian(len4)
  57. don5=donchian(len5)
  58. don6=donchian(len6)
  59. don7=donchian(len7)
  60. don8=donchian(len8)
  61. don9=donchian(len9)
  62. don10=donchian(len10)
  63. don11=donchian(len11)
  64. don12=donchian(len12)
  65. don13=donchian(len13)
  66. don14=donchian(len14)
  67. don15=donchian(len15)
  68. don16=donchian(len16)
  69. don17=donchian(len17)
  70. don18=donchian(len18)
  71. don19=donchian(len19)
  72. don20=donchian(len20)
  73. don21=donchian(len21)
  74. don22=donchian(len22)
  75.  
  76. //grad
  77. var grad = array.new_color(na)
  78. if barstate.isfirst
  79. array.push(grad, color.new(color.gray, transparencyvalue))
  80. array.push(grad, color.new(#800080, transparencyvalue))
  81. array.push(grad, color.new(#890089, transparencyvalue))
  82. array.push(grad, color.new(#910091, transparencyvalue))
  83. array.push(grad, color.new(#9a009a, transparencyvalue))
  84. array.push(grad, color.new(#a300a3, transparencyvalue))
  85. array.push(grad, color.new(#ab00ab, transparencyvalue))
  86. array.push(grad, color.new(#b400b4, transparencyvalue))
  87. array.push(grad, color.new(#bd00bd, transparencyvalue))
  88. array.push(grad, color.new(#c700c7, transparencyvalue))
  89. array.push(grad, color.new(#d000d0, transparencyvalue))
  90. array.push(grad, color.new(#d900d9, transparencyvalue))
  91. array.push(grad, color.new(#e200e2, transparencyvalue))
  92. array.push(grad, color.new(#ec00ec, transparencyvalue))
  93. array.push(grad, color.new(#f500f5, transparencyvalue))
  94. array.push(grad, color.new(#ff00ff, transparencyvalue))
  95. array.push(grad, color.new(#ff00f0, transparencyvalue))
  96. array.push(grad, color.new(#ff00e1, transparencyvalue))
  97. array.push(grad, color.new(#ff00d2, transparencyvalue))
  98. array.push(grad, color.new(#ff00c4, transparencyvalue))
  99. array.push(grad, color.new(#ff00b7, transparencyvalue))
  100. array.push(grad, color.new(#ff00aa, transparencyvalue))
  101. array.push(grad, color.new(#ff009d, transparencyvalue))
  102. array.push(grad, color.new(#ff0091, transparencyvalue))
  103. array.push(grad, color.new(#ff0086, transparencyvalue))
  104. array.push(grad, color.new(#ff187c, transparencyvalue))
  105. array.push(grad, color.new(#ff2972, transparencyvalue))
  106. array.push(grad, color.new(#ff3669, transparencyvalue))
  107. array.push(grad, color.new(#ff4160, transparencyvalue))
  108. array.push(grad, color.new(#ff4a59, transparencyvalue))
  109. array.push(grad, color.new(#ff5252, transparencyvalue))
  110. array.push(grad, color.new(#ff5a4e, transparencyvalue))
  111. array.push(grad, color.new(#ff624a, transparencyvalue))
  112. array.push(grad, color.new(#ff6a45, transparencyvalue))
  113. array.push(grad, color.new(#ff7240, transparencyvalue))
  114. array.push(grad, color.new(#ff7b3b, transparencyvalue))
  115. array.push(grad, color.new(#ff8336, transparencyvalue))
  116. array.push(grad, color.new(#ff8c30, transparencyvalue))
  117. array.push(grad, color.new(#ff942a, transparencyvalue))
  118. array.push(grad, color.new(#ff9d23, transparencyvalue))
  119. array.push(grad, color.new(#ffa61c, transparencyvalue))
  120. array.push(grad, color.new(#ffaf12, transparencyvalue))
  121. array.push(grad, color.new(#ffb805, transparencyvalue))
  122. array.push(grad, color.new(#ffc100, transparencyvalue))
  123. array.push(grad, color.new(#ffca00, transparencyvalue))
  124. array.push(grad, color.new(#ffd300, transparencyvalue))
  125. array.push(grad, color.new(#ffdc00, transparencyvalue))
  126. array.push(grad, color.new(#ffe500, transparencyvalue))
  127. array.push(grad, color.new(#ffed00, transparencyvalue))
  128. array.push(grad, color.new(#fff600, transparencyvalue))
  129. array.push(grad, color.new(#ffff00, transparencyvalue))
  130. array.push(grad, color.new(#eefd1d, transparencyvalue))
  131. array.push(grad, color.new(#ddfb2d, transparencyvalue))
  132. array.push(grad, color.new(#ccf83a, transparencyvalue))
  133. array.push(grad, color.new(#bcf546, transparencyvalue))
  134. array.push(grad, color.new(#adf150, transparencyvalue))
  135. array.push(grad, color.new(#9eee59, transparencyvalue))
  136. array.push(grad, color.new(#8fea62, transparencyvalue))
  137. array.push(grad, color.new(#81e66a, transparencyvalue))
  138. array.push(grad, color.new(#74e172, transparencyvalue))
  139. array.push(grad, color.new(#66dc79, transparencyvalue))
  140. array.push(grad, color.new(#5ad87f, transparencyvalue))
  141. array.push(grad, color.new(#4dd385, transparencyvalue))
  142. array.push(grad, color.new(#41cd8a, transparencyvalue))
  143. array.push(grad, color.new(#36c88f, transparencyvalue))
  144. array.push(grad, color.new(#2cc393, transparencyvalue))
  145. array.push(grad, color.new(#24bd96, transparencyvalue))
  146. array.push(grad, color.new(#1fb798, transparencyvalue))
  147. array.push(grad, color.new(#1eb299, transparencyvalue))
  148. array.push(grad, color.new(#21ac9a, transparencyvalue))
  149. array.push(grad, color.new(#26a69a, transparencyvalue))
  150. array.push(grad, color.new(#26aca0, transparencyvalue))
  151. array.push(grad, color.new(#26b1a6, transparencyvalue))
  152. array.push(grad, color.new(#25b7ad, transparencyvalue))
  153. array.push(grad, color.new(#24bdb3, transparencyvalue))
  154. array.push(grad, color.new(#24c3ba, transparencyvalue))
  155. array.push(grad, color.new(#23c9c0, transparencyvalue))
  156. array.push(grad, color.new(#21cfc7, transparencyvalue))
  157. array.push(grad, color.new(#20d5ce, transparencyvalue))
  158. array.push(grad, color.new(#1edbd4, transparencyvalue))
  159. array.push(grad, color.new(#1be1db, transparencyvalue))
  160. array.push(grad, color.new(#18e7e2, transparencyvalue))
  161. array.push(grad, color.new(#15ede9, transparencyvalue))
  162. array.push(grad, color.new(#10f3f0, transparencyvalue))
  163. array.push(grad, color.new(#09f9f8, transparencyvalue))
  164. array.push(grad, color.new(#00ffff, transparencyvalue))
  165. array.push(grad, color.new(#00f5ff, transparencyvalue))
  166. array.push(grad, color.new(#00ebff, transparencyvalue))
  167. array.push(grad, color.new(#00e1ff, transparencyvalue))
  168. array.push(grad, color.new(#00d6ff, transparencyvalue))
  169. array.push(grad, color.new(#00cbff, transparencyvalue))
  170. array.push(grad, color.new(#00bfff, transparencyvalue))
  171. array.push(grad, color.new(#00b3ff, transparencyvalue))
  172. array.push(grad, color.new(#00a6ff, transparencyvalue))
  173. array.push(grad, color.new(#0099ff, transparencyvalue))
  174. array.push(grad, color.new(#008aff, transparencyvalue))
  175. array.push(grad, color.new(#007bff, transparencyvalue))
  176. array.push(grad, color.new(#0069ff, transparencyvalue))
  177. array.push(grad, color.new(#0055ff, transparencyvalue))
  178. array.push(grad, color.new(#003bff, transparencyvalue))
  179. array.push(grad, color.new(#0000ff, transparencyvalue))
  180.  
  181. lower = ta.lowest(dclength)
  182. upper = ta.highest(dclength)
  183. dma = math.round(math.avg(lower, upper))
  184. rsival = math.round(ta.rsi(dma, dclength))
  185. gradcolor = array.get(grad, rsival)
  186. basecolor = donchianrainbow2 ? color.new(gradcolor, transparencyvalue2) : regularfill
  187.  
  188. //envelopes plots
  189. dc1 = plot(donchianon ? upper : na, title='Upper Channel Limit', color=donchianrainbow2 ? color.new(basecolor, 0) : uplim, linewidth=1)
  190. dc2 = plot(donchianon ? lower : na, title='Lower Channel Limit', color=donchianrainbow2 ? color.new(basecolor, 0) : dnlim, linewidth=1)
  191. dcfill = color.new(gradcolor, transparencyvalue2)
  192. dccolor = donchianrainbow2 ? color.new(dcfill, 95) : regularfill
  193. fill(dc1, dc2, color=color.new(dccolor, transparencyvalue2), title='Fill')
  194.  
  195. p2 = plot(don2, title='Donchian 2', linewidth=1, color = donchianrainbow ? array.get(grad, math.round(ta.rsi(don2, len2) / 1)) : don2 >= don2[1] ? bullma : bearma)
  196. p3 = plot(don3, title='Donchian 3', linewidth=1, color = donchianrainbow ? array.get(grad, math.round(ta.rsi(don3, len3) / 1)) : don3 >= don3[1] ? bullma : bearma)
  197. p4 = plot(don4, title='Donchian 4', linewidth=1, color = donchianrainbow ? array.get(grad, math.round(ta.rsi(don4, len4) / 1)) : don4 >= don4[1] ? bullma : bearma)
  198. p5 = plot(don5, title='Donchian 5', linewidth=1, color = donchianrainbow ? array.get(grad, math.round(ta.rsi(don5, len5) / 1)) : don5 >= don5[1] ? bullma : bearma)
  199. p6 = plot(don6, title='Donchian 6', linewidth=1, color = donchianrainbow ? array.get(grad, math.round(ta.rsi(don6, len6) / 1)) : don6 >= don6[1] ? bullma : bearma)
  200. p7 = plot(don7, title='Donchian 7', linewidth=1, color = donchianrainbow ? array.get(grad, math.round(ta.rsi(don7, len7) / 1)) : don7 >= don7[1] ? bullma : bearma)
  201. p8 = plot(don8, title='Donchian 8', linewidth=1, color = donchianrainbow ? array.get(grad, math.round(ta.rsi(don8, len8) / 1)) : don8 >= don8[1] ? bullma : bearma)
  202. p9 = plot(don9, title='Donchian 9', linewidth=1, color = donchianrainbow ? array.get(grad, math.round(ta.rsi(don9, len9) / 1)) : don9 >= don9[1] ? bullma : bearma)
  203. p10 = plot(don10, title='Donchian 10', linewidth=1, color = donchianrainbow ? array.get(grad, math.round(ta.rsi(don10, len10) / 1)) : don10 >= don10[1] ? bullma : bearma)
  204. p11 = plot(don11, title='Donchian 11', linewidth=1, color = donchianrainbow ? array.get(grad, math.round(ta.rsi(don11, len11) / 1)) : don11 >= don11[1] ? bullma : bearma)
  205. p12 = plot(don12, title='Donchian 12', linewidth=1, color = donchianrainbow ? array.get(grad, math.round(ta.rsi(don12, len12) / 1)) : don12 >= don12[1] ? bullma : bearma)
  206. p13 = plot(don13, title='Donchian 13', linewidth=1, color = donchianrainbow ? array.get(grad, math.round(ta.rsi(don13, len13) / 1)) : don13 >= don13[1] ? bullma : bearma)
  207. p14 = plot(don14, title='Donchian 14', linewidth=1, color = donchianrainbow ? array.get(grad, math.round(ta.rsi(don14, len14) / 1)) : don14 >= don14[1] ? bullma : bearma)
  208. p15 = plot(don15, title='Donchian 15', linewidth=1, color = donchianrainbow ? array.get(grad, math.round(ta.rsi(don15, len15) / 1)) : don15 >= don15[1] ? bullma : bearma)
  209. p16 = plot(don16, title='Donchian 16', linewidth=1, color = donchianrainbow ? array.get(grad, math.round(ta.rsi(don16, len16) / 1)) : don16 >= don16[1] ? bullma : bearma)
  210. p17 = plot(don17, title='Donchian 17', linewidth=1, color = donchianrainbow ? array.get(grad, math.round(ta.rsi(don17, len17) / 1)) : don17 >= don17[1] ? bullma : bearma)
  211. p18 = plot(don18, title='Donchian 18', linewidth=1, color = donchianrainbow ? array.get(grad, math.round(ta.rsi(don18, len18) / 1)) : don18 >= don18[1] ? bullma : bearma)
  212. p19 = plot(don19, title='Donchian 19', linewidth=1, color = donchianrainbow ? array.get(grad, math.round(ta.rsi(don19, len19) / 1)) : don19 >= don19[1] ? bullma : bearma)
  213. p20 = plot(don20, title='Donchian 20', linewidth=1, color = donchianrainbow ? array.get(grad, math.round(ta.rsi(don20, len20) / 1)) : don20 >= don20[1] ? bullma : bearma)
  214. p21 = plot(don21, title='Donchian 21', linewidth=1, color = donchianrainbow ? array.get(grad, math.round(ta.rsi(don21, len21) / 1)) : don21 >= don21[1] ? bullma : bearma)
  215. p22 = plot(don22, title='Donchian 22', linewidth=1, color = donchianrainbow ? array.get(grad, math.round(ta.rsi(don22, len22) / 1)) : don22 >= don22[1] ? bullma : bearma)
Advertisement
Add Comment
Please, Sign In to add comment