Skip to content
SmartFinanceData
Start Here Strategies Lessons Data Insights Tools Contact
View All Pairs
FX Pairs Methodology Testimonials FAQ View All Pairs

Master the Stochastic Momentum Index (SMI)

An advanced oscillator that measures price momentum to pinpoint overbought/oversold zones and potential trend reversals.

What is the SMI?

The Stochastic Momentum Index (SMI), developed by William Blau, is a powerful refinement of the traditional Stochastic Oscillator. Instead of just tracking the closing price's position relative to its range, the SMI measures the closing price's distance from the *midpoint* of that range. This unique calculation provides a clearer, less erratic view of market momentum.

Oscillator Momentum Indicator Forex & Stocks

How The Calculation Works

The SMI's strength comes from its double-smoothing process, which helps filter out market noise. Here's a simplified breakdown of the steps:

  1. Find the Range: Identify the highest high and lowest low over a specific period (e.g., 14 candles).
  2. Calculate the Midpoint: The midpoint is simply $ \frac{\text{Highest High} + \text{Lowest Low}}{2} $.
  3. Measure the Difference: Calculate the distance from the current close to the midpoint: $\text{Current Close} - \text{Midpoint}$.
  4. Double Smooth: This difference, along with the total range, is double-smoothed using Exponential Moving Averages (EMAs). This is the key step that reduces false signals.
  5. Normalize the Value: The final result is normalized to oscillate between $-100$ and $+100$.

Core Trading Strategies with SMI

1. Overbought & Oversold Levels

The most common use. When the SMI line moves above $+40$, the market is considered overbought and may be due for a pullback. When it drops below $-40$, it's considered oversold and may be poised for a rally.

2. Signal Line Crossovers

Many traders add a signal line (an EMA of the SMI itself). A bullish signal occurs when the SMI crosses *above* the signal line from below. A bearish signal occurs when it crosses *below* from above.

3. Divergence

A powerful reversal signal. If the price is making new highs but the SMI is making lower highs (bearish divergence), the uptrend may be losing steam. Conversely, if price makes new lows but the SMI forms higher lows (bullish divergence), the downtrend could be ending.

Advanced SMI Concepts: Center Line & Mean Reversion

Unlike other oscillators that focus primarily on $0$ or $50$ as a neutral point, the SMI is centered around $0$. This center line is crucial for gauging the overall market bias.

  • Above 0 Line: When the SMI line is consistently above $0$, it signals that the closing price is generally staying above the midpoint of the look-back range. This is a strong indication of **bullish momentum**.
  • Below 0 Line: Conversely, when the SMI is below $0$, the closing price is typically below the midpoint, signaling **bearish momentum**.
  • Mean Reversion: Trading signals become stronger when the SMI is attempting to cross the $0$ line after an extreme reading. For example, a move from oversold (below $-40$) back across the $0$ line suggests a confirmed momentum shift to the upside.

Combining SMI with Price Action

No indicator should be used in isolation. The SMI works best when its signals are confirmed by clear price action patterns on the chart.

  • Breakouts: If the SMI signals an oversold condition (potential buy) and the price subsequently breaks a key resistance level, the signal is high-probability.
  • Support/Resistance: Only take buy signals (oversold bounce) when the price is near a major support zone. Ignore oversold signals if the price is falling into 'no man's land'.
  • Confirmation: Use candle patterns (like engulfing candles or hammers) *after* the SMI gives a signal. For instance, wait for a bullish engulfing candle to form at the oversold level before taking a long trade.

SMI in MetaTrader (MQL4)

While not a default indicator, you can code a custom SMI in MQL4. Here is a more complete logic snippet demonstrating the use of $ \text{iMA} $ for the EMA smoothing.

// MQL4 Example for a custom SMI indicator buffer calculation
for(int i = limit; i >= 0; i--) {
  double highestHigh = iHighest(Symbol(), 0, MODE_HIGH, Period, i);
  double lowestLow = iLowest(Symbol(), 0, MODE_LOW, Period, i);

  double midpoint = (highestHigh + lowestLow) / 2.0;
  double range = highestHigh - lowestLow;

  // Calculate price difference from midpoint
  priceDiffBuffer[i] = Close[i] - midpoint;
  rangeBuffer[i] = range;

  // First EMA smoothing
  ema1_diff[i] = iMAOnArray(priceDiffBuffer, 0, Smooth1, 0, MODE_EMA, i);
  ema1_range[i] = iMAOnArray(rangeBuffer, 0, Smooth1, 0, MODE_EMA, i);

  // Second EMA smoothing
  ema2_diff[i] = iMAOnArray(ema1_diff, 0, Smooth2, 0, MODE_EMA, i);
  ema2_range[i] = iMAOnArray(ema1_range, 0, Smooth2, 0, MODE_EMA, i);

  // Final SMI calculation: SMI = [ (EMA2 of Price Diff) / (EMA2 of Range / 2) ] * 100
  if (ema2_range[i] != 0) {
    SMI_Buffer[i] = (ema2_diff[i] / (ema2_range[i] / 2.0)) * 100.0;
  } else {
    SMI_Buffer[i] = 0;
  }
}

Test Your Knowledge: SMI Quiz

1. What is the key difference in how SMI measures momentum compared to the traditional Stochastic Oscillator?

2. In SMI trading, what typically signals an Overbought condition?

3. What is Bearish Divergence in the context of SMI?

Quiz Score:

SMI Concept Calculator

Result

-

Enter values to see result

-100 Oversold (-40) 0 Overbought (+40) +100
SmartFinanceData

Providing traders with statistically-backed market probabilities since 2020.

Company

  • About
  • Blog
  • Features
  • Contact Us

Resources

  • Our Process
  • Dashboard (Beta)
  • Calculator Hub
  • Help/FAQ's

Legal

  • Privacy Policy
  • Terms of Service
  • Disclaimer

Subscribe to our newsletter

The latest insights, articles, and resources, sent to your inbox weekly.

© 2025 FX Insights. All rights reserved.