+1 888 340 6572

Oscillators > RMI (Alternative)

Article/Author: Unknown

Download: RMI-A.ELA

File Includes:

Indicator - RMI
Function - RMI

Category: Indicator > Oscillators


This is another version of Relative Momentum Index (RMI). Impressed with the Relative Strength Index's sensitivity to the number of look-back periods, yet frustrated with it's inconsistent oscillation between defined overbought and oversold levels, Mr. Altman added a momentum component to the RSI.

As mentioned, the RMI is a variation of the RSI indicator. Instead of counting up and down days from close to close as the RSI does, the RMI counts up and down days from the close relative to the close x-days ago where x is not necessarily 1 as required by the RSI). So as the name of the indicator reflects, "momentum" is substituted for "strength."


As an oscillator, the RMI exhibits the same strengths and weaknesses of other overbought / oversold indicators. During strong trending markets the RMI will remain at overbought or oversold levels for an extended period. However, during non-trending markets, the RMI tends to oscillate predictably between an overbought level of 70 to 90 and an oversold level of 10 to 30.

Since the RMI is based on the RSI, many of the same interpretation methods can be applied. In fact, many of these "situations" are more clearly manifest with the RMI than they are with the RSI.

Tops and Bottoms: The RMI usually tops above 70 and bottoms below 30. The

RMI usually forms these tops and bottoms before the underlying price chart.

Chart Formations: The RMI often forms chart patterns (such as head and shoulders or rising wedges) that may or may not be visible on the price chart.

Failure Swings: (Also known as support or resistance penetrations or breakouts.) This is where the RMI surpasses a previous high (peak) or falls below a recent low (trough).

Support and Resistance: The RMI shows, sometimes more clearly than the price chart, levels of support and resistance.

Divergence: As discussed above, this occurs when the price makes a new high (or low) that is not confirmed by a new RMI high (or low).

Note that a 20,1 parameter RMI is equivalent to a 20-period RSI. This is because the 1-day momentum parameter is calculating day-to-day price changes, which the standard RSI does by default. As the momentum parameter is increased, the oscillation range of the RMI becomes wider and the fluctuations become smoother.


Price - numeric series used in calculation of RSI
Length - number of bars of data to be included in calculation
Y - beginning condition

EasyLanguage Code:

Inputs: Price(C), Len(5), Y(10);

Vars: Counter(0), DownAmt(0), UpAmt(0), UpSum(0),
DownSum(0), UpAvg(0), DownAvg(0), MyRange(0), RMI(0);

If Currentbar < Y Then Begin
MyRange = Len;
UpSum = 0;
DownSum = 0;
For Counter = 0 to MyRange -1 begin
UpAmt = Price[Counter] - Price[Counter+Y]; if UpAmt >= 0 Then
DownAmt = 0
Else Begin
DownAmt = -UpAmt;
UpAmt = 0;
UpSum = UpSum + UpAmt;
DownSum = DownSum + DownAmt;
UpAvg = UpSum / MyRange;
DownAvg = DownSum / MyRange;

Else if Currentbar > Y Then Begin
UpAmt = Price[0] - Price[Y];
if UpAmt >= 0 then Begin
DownAmt = 0;
Else Begin
DownAmt = -UpAmt;
UpAmt = 0;
UpAvg = (UpAvg[1] * (MyRange - 1) + UpAmt) / MyRange;
DownAvg = (DownAvg[1] * (MyRange - 1) + DownAmt) / MyRange;
if UpAvg + DownAvg <> 0 Then
RMI = 100 * UpAvg / (UpAvg + DownAvg)
RMI = 0;
Plot1(RMI, "RMI")