TradeInsight

What is the Stochastic Momentum Index?

Understand the Stochastic Momentum Index (SMI), a powerful technical indicator for identifying momentum and overbought/oversold conditions in trading.

Introduction to the Stochastic Momentum Index (SMI)

The Stochastic Momentum Index (SMI) is a technical analysis indicator developed by William Blau. It builds on the traditional Stochastic Oscillator by measuring the momentum of price movements relative to a range, rather than just the position of the closing price. Traders use SMI to identify overbought or oversold conditions and potential trend reversals in markets like forex, stocks, and commodities.

Key Concepts

How SMI Works

The SMI calculates the difference between the current closing price and the midpoint of the high-low range over a specified period (e.g., 14 periods). This difference is then normalized and smoothed with EMAs to produce a value between -100 and +100. A signal line (often a 3-period EMA of the SMI) is added for crossover signals.

Formula (simplified):
SMI = 100 * (EMA(EMA(Close - Midpoint)) / EMA(EMA(High - Low)))
Where Midpoint = (Highest High + Lowest Low) / 2 over the period.

Trading with SMI

SMI in MetaTrader (MQL4)

In MetaTrader 4, you can use the built-in SMI indicator or code a custom one using MQL4. The iSMI function isn’t standard, so traders often implement it manually with arrays and EMAs.

// Example: Basic SMI calculation logic in MQL4
double CalculateSMI(int period, int smooth1, int smooth2)
{
   double high = iHighest(NULL, 0, MODE_HIGH, period, 1);
   double low = iLowest(NULL, 0, MODE_LOW, period, 1);
   double midpoint = (high + low) / 2;
   double diff = Close[1] - midpoint;
   // Apply EMA smoothing (simplified)
   return diff; // Full implementation requires EMA functions
}
            

Try It Yourself

Add the SMI indicator to MetaTrader 4 from the Navigator (if available) or code it using MQL4 to analyze price momentum on your charts.

SMI Interpretation Example:

SMI = +45 (Overbought) | SMI = -50 (Oversold)