xmd79

Support Resistance MTF

Nov 30th, 2021
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.68 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. // © LonesomeTheBlue
  3.  
  4. //@version=5
  5. indicator('Support Resistance MTF', overlay=true, max_bars_back=4900)
  6. src = input.string(defval='High/Low', title='Source', options=['High/Low', 'Close/Open'])
  7. TimeframeU = input.string(defval='Auto', title='Higher Time Frame', options=['Auto', '15', '30', '60', '120', '180', '240', '720', 'D', 'W', '2W', 'M', '3M', '6M', '12M'])
  8. prd = input.int(defval=10, title='Period for Highest/Lowest Bars', minval=1)
  9. resistancecol = input(defval=color.red, title='Resistance Color')
  10. supportcol = input(defval=color.lime, title='Support Color')
  11. Transp = input.int(defval=80, title='Transparency for Zones', minval=0, maxval=100)
  12. extendlines = input(defval=false, title='Extend Lines')
  13.  
  14. Timeframe = timeframe.period
  15. if TimeframeU == 'Auto'
  16. Timeframe := timeframe.period == '1' ? '15' : timeframe.period == '3' ? '15' : timeframe.period == '5' ? '60' : timeframe.period == '15' ? '60' : timeframe.period == '30' ? '120' : timeframe.period == '45' ? '120' : timeframe.period == '60' ? '240' : timeframe.period == '120' ? 'D' : timeframe.period == '180' ? 'D' : timeframe.period == '240' ? 'D' : timeframe.period == 'D' ? 'W' : timeframe.period == 'W' ? 'M' : '12M'
  17. Timeframe
  18. else
  19. Timeframe := TimeframeU
  20. Timeframe
  21.  
  22. var float hc = na
  23. var float lc = na
  24. srch = src == 'High/Low' ? high : math.max(close, open)
  25. srcl = src == 'High/Low' ? low : math.min(close, open)
  26. hc := ta.highestbars(srch, prd) == 0 ? srch : hc
  27. lc := ta.lowestbars(srcl, prd) == 0 ? srcl : lc
  28.  
  29. hcp = plot(hc, color=hc == hc[1] ? resistancecol : na)
  30. lcp = plot(lc, color=lc == lc[1] ? supportcol : na)
  31.  
  32. bool newbar = ta.change(time(Timeframe)) != 0
  33. var float htfh = na
  34. var float htfl = na
  35. if newbar
  36. htfh := srch
  37. htfl := srcl
  38. htfl
  39. else
  40. htfh := math.max(htfh, srch)
  41. htfl := math.min(htfl, srcl)
  42. htfl
  43.  
  44. highestbar(src, len) =>
  45. ll = 1
  46. if len > 1
  47. for x = 0 to 4000 by 1
  48. if na(newbar[x]) or na(close[x + 1])
  49. break
  50. if newbar[x]
  51. if src <= src[x + 1]
  52. break
  53. ll += 1
  54. if ll >= len
  55. break
  56. ret = ll >= len
  57. ret
  58.  
  59. lowestbar(src, len) =>
  60. ll = 1
  61. if len > 1
  62. for x = 0 to 4000 by 1
  63. if na(newbar[x]) or na(close[x + 1])
  64. break
  65. if newbar[x]
  66. if src >= src[x + 1]
  67. break
  68. ll += 1
  69. if ll >= len
  70. break
  71. ret = ll >= len
  72. ret
  73.  
  74. var float hh = 0
  75. var float ll = 0
  76. bool hbar = highestbar(htfh, prd)
  77. bool lbar = lowestbar(htfl, prd)
  78. hh := hbar ? htfh : hh
  79. ll := lbar ? htfl : ll
  80.  
  81. hhp = plot(hh, color=hh == hh[1] ? resistancecol : na)
  82. llp = plot(ll, color=ll == ll[1] ? supportcol : na)
  83.  
  84. fill(hhp, hcp, color=hc == hc[1] and hh == hh[1] ? color.new(resistancecol, Transp) : na, transp=90)
  85. fill(llp, lcp, color=lc == lc[1] and ll == ll[1] ? color.new(supportcol, Transp) : na, transp=90)
  86.  
  87. // extend lines
  88. if extendlines
  89. var line s1 = na
  90. var line s2 = na
  91. var line r1 = na
  92. var line r2 = na
  93. line.delete(s1)
  94. line.delete(s2)
  95. line.delete(r1)
  96. line.delete(r2)
  97. s1 := line.new(bar_index, lc, bar_index - 1, lc, color=supportcol, extend=extend.left)
  98. s2 := line.new(bar_index, ll, bar_index - 1, ll, color=supportcol, extend=extend.left)
  99. r1 := line.new(bar_index, hc, bar_index - 1, hc, color=resistancecol, extend=extend.left)
  100. r2 := line.new(bar_index, hh, bar_index - 1, hh, color=resistancecol, extend=extend.left)
  101. r2
  102.  
  103.  
Advertisement
Add Comment
Please, Sign In to add comment