SMI Ergodic Indicator

The SMI Ergodic Indicator is the same as the True Strength Index (TSI) developed by William Blau, except the SMI includes a signal line. The SMI uses double moving averages of price minus previous price over 2 time frames. The signal line, which is an EMA of the SMI, is plotted to help trigger trading signals. Adjustable guides are also given to fine tune these signals. The user may change the input (close), method (EMA), period lengths and guide values. This indicator’s definition is further expressed in the condensed code given in the calculation below.

Click here for more information on the TSI.

SMI Ergodic Indicator1

How To Trade Using SMI Ergodic Indicator

Adjust the top and bottom guides to control the quantity and quality of the trading signals. In addition to the guides, if the SMI crosses the signal line a change in trend is predicted. If the SMI is above the top guide and crosses below the signal line a sell signal will be generated. Conversely, if the SMI is below the bottom guide and crosses above the signal line a buy signal will be given. The 0 line divides the bulls (above) from the bears (below).

SMI Ergodic Indicator2

How To Access in MotiveWave

Go to the top menu, choose Study>Oscillators>SMI Ergodic Indicator

or go to the top menu, choose Add Study, start typing in this study name until you see it appear in the list, click on the study name, click OK.

Important Disclaimer: The information provided on this page is strictly for informational purposes and is not to be construed as advice or solicitation to buy or sell any security. Please see our Risk Disclosure and Performance Disclaimer Statement.


//price (user defined, default is closing price)
//method = moving average (user defined, default is EMA)
//prevP = previousPrice
//abs = absolute value
//ma = moving average, index = current bar number
//MT = moreThan
//LT = lessThan

prevP = price[index-1];
change = price - prevP;
absChange = abs(price - prevP);
tempChange = ma(method, index, fastPeriod, change);
tempAbsC = ma(method, index, fastPeriod, absChange);
tempChange = ma(method, index, slowPeriod, tempChange);
tempAbsC = ma(method, index, slowPeriod, tempAbsC);
Plot1: SMI = tempChange / tempAbsC;
Plot2: SIGNAL = ma(method, index, sigPeriod, SMI);
highSell = smi for last sell signal, reset to max_negative at each  buy signal;
lowBuy = smi for last buy signal, reset to max_positive at each sell signal;
sell=crossedBelow(SMI, SIGNAL) AND smi MT topGuide  AND smi MT highSell;
buy=crossedAbove(SMI, SIGNAL) AND smi LT bottomGuide AND smi LT lowBuy;