Author: Andrey N. Bolkonsky
Stochastic Momentum Index (SMI) by William Blau is based on Stochastic Momentum Indicator (see Momentum, Direction, and Divergence: Applying the Latest Momentum Indicators for Technical Analysis).
Stochatic Momentum Index is normalized (to half of q-period price range) and mapped into the [–100,+100] interval. The values of SMI is interpreted as overbought (positive) and oversold (negative) states of the market.
- WilliamBlau.mqh must be placed in terminal_data_folder\MQL5\Include\
- Blau_SMI.mq5 must be placed in terminal_data_folder\MQL5\Indicators\
Calculation:
Stochastic Momentum Index is calculated by formula:
                        100*EMA(EMA(EMA( price-1/2*[LL(q)+HH(q)] ,r),s),u)            100 * SM(price,q,r,s,u)
SMI(price,q,r,s,u) = ————————————————————— = ————————————————-
                               EMA(EMA(EMA( 1/2*[HH(q)-LL(q)] ,r),s),u)        EMA(EMA(EMA( 1/2*[HH(q)-LL(q)] ,r),s),u)
where:
- price – close price;
- LL(q) – minimal price (q bars);
- HH(q) – maximal price (q bars);
- sm(price,q)=price-1/2*[LL(q)+HH(q)] – q-period Stochastic Momentum;
- SM(price,q,r,s,u) – triple smoothed q-period Stochastic Momentum;
- HH(q)-LL(q) – q-period price range;
- 1/2*[LL(q)+HH(q)] – midpoint of q-period price range;
- 1/2*[HH(q)-LL(q)] – half of q-period price range;
- EMA(…,r)Â – 1st smoothing- exponentially smoothed moving average with period r, applied to:
- to the Stochastic Momentum;
- to the half of q-period price range;
- EMA(EMA(…,r),s)Â – 2nd smoothing – EMA of period s, applied to result of the 1st smoothing;
- EMA(EMA(EMA(…,r),s),u) – 3rd smoothing – EMA of period u, applied to result of the 2nd smoothing.
Input parameters:
- q – period, used for the calculation of Stochastic Momentum (by default q=5);
- r – period of the 1st EMA, applied to stochastic (by default r=20);
- s – period of the 2nd EMA, applied to result of the 1st smoothing (by default s=5);
- u – period of the 3rd EMA, applied to result of the 2nd smoothing (by default u=3);
- AppliedPrice – price type (by default AppliedPrice=PRICE_CLOSE).
Note:
- q>0;
- r>0, s>0, u>0. If r, s or u =1, smoothing is not used;
- Min. rates=(q-1+r+s+u-3+1).