Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //@version=4
- study("Personal Trade Points",overlay=true,max_bars_back=5000)
- // Hancock - RSI Volume ════════════════════════════════════════════════════════
- // ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
- //study("Hancock - RSI Volume", overlay = false, max_bars_back = 5000)
- showVrsi = input(true, title = "RSI Volume Trades ═══════════════════")
- values = input(close, title = "RSI vol Source")
- //use_wicks = input(true, title = "Volume - Weighted Wicks", type = input.bool)
- use_wicks = input(defval = 'Yes', title = "Use Vol Weighted Wicks", options = ['Yes', 'No'])
- rsi_length = input(29, title = "RSI - Length", type = input.integer, minval = 1, step = 1)
- rsiOverbought = input(78, title = "RSI - Overbought", type = input.integer, minval = 50, maxval = 100, step = 1)
- rsiOvesold = input(22, title = "RSI - Oversold", type = input.integer, minval = 0, maxval = 50, step = 1)
- //=========================================================================================================
- get_volume_up_wicks() =>
- up = 0.0
- is_up = close > open
- is_down = close < open
- if (is_up)
- wick_top = high - close
- wick_bot = open - low
- body = close - open
- diff = values / ((wick_top * 2) + body + (wick_bot * 2))
- up := diff * (wick_top + body + wick_bot)
- if (is_down)
- wick_top = high - open
- wick_bot = close - low
- body = open - close
- diff = values / ((wick_top * 2) + body + (wick_bot * 2))
- up := diff * (wick_top + wick_bot)
- up
- get_volume_down_wicks() =>
- down = 0.0
- is_up = close > open
- is_down = close < open
- if (is_up)
- wick_top = high - close
- wick_bot = open - low
- body = close - open
- diff = values / ((wick_top * 2) + body + (wick_bot * 2))
- down := diff * (wick_top + wick_bot)
- if (is_down)
- wick_top = high - open
- wick_bot = close - low
- body = open - close
- diff = values / ((wick_top * 2) + body + (wick_bot * 2))
- down := diff * (wick_top + body + wick_bot)
- down
- //=========================================================================================================
- get_volume_up(w) => w ? get_volume_up_wicks() : open <= close ? values : 0
- get_volume_down(w) => w ? get_volume_down_wicks() : open > close ? values : 0
- get_elapsed_time() =>
- min((time - time[1]), (timenow - time)) / (60 * 1000)
- get_resolution_minutes(r) =>
- multiplier = timeframe.multiplier
- result =
- timeframe.isseconds ? multiplier / 60 :
- timeframe.isintraday ? multiplier :
- timeframe.isdaily ? multiplier * 1440 :
- timeframe.isweekly ? multiplier * 10080 :
- timeframe.ismonthly ? multiplier * 43800 : na
- get_bar_index(r) =>
- get_elapsed_time() / get_resolution_minutes(r)
- sum_volume(v, r) =>
- index = get_bar_index(r)
- sum = cum(v)
- sum - sum[nz(index, 1)]
- get_corrected_volume() =>
- up = sum_volume(get_volume_up(use_wicks=="Yes"),1)
- down = sum_volume(get_volume_down(use_wicks=="Yes"),1)
- d = volume / nz(up + down, 1)
- [up * d, down * d, (up + down) * d]
- get_wilder_average(v, l) =>
- float avg = 0.0
- avg := (v + nz(avg[1] * (l - 1))) / l
- avg
- get_rsi_volume(v, u, d, l) =>
- e = abs(v - v[1])
- up = get_wilder_average(v > v[1] ? e * u : 0, l)
- down = get_wilder_average(v < v[1] ? e * d : 0, l)
- r = 100 * (up / (up + down))
- [vol_up, vol_down, vol_total] = get_corrected_volume()
- rsi_hl = get_rsi_volume(values, vol_up, vol_down, rsi_length)
- //Threshold
- rsi_both = crossover(rsiOvesold, rsi_hl) == 1 ? true : false
- rsi_toph= crossover(rsiOverbought, rsi_hl) == 1 ? true : false
- 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)
- 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)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement