Guest User

Untitled

a guest
May 30th, 2024
409
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.59 KB | None | 0 0
  1. //@version=5
  2. indicator('Consolidation Zones - Live', overlay=true, max_bars_back=1100)
  3. prd = input.int(defval=10, title='Loopback Period', minval=2, maxval=50)
  4. conslen = input.int(defval=5, title='Min Consolidation Length', minval=2, maxval=20)
  5. paintcons = input(defval=true, title='Paint Consolidation Area ')
  6. zonecol = input(defval=color.new(color.blue, 70), title='Zone Color')
  7.  
  8. float hb_ = ta.highestbars(prd) == 0 ? high : na
  9. float lb_ = ta.lowestbars(prd) == 0 ? low : na
  10. var int dir = 0
  11. float zz = na
  12. float pp = na
  13.  
  14. iff_1 = lb_ and na(hb_) ? -1 : dir
  15. dir := hb_ and na(lb_) ? 1 : iff_1
  16. if hb_ and lb_
  17. if dir == 1
  18. zz := hb_
  19. zz
  20. else
  21. zz := lb_
  22. zz
  23. else
  24. iff_1 = lb_ ? lb_ : na
  25. zz := hb_ ? hb_ : iff_1
  26. zz
  27.  
  28. for x = 0 to 1000 by 1
  29. if na(close) or dir != dir[x]
  30. break
  31. if zz[x]
  32. if na(pp)
  33. pp := zz[x]
  34. pp
  35. else
  36. if dir[x] == 1 and zz[x] > pp
  37. pp := zz[x]
  38. pp
  39. if dir[x] == -1 and zz[x] < pp
  40. pp := zz[x]
  41. pp
  42.  
  43. var int conscnt = 0
  44. var float condhigh = na
  45. var float condlow = na
  46. float H_ = ta.highest(conslen)
  47. float L_ = ta.lowest(conslen)
  48. var line upline = na
  49. var line dnline = na
  50. bool breakoutup = false
  51. bool breakoutdown = false
  52.  
  53. if ta.change(pp)
  54. if conscnt > conslen
  55. if pp > condhigh
  56. breakoutup := true
  57. breakoutup
  58. if pp < condlow
  59. breakoutdown := true
  60. breakoutdown
  61. if conscnt > 0 and pp <= condhigh and pp >= condlow
  62. conscnt += 1
  63. conscnt
  64. else
  65. conscnt := 0
  66. conscnt
  67. else
  68. conscnt += 1
  69. conscnt
  70.  
  71. if conscnt >= conslen
  72. if conscnt == conslen
  73. condhigh := H_
  74. condlow := L_
  75. condlow
  76. else
  77. line.delete(upline)
  78. line.delete(dnline)
  79. condhigh := math.max(condhigh, high)
  80. condlow := math.min(condlow, low)
  81. condlow
  82.  
  83. upline := line.new(bar_index, condhigh, bar_index - conscnt, condhigh, color=color.red, style=line.style_dashed)
  84. dnline := line.new(bar_index, condlow, bar_index - conscnt, condlow, color=color.lime, style=line.style_dashed)
  85. dnline
  86.  
  87. fill(plot(condhigh, color=na, style=plot.style_stepline), plot(condlow, color=na, style=plot.style_stepline), color=paintcons and conscnt > conslen ? zonecol : color.new(color.white, 100), transp=90)
  88.  
  89. alertcondition(breakoutup, title='Breakout Up', message='Breakout Up')
  90. alertcondition(breakoutdown, title='Breakout Down', message='Breakout Down')
  91.  
  92.  
Advertisement
Add Comment
Please, Sign In to add comment