Advertisement
aaahopper

Hancock rsi

Sep 2nd, 2020
501
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.62 KB | None | 0 0
  1. //@version=4
  2. study("Personal Trade Points",overlay=true,max_bars_back=5000)
  3.  
  4. // Hancock - RSI Volume ════════════════════════════════════════════════════════
  5. // ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  6. //study("Hancock - RSI Volume", overlay = false, max_bars_back = 5000)
  7. showVrsi = input(true, title = "RSI Volume Trades ═══════════════════")
  8. values = input(close, title = "RSI vol Source")
  9. //use_wicks = input(true, title = "Volume - Weighted Wicks", type = input.bool)
  10. use_wicks = input(defval = 'Yes', title = "Use Vol Weighted Wicks", options = ['Yes', 'No'])
  11.  
  12. rsi_length = input(29, title = "RSI - Length", type = input.integer, minval = 1, step = 1)
  13. rsiOverbought = input(78, title = "RSI - Overbought", type = input.integer, minval = 50, maxval = 100, step = 1)
  14. rsiOvesold = input(22, title = "RSI - Oversold", type = input.integer, minval = 0, maxval = 50, step = 1)
  15.  
  16. //=========================================================================================================
  17. get_volume_up_wicks() =>
  18.  
  19. up = 0.0
  20. is_up = close > open
  21. is_down = close < open
  22.  
  23. if (is_up)
  24. wick_top = high - close
  25. wick_bot = open - low
  26. body = close - open
  27. diff = values / ((wick_top * 2) + body + (wick_bot * 2))
  28. up := diff * (wick_top + body + wick_bot)
  29.  
  30. if (is_down)
  31. wick_top = high - open
  32. wick_bot = close - low
  33. body = open - close
  34. diff = values / ((wick_top * 2) + body + (wick_bot * 2))
  35. up := diff * (wick_top + wick_bot)
  36. up
  37.  
  38. get_volume_down_wicks() =>
  39.  
  40. down = 0.0
  41. is_up = close > open
  42. is_down = close < open
  43.  
  44. if (is_up)
  45. wick_top = high - close
  46. wick_bot = open - low
  47. body = close - open
  48. diff = values / ((wick_top * 2) + body + (wick_bot * 2))
  49. down := diff * (wick_top + wick_bot)
  50.  
  51. if (is_down)
  52. wick_top = high - open
  53. wick_bot = close - low
  54. body = open - close
  55. diff = values / ((wick_top * 2) + body + (wick_bot * 2))
  56. down := diff * (wick_top + body + wick_bot)
  57. down
  58.  
  59. //=========================================================================================================
  60. get_volume_up(w) => w ? get_volume_up_wicks() : open <= close ? values : 0
  61. get_volume_down(w) => w ? get_volume_down_wicks() : open > close ? values : 0
  62.  
  63. get_elapsed_time() =>
  64. min((time - time[1]), (timenow - time)) / (60 * 1000)
  65.  
  66. get_resolution_minutes(r) =>
  67. multiplier = timeframe.multiplier
  68. result =
  69. timeframe.isseconds ? multiplier / 60 :
  70. timeframe.isintraday ? multiplier :
  71. timeframe.isdaily ? multiplier * 1440 :
  72. timeframe.isweekly ? multiplier * 10080 :
  73. timeframe.ismonthly ? multiplier * 43800 : na
  74.  
  75. get_bar_index(r) =>
  76. get_elapsed_time() / get_resolution_minutes(r)
  77.  
  78. sum_volume(v, r) =>
  79. index = get_bar_index(r)
  80. sum = cum(v)
  81. sum - sum[nz(index, 1)]
  82.  
  83. get_corrected_volume() =>
  84. up = sum_volume(get_volume_up(use_wicks=="Yes"),1)
  85. down = sum_volume(get_volume_down(use_wicks=="Yes"),1)
  86. d = volume / nz(up + down, 1)
  87. [up * d, down * d, (up + down) * d]
  88.  
  89. get_wilder_average(v, l) =>
  90. float avg = 0.0
  91. avg := (v + nz(avg[1] * (l - 1))) / l
  92. avg
  93.  
  94. get_rsi_volume(v, u, d, l) =>
  95. e = abs(v - v[1])
  96. up = get_wilder_average(v > v[1] ? e * u : 0, l)
  97. down = get_wilder_average(v < v[1] ? e * d : 0, l)
  98.  
  99. r = 100 * (up / (up + down))
  100.  
  101. [vol_up, vol_down, vol_total] = get_corrected_volume()
  102.  
  103. rsi_hl = get_rsi_volume(values, vol_up, vol_down, rsi_length)
  104.  
  105. //Threshold
  106. rsi_both = crossover(rsiOvesold, rsi_hl) == 1 ? true : false
  107. rsi_toph= crossover(rsiOverbought, rsi_hl) == 1 ? true : false
  108. plotshape(showVrsi?rsi_both:na, location=location.belowbar, style=shape.labelup, color=color.blue, size=size.small, text=" ", textcolor=color.white, transp=0, offset=0)
  109. plotshape(showVrsi?rsi_toph:na, location=location.abovebar, style=shape.labeldown, color=color.red, size=size.small, text=" ", textcolor=color.white, transp=0, offset=0)
  110.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement