OPEN-SOURCE SCRIPT

Stochastic Momentum Index (SMI) Refurbished

Updated
▮Introduction

Stochastic Momentum Index (SMI) Indicator is a technical indicator used in technical analysis of stocks and other financial instruments.
It was developed by William Blau in 1993 and is considered to be a momentum indicator that can help identify trend reversal points.
Basically, it's a combination of the True Strength Index with a signal line to help identify turning points in the market.

SMI uses the stochastic formula to compare the current closing price of an asset with the maximum and minimum price range over a specific period.
He then compares this ratio to a short-term moving average to create an indicator that oscillates between -100 and +100.

When the SMI is above 0, it is considered positive, indicating that the current price is above the short-term moving average.
When it is below 0, it is considered negative, indicating that the current price is below the short-term moving average.

Traders use the SMI to identify potential trend reversal points.
When the indicator reaches an extreme level above +40 or below -40, a trend reversal is possible.
Furthermore, traders also watch for divergences between the SMI and the asset price to identify potential trading opportunities.

It is important to remember that the SMI is a technical indicator and as such should be used in conjunction with other technical analysis tools to get a complete picture of the market situation.


▮ Improvements

The following features were added:

1. 7 color themes, for TSI, Signal and Histogram.
2. Possibility to customize moving average type for TSI/Signal.
3. Dynamic Zones.
4. Crossing Alerts.
5. Alert points on specific ranges.
5. Coloring of bars according to TSI/Signal/Histogram.


▮ Themes

Examples:
snapshot
snapshot
snapshot
snapshot
snapshot


▮ About Dynamic Zones

'Most indicators use a fixed zone for buy and sell signals.
Here's a concept based on zones that are responsive to the past levels of the indicator.'

The concept of Dynamic Zones was described by Leo Zamansky ( Ph .D.) and David Stendahl, in the magazine of Stocks & Commodities V15:7 (306-310).
Basically, a statistical calculation is made to define the extreme levels, delimiting a possible overbought/oversold region.

Given user-defined probabilities, the percentile is calculated using the method of Nearest Rank.
It is calculated by taking the difference between the data point and the number of data points below it, then dividing by the total number of data points in the set.
The result is expressed as a percentage.

This provides a measure of how a particular value compares to other values in a data set, identifying outliers or values that are significantly higher or lower than the rest of the data.


▮ What to look for

1. Divergences/weakening of a trend/reversal:
snapshot
snapshot

2. Supports, resistances, pullbacks:
snapshot

3. Overbought/Oversold Points:
snapshot


▮ Thanks and Credits

- TradingView and PineCoders: for SMI and Moving Averages
- allanster: for Dynamic Zones
Release Notes
Added new themes:
snapshot

Customization of levels for coloring themes:
snapshot

Some fine tuning of default parameters.
Release Notes
Fixed the visibility of Dynamic Zones. It was lagging behind the histogram/columns/TSI.
Release Notes
Small fix in histogram theme and label
Release Notes
The TSI and signal lines were blurred by the histogram.
Release Notes
New features added.
(Examples images are from my other indicator DMI SMI which has common parameters).

- Added customization limits for gradient theme (last theme in the list, which is now number 26):
snapshot
snapshot

- New themes added:
snapshot

Some examples:
snapshot
snapshot
snapshot
snapshot
snapshot
snapshot
snapshot
snapshot
snapshot
snapshot
snapshot
snapshot
Release Notes
Minor fixes to default colors.
Release Notes
Minor fixes:
- The term "Opacity" was not correct. The correct one is "Transparency".
- The default fill transparency value has been changed to 30.
Release Notes
- Added a parameter to customize the Histogram transparency level.
This can be useful to make the graph less cluttered in certain situations.
Below is an example with the type changed from Histogram to Area (in the Style tab), and then with the transparency level at 70%:
snapshot

- New themes added.
The themes were reorganized by value ranges, in order to facilitate the choice and future implementations:
snapshot

10 to 15 → Spectrum Blue-Green-Red
20 to 21 → Monokai
30 to 31 → Spectrum White-Green-Red
40 to 41 → Green-Purple
50 to 51 → Blue-Red
60 to 61 → Blue-Yellow
70 to 71 → Green-Red
80 to 81 → Green
90 to 91 → Purple
100 to 107 → Blue
120 to 123 → Blue-Aqua
130 to 133 → Blue-Green
140 to 153 → Red
160 to 161 → Red-Yellow
170 to 171 → Red-White
180 to 185 → White-Black
190 to 191 → Spectrum Blue-Red

Codes 190, 191:
snapshot
snapshot

- Fine adjustments were made in the standard parameters of Levels for TSI's Theme and Signal's Theme aiming at a better visualization of the colors.

- Added 2 color gradient format theme option for Histogram.
Example:
snapshot

- Improved crossing alert messages. There are now 8 alerts available:
1. 'TSI crossing above Signal when within limits'
2. 'TSI crossing below the Signal when within limits'
3. 'TSI exiting the Dynamic Zone at the top'
4. 'TSI entering the Dynamic Zone at the top'
5. 'TSI exiting the Dynamic Zone at the bottom'
6. 'TSI entering the Dynamic Zone at the bottom'
7. 'TSI crossing above the centerline'
8. 'TSI crossing below the centerline'

There are now two ways to add alerts over here:
snapshot

In the first form, technically speaking, the alert() function is used. This is the fastest way and works best with automations.
Alerts are chosen via indicator parameters. That done, then just add the "Any alert()" alert, as indicated in circle 1.

The second way is more laborious, but allows individual insertion of alerts.
Note that in this case, the checkboxes mentioned above make no difference.

Due to the added alerts using the alert() function, I had to remove the timeframe parameterization.

* Note: the example images are from my other indicator named "DMI Stochastic Momentum Index" as the parameters are similar.
Release Notes
Added parameter to choose a different timeframe.
Release Notes
1. Added trend lines with breakouts (thanks to HoanGhetti - tradingview.com/script/85fU3JnE-Simple-Trendlines/)
2. Added divergence detector (thanks to TradingView - tradingview.com/chart/?solution=43000589127)
3. Minor fixes in tooltips.
4. Minor change in default colors.
5. TSI Long Length changed from 21 to 8.
6. TSI Short Length changed from 8 to 5.
7. Added a repaint option (thanks for PineCoders).
8. Added a new option for Histogram: "Multiplier".
Using longer periods, the histogram can become flattened, making it difficult to see. The multiplier solves that.
9. Added separate parameters for histogram.
10. Unecessaries 'var' removed.
11. Source for price changed from hl2 to close.
12. Added separate alerts for TSI crosses inside/outside Dynamic Zone, with separate bounds for both.
Crossing points were repositioned to facilitate visualization.
13. Removed alertcondition function to permit show divergence detector (due to limitation of maximum number of elements in screen).
Release Notes
[FIX] This indicator is the "SMI - Stochastic Momentum Index", and SMI is not the same as "SMII - Stochastic Momentum Index Ergodic Indicator".
The indicator here was behaving like SMII.

In short, SMII is the TSI (True Strength Index) with a signal line.
SMI and SMII may look the same, but the calculation is different.

This has now been corrected, and the indicator will behave like SMI in fact.

Sorry for the confusion.

snapshot

More info:

SMI - Stochastic Momentum Index:
tradingview.com/support/solutions/43000707882/

SMII - Stochastic Momentum Index Ergodic Indicator:
tradingview.com/support/solutions/43000594669/

SMIO - Stochastic Momentum Index Ergodic Oscillator:
tradingview.com/support/solutions/43000594671/

[FIX] Correction in the selection of timeframes and use of "repainting" according to the official documentation:
Higher-timeframe requests


[FIX] SMI's formula corrected to match the original one.
Now the value is multiplied by 200 instead of 100.
So the oscillator will be in the range of -100 to 100 instead of -50 to 50.

[NEW] Added option to show/hide labels of divergences and trend lines.
On a very tight screen this saves space and avoids visual pollution.

[NEW] Added options to customize highest, lowest and relative range sources on SMI calculation.

[MISC] Minor fixes and adjustment of default parameter values.
Centered OscillatorsdynamiczonesSMIStochastic OscillatorTrue Strength Index (TSI)TSI

Open-source script

In true TradingView spirit, the author of this script has published it open-source, so traders can understand and verify it. Cheers to the author! You may use it for free, but reuse of this code in publication is governed by House rules. You can favorite it to use it on a chart.

Want to use this script on a chart?


To contribute to my work:
⚡Bitcoin Lightning: forwardocean64@walletofsatoshi.com
🟠Bitcoin: bc1qv0j28wjsg6l8fdkphkmgfz4f55xpph893q0pdh
🔵PayPal: paypal.com/donate/?hosted_button_id=D9KRKY5HMSL9S
Also on:

Disclaimer