Ultimate RSI indicator

Category: Indicators By: Iván González Created: July 18, 2025, 10:25 AM
July 18, 2025, 10:25 AM
Indicators
0 Comments

1. Introduction

The Ultimate RSI by LuxAlgo is an enhanced version of the classic Relative Strength Index (RSI), designed to provide smoother, more responsive momentum readings and clearer overbought/oversold signals.

By combining an “augmented” computation of price change with selectable smoothing methods and a dedicated signal line, this indicator aims to reduce whipsaws and highlight only the most reliable turning points in price action.

2. What Is the Ultimate RSI?

The Ultimate RSI builds upon the traditional RSI by:

  • Augmented Price Difference: Instead of simply using the raw change in price, it adjusts differences when new highs or lows occur over the lookback period, strengthening signals when momentum breaks out.

  • Customizable Smoothing: Offers multiple smoothing types (Simple, Exponential, Wilder’s, Double SMAs) for both the numerator and denominator of the RSI calculation, as well as for its signal line.

  • Dedicated Signal Line: A moving average of the RSI itself that can be tuned separately, making crossovers more meaningful.

Compared to a standard RSI, the Ultimate RSI filters out noise more effectively, helping traders focus on sustained momentum shifts rather than fleeting spikes.

3. How It Works and Is Calculated

  1. Define Inputs

    • length: lookback period for highs/lows and smoothing (default 14)

    • smotype1: type of smoothing for the augmented RSI (1=SMA, 2=Wilder, 3=EMA, 4=Double SMA)

    • src: price series (default close)

    • smooth: period for the signal line moving average (default 14)

    • smotype2: smoothing type for the signal line (same options as above)

    • obValue / osValue: overbought/oversold thresholds (default 80/20)

  2. Augmented Price Range

    upper = highest[length](src)
    lower = lowest[length](src)
    r = upper - lower

    Computes the high–low range over length.

  3. Adjusted Price Difference (diff)

    if upper > upper[1] then
      diff = r            // New high: momentum up
    else if lower < lower[1] then
      diff = -r           // New low: momentum down
    else
      diff = src - src[1] // Otherwise, use raw change
    endif

    Strengthens moves when price breaks the recent range.

  4. Compute Smoothed A-RSI (arsi)

    • Apply chosen smoothing (smotype1) separately to diff (numerator) and abs(diff) (denominator).

    • Calculate:

      arsi = num/den * 50 + 50

      Places values between 0 and 100.

  5. Signal Line

    • Smooth the arsi series over smooth bars using smotype2.

    • Encourages crossovers to act as clearer entry/exit triggers.

4. Interpreting Signals

  • Overbought/Oversold Levels

    • Readings above 80 suggest overbought conditions; below 20, oversold.

    • Colored bands appear behind the arsi line to highlight these zones.

  • RSI / Signal Crossovers

    • A bullish entry is flagged when arsi crosses above its signal line in or near the oversold region.

    • A bearish exit (or short entry) occurs when arsi crosses below its signal line near overbought.

  • Avoiding Noise

    • By reinforcing momentum only on genuine highs/lows and applying robust smoothing, the Ultimate RSI aims to ignore choppy, indecisive price moves.

5. Inputs and Configuration

Parameter Default Description
length 14 Lookback for highs/lows and smoothing.
smotype1 3 (EMA) Smoothing for the augmented RSI: 1=SMA, 2=Wilder’s, 3=EMA, 4=Double SMA.
src Close Source price series.
smooth 14 Period for the signal line moving average.
smotype2 1 (SMA) Smoothing for the signal line (same options as smotype1).
obValue 80 Overbought threshold.
osValue 20 Oversold threshold.
  • Adjusting Sensitivity

    • Shorter length → more responsive but risk of noise.

    • Longer length → smoother, fewer signals.

    • Higher smoothing types (e.g., Wilder’s) tend to lag more but filter noise.

6. Practical Usage Examples

  • Trend Confirmation on Daily Chart

    • Use default settings to confirm daily momentum before following breakouts.

    • Only take signals when the broader trend (e.g., 50-bar moving average) aligns.

  • Fast Entries on Lower Timeframes

    • Reduce length to 8–10, switch smotype1 to EMA for quicker response.

    • Use the crossover of arsi above signal near the 30 level for long entries.

  • Divergence Detection

    • Plot price highs/lows against Ultimate RSI peaks/troughs.

    • Look for hidden or regular divergences to anticipate reversals.

7. Code

Below is the full ProBuilder script for the Ultimate RSI. Each section is annotated for clarity:

//---------------------------------------------//
//PRC_Ultimate RSI [LuxAlgo]
//version = 0
//14.03.25
//Iván González @ www.prorealcode.com
//Sharing ProRealTime knowledge
//---------------------------------------------//
// inputs
//---------------------------------------------//
src=close
length=14
smotype1=3
smooth=14
smotype2=1
obValue=80
osValue=20
//---------------------------------------------//
// Augmented RSI
//---------------------------------------------//
upper=highest[length](src)
lower=lowest[length](src)
r=upper-lower

d=src-src[1]
if upper>upper[1] then
diff=r
else
if lower<lower[1] then
diff=-r
else
diff=d
endif
endif
//---------------------------------------------//
// Moving average
//---------------------------------------------//
if smotype1=1 then
num=average[length,1](diff)
den=average[length,1](abs(diff))
elsif smotype1=2 then
num=average[length,0](diff)
den=average[length,0](abs(diff))
elsif smotype1=3 then
alpha = 1/length
if barindex = length then
num = average[length](diff)
den = average[length](abs(diff))
else
num = alpha*diff + (1-alpha)*num[1]
den = alpha*abs(diff) + (1-alpha)*den[1]
endif
elsif smotype1=4 then
num=average[length](average[length](diff))
den=average[length](average[length](abs(diff)))
endif
arsi=num/den*50+50
//---------------------------------------------//
// Signal
//---------------------------------------------//
if smotype2=1 then
signal=average[smooth,1](arsi)
elsif smotype2=2 then
signal=average[smooth,0](arsi)
elsif smotype2=2 then
alpha = 1/smooth
if barindex = smooth then
signal = average[smooth](arsi)
else
signal = alpha*arsi + (1-alpha)*signal[1]
endif
elsif smotype1=3 then
signal=average[smooth](average[smooth](arsi))
endif
//---------------------------------------------//
// Plot
//---------------------------------------------//
if arsi>obvalue then
r1=0
g1=255
b1=0
a1=255
a3=0
elsif arsi<osvalue then
r3=255
g3=0
b3=0
a3=255
a1=0
else
a1=0
a3=0
endif
colorbetween(obvalue,arsi,r1,g1,b1,a1*0.3)
colorbetween(osvalue,arsi,r3,g3,b3,a3*0.3)
//---------------------------------------------//
return obValue style(dottedline),osValue style(dottedline),50 style(dottedline), arsi, signal as "Signal line"coloured("orange")style(line,2)

8. Conclusion and Final Tips

The Ultimate RSI from LuxAlgo offers a sophisticated twist on the classic oscillator, combining dynamic range detection with flexible smoothing to deliver clearer, more actionable momentum readings. To get the most out of it:

  • Align entries with higher-timeframe trends.

  • Experiment with smoothing types to find your ideal balance of responsiveness vs. noise filtering.

  • Use the signal line crossovers in conjunction with traditional support/resistance or chart patterns.

Download
Filename: PRC_Ultimate-RSI.itf
Downloads: 148
Iván González Master
Code artist, my biography is a blank page waiting to be scripted. Imagine a bio so awesome it hasn't been coded yet.
Author’s Profile

Comments

Logo Logo
Loading...