This indicator was requested by a member of ours. Here is his concept of the script:
Paintbars and arrows are being plotted by default. You can easily turn either one off via the indicator's setting. No need to touch the code.
- When volume is drying up while the RSI is overbought = bearish
- When volume is rising while the RSI is oversold = bullish
Paintbars and arrows are being plotted by default. You can easily turn either one off via the indicator's setting. No need to touch the code.

thinkScript Code
Code:
# Volume Based Reversal Candles
# When volume is drying up while it's overbought = bearish
# When volume is rising while it's oversold = bullish
# Assembled by BenTen at useThinkScript.com
input paintbar = yes;
input arrows = yes;
# Start RSI
input length = 14;
input over_Bought = 65;
input over_Sold = 35;
input price = close;
input averageType = AverageType.WILDERS;
def NetChgAvg = MovingAverage(averageType, price - price[1], length);
def TotChgAvg = MovingAverage(averageType, AbsValue(price - price[1]), length);
def ChgRatio = if TotChgAvg != 0 then NetChgAvg / TotChgAvg else 0;
def RSI = 50 * (ChgRatio + 1);
def OverSold = over_Sold;
def OverBought = over_Bought;
def bearish_vol = VOLUMEAVG(LENGTH = 20) < VOLUMEAVG(LENGTH = 20)[5];
def bullish_vol = VOLUMEAVG(LENGTH = 20) > VOLUMEAVG(LENGTH = 20)[5];
def bullish_signal = RSI(length = length, averageType = averageType) < over_Sold and bullish_vol;
def bearish_signal = RSI(length = length, averageType = averageType) > over_Bought and bearish_vol;
assignPriceColor(if paintbar and bullish_signal then color.green else if paintbar and bearish_signal then color.red else if paintbar then color.white else color.current);
# Plot Signals
plot bullish = if arrows and bullish_signal then bullish_signal else double.nan;
bullish.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_UP);
bullish.SetDefaultColor(Color.CYAN);
bullish.SetLineWeight(1);
plot bearish = if arrows and bearish_signal then bearish_signal else double.nan;
bearish.SetPaintingStrategy(PaintingStrategy.BOOLEAN_ARROW_DOWN);
bearish.SetDefaultColor(Color.CYAN);
bearish.SetLineWeight(1);
Last edited: