Super trend indicator construction
I’ve been doing more research into the super trend indicator construction and I think I finally understand exactly how it works. It’s basically an ATR trailing stop indicator. The two inputs for the indicator are number of periods and a multiplier. The number of periods lets call it (N) is used to get the ATR. So ATR(N). The default setting is 10. So N=10. It can be whatever value you want it to be but I think the most commonly used settings for ATR are 10 and 14.
The multiplier is simply a number greater than zero. The multiplier lets call it (M) is multiplied by the ATR(N) value which gives us a stop distance. This stop distance is then either added or subtracted (depending if up trend or down trend) from the median (mid) price. The median price is calculated by (high+low)/2.
Below is the code that can be used to program the indicator in proRealTime. I have put line numbers against each line of the code and will explain (or least attempt to explain) what is happening on each line of code.
- a = AverageTrueRange[periods](close)
- b = Multiplier
- if barindex < 2 then
- T = 1
- L1 = low
- H1 = high
- Else
- if T[1] = 1 then
- if close > L1[1] then
- L1 = MAX(L1[1],medianprice – a*b)
- ST = L1
- Else
- H1 = medianprice + a*b
- ST = H1
- T = -1
- Endif
- Else
- if close
- H1 = MIN(H1[1],medianprice + a*b)
- ST = H1
- REM if the close is greater or equal to the previous high
- Else
- L1 = medianprice – a* b
- ST = L1
- T = 1
- endif
- endif
- Endif
- Return ST
| Line No. | Explination |
|---|---|
| 1 | make a = ATR for number of periods based on the close price |
| 2 | make b = the multiplier value passed in by the user |
| 3 | if we are looking at the first bar (bar = 1) of the chart. So this would be the first entry we have in our chart. Then do the following: |
| 4 | Set T=1 (T is how we are defining our trend, T=1 is an uptrend, T=-1 is a down trend |
| 5 | Set L1 = low of the first bar on the chart |
| 6 | Set H1 = high of the first bar on the chart |
| 7 | if we are not looking at the first bar |
| 8 | if T[1] (the previous value for the trend) is 1 (so an uptrend) |
| 9 | if the close for the current bar is greater than, L1[1] (the previous value for L1) |
| 10 | set L1 to be the maximum value of the previous L1 value and the median price minus our ATR value |
| 11 | make ST equal to the new L1 value |
| 12 | if the close is less than or equal to L1[1] (the previous value for L1) |
| 13 | make H1 = median price plus our ATR value |
| 14 | make ST equal the new H1 value |
| 15 | Set T=-1 switching from up trend to down trend |
| 16 | ends the if statement started on line 9 |
| 17 | Else if T is not equal to 1 (so -1 or downtrend) |
| 18 | if the close is less than H1[1] (the previous value for H1) |
| 19 | set H1 to be the minimum value of the previous H1 value and the median price plus our ATR value |
| 20 | make ST equal to the new H1 value |
| 21 | else if close is greater than or equal to the H1[1](the previous value for H1) |
| 22 | make L1 = median price minus our ATR value |
| 23 | make ST equal to the new L1 value |
| 24 | set T =1 switching from downtrend to uptrend |
| 25 | ends the if statement started on line 18 |
| 26 | ends the if statement started on line 8 |
| 27 | ends the if statement started on line 3 |
| 28 | Return the value of ST (Super Trend) |
Below is the same super trend indicator code if you want to copy and paste it.
a = AverageTrueRange[periods](close)
b = Multiplier
if barindex < 2 then
T = 1
L1 = low
H1 = high
Else
if T[1] = 1 then
if close > L1[1] then
L1 = MAX(L1[1],medianprice - a*b)
ST = L1
Else
H1 = medianprice + a*b
ST = H1
T = -1
Endif
Else
if close < H1[1] then
H1 = MIN(H1[1],medianprice + a*b)
ST = H1
Else
L1 = medianprice - a* b
ST = L1
T = 1
endif
endif
Endif
Return ST
If you have any comments or feedback please post them on the forum