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