Function, name: ST1 


Inputs: 
ATRLength(NumericSimple), ATRMult(NumericSimple), STrend(NumericRef); 

vars: 
ATR(0), 
avg(0), 
dn(0), 
up(0), 
trend(1), 
flag(0), 
flagh(0), 
ST(0); 



ATR = AvgTrueRange(ATRLength) * ATRMult; 
avg = (high + low)/2; 
up = avg + ATR; 
dn = avg - ATR; 

if close > up[1] then 
trend = 1 
else if close < dn[1] then 
trend = -1; 

if trend < 0 and trend[1] > 0 then flag=1 else flag=0; 
if trend > 0 and trend[1] < 0 then flagh = 1 else flagh = 0; 

if trend > 0 and dn < dn[1] then dn=dn[1]; 
if trend < 0 and up > up[1] then up=up[1]; 

if flag = 1 then up = avg + ATR; 
if flagh = 1 then dn = avg - ATR; 

if trend = 1 then ST = dn else ST = up;
 
ST1 = ST;
STrend = trend; 


-----------------------------------------------------------------------

Indicator, name: Supertrend 1 


Inputs: 
ATRLength(10), ATRMult(3), UpColor(green), DnColor(red);

vars:
strend(0),
ST(0);

ST = ST1(ATRLength, ATRMult, strend);


Plot1(ST,"SuperTrend",iff(strend = 1,UpColor, DnColor));

