| 
 PureBytes Links 
Trading Reference Links 
 | 
Hi! 
Can someone convert the following free indicators & systems which I got from Angus Jackson into ELA format? 
Thanks in advance. 
Free indicators for Tradestation. 
INDICATORS 
DOUBLE SMOOTHED EXPONENTIAL MOVING AVERAGE 
Inputs:    Price(Close), Length(30); Vars:    X1(0), X2(0), Dema1(0); 
X1= XAverage(Price,Length); X2= XAverage(XAverage(Price,Length),Length); 
DEMA1 = X1 * 2 - X2; 
Plot1(Dema1, "DEMA1"); 
 
MOVING AVERAGE ADJUSTER 
 
INPUT: NUM(10), avglen(5), thold(10); 
Value1 = H - lowest ( H , 60 ) ; Value2 = L - highest ( L , 60 ) ; 
Value9 =average( Maxlist(0,value1),avglen); Value10 =average( Minlist(0,value2),avglen); 
Value11 = (value9 + value10) * SquareRoot(num) ; plot1(value11,"ax"); 
if value11 < 0 then begin plot2(-thold,"di-"); If Value11 < average(value11[1],2) then Plot4(0,"TrendStart"); end; 
if value11 > 0 then begin plot3( thold,"di+"); If Value11 > average(value11[1],2) then Plot4(0,"TrendStart") ; end; 
FLOW OSCILLATOR 
Inputs: M(10), LookBack(14); Plot1(-MO(M,LookBack),"FLOWOsc"); VARIABLE VOLATILITY STOPS INPUT: LENGTH (21), CONST(3.05); 
vaR: SWITCH(1), TR(0), ARC(0), SAR(0),HISIC(0),LOSIC(0); 
TR= VOLATILITY (LENGTH); ARC= TR* CONST; IF CURRENTbar = length then begin hisic=c; losic=c; if h>= xaverage (h,length-1) [1] then begin hisic= highest(c,length); Sar=hisic-arc; switch= 1; end; if l <= xaverage (l,length-1) [1] then begin losic= lowest (c,length); sar = losic +arc; switch=0; end; end; 
if switch =1 then begin if c>hisic then hisic=c; sar=hisic - arc; if c< sar then begin switch=0; losic=c; sar = losic + arc; end; 
end; if switch=0 then begin if c< losic then losic=c; sar= losic +arc; if c> sar then begin switch=1; hisic=c; saR=HISIC- ARC; END; END; 
IF C > SAR { AND C[1] < SAR } THEN  
Plot1(SAR,"Sell"); 
IF C < SAR { AND C[1] > SAR} THEN 
Plot2(sar,"Buy"); 
 
SWING TRADER TRENDLINE 
Inputs: Strength(5), TLAlrt("TRUE"), ColorCur(Tool_White), ShowHis("TRUE"), ColorHis(Tool_Magenta); Vars: TL3(0), TL4(0), TL3Val(0), HFlag(0), Count(0); Array: SwingHD[4](0), SwingHT[4](0), SwingHP[4](0); 
IF SwingHighBar(1, High, Strength, Strength + 1) = Strength Then Begin Plot1[Strength](SwingHigh(1, High, Strength, Strength + 1), "SwingHigh"); For Count = 4 DownTo 2 Begin SwingHD[Count] = SwingHD[Count -1]; SwingHT[Count] = SwingHT[Count -1]; SwingHP[Count] = SwingHP[Count -1]; End; SwingHD[1] = Date[Strength]; SwingHT[1] = Time[Strength]; SwingHP[1] = High[Strength]; IF HFlag = -1 Then Begin IF UpperStr(ShowHis) = "TRUE" Then Begin TL3Val = TL_GetValue(TL3, SwingHD[1], SwingHT[1]); TL4 = TL_New(SwingHD[3], SwingHT[3], SwingHP[3], SwingHD[1], SwingHT[1], TL3Val); TL_SetColor(TL4, ColorHis); End; TL_Delete(TL3); End; HFlag = 1; End; 
IF SwingHD[4] <> 0 AND HFlag = 1 Then Begin TL3 = TL_New(SwingHD[2], SwingHT[2], SwingHP[2], SwingHD[1], SwingHT[1], SwingHP[1]); TL_SetExtRight(TL3, True); TL_SetColor(TL3, ColorCur); IF UpperStr(TLAlrt) = "TRUE" Then TL_SetAlert(TL3, 1); HFlag = -1; End; 
 
SWING WAVE INDICATOR 
Vars: VLineUp(0),VLineDn(0),Highest(0),Lowest(0),JustChanged(FALSE),VLine(0); 
 
Array: Highs[22](0),Lows[22](0),Range[22](0),UpWave[1](FALSE),DnWave[1](FALSE); 
{MaxBarsBack = 21} 
JustChanged = FALSE; 
if CurrentBar <= 21 then begin Highs[CurrentBar] = Close; Lows[CurrentBar] = Close; Range[CurrentBar] = (High - Low) /2; end; 
if CurrentBar = 22 then begin if Highs[21] >= Highs[20] then begin UpWave[1] = TRUE; Highest = Highs[21]; VLineUp = Highest - (3 * Average((High - Low),21)); Plot1(VLineUp,"VLineUp"); end; 
 
if Highs[21] < Highs[20] then begin DnWave[1] = TRUE; Lowest = Lows[21]; VLineDn = Lowest + (3 * Average((High - Low),21)); Plot2(VLineDn,"VLineDn"); end;     end; 
if CurrentBar > 22 then begin 
 
 
 
if DnWave[1] and Close > VLineDn then begin {WAVE CHANGE} DnWave[1] = FALSE; UpWave[1] = TRUE; JustChanged = TRUE; Highest = Close; Lowest = 0; end; 
if UpWave[1] and Close < VLineUp and JustChanged = FALSE then begin {WAVE CHANGE} UpWave[1] = FALSE; DnWave[1] = TRUE; JustChanged = TRUE; Lowest = Close; Highest = 0; end; 
 
if JustChanged = FALSE then begin if Close > Highest then Highest = Close else if Close < Lowest then Lowest = Close;      end; 
{CALCULATIONS AND PLOT STATMENTS} VLineUp = Highest - (3 * Average((High - Low),21)); VLineDn = Lowest + (3 * Average((High - Low),21)); 
if UpWave[1] then Plot1(VLineUp,"VLineUp") else if DnWave[1] then Plot2(VLineDn,"VLineDn"); 
end; 
 
 
 
SYSTEMS 
 
 
Dual time frame moving average 
 
 
Inputs: Price(Close), Length(13); 
IF XAverage(Price,Length) > XAverage(Price,Length)[1] and XAverage(Price,Length) of data2 > XAverage(Price,Length)[1] of data2 then Buy this bar on Close; 
IF XAverage(Price,Length) < XAverage(Price,Length)[1] then ExitLong this bar on Close; 
IF XAverage(Price,Length) < XAverage(Price,Length)[1] and XAverage(Price,Length) of data2 < XAverage(Price,Length)[1] of data2 then Sell this bar on Close; 
 
Delayed Channel Breakout 
 
 
{ 
This Breakout system will only enter if we have waited "X_Bars" after a Breakout and we are still above/below the BO price. } Input:Len(13),X_Bar(6); vars:HighBO(false),LowBO(false),x(0),HighBOPrice(0),LowBOPrice(0); 
HighBOPrice = Highest(high,Len)[1]; LowBOPrice = Lowest(low,Len)[1]; 
HighBO = high > HighBOPrice; LowBO = low < LowBOPrice; 
if HighBO[X_Bar] then Buy at HighBOPrice[X_Bar] + 1 point stop; if LowBO[X_Bar] then Sell at LowBOPrice[X_Bar] - 1 point stop; 
 
True Range Breakout 
 
Input:Period(20); 
Condition1=range < Average(range,Period); 
{LongEntry} If Condition1 then Buy at Open of tomorrow + range Stop; 
 
 
{ShortEntry} If Condition1 then Sell at Open of tomorrow - range Stop; 
 
Divergence 
 
Input: Osc(RSI(Close,14)); IF BullishDivergence(Close,Osc,2,30) = 1 Then Buy Highest(High,5) + 1 point Stop; IF BearishDivergence(Close,Osc,2,30) = 1 Then Sell Lowest(Low,5) - 1 point Stop; 
 
 
R  OSCILLATOR 
 
 
Input: AvgLen(30),PrctRLen(10),BuyLvl(20),SellLvl(80); IF CurrentBar > 1 and Average(Close,AvgLen) > Average(Close,AvgLen)[1] and PercentR(PrctRLen) < BuyLvl Then Buy on Close; IF CurrentBar > 1 and Average(Close,AvgLen) < Average(Close,AvgLen)[1] and PercentR(PrctRLen) > SellLvl Then Sell on Close; Turtle  Inputs:EntryLen(20),ExitLen(10); 
If Close > Highest(Close,EntryLen)[1] then buy( "LEntry") on Close; If Close < Lowest(Close,EntryLen)[1] then Sell("SEntry") on Close; 
If Close > Highest(Close,ExitLen)[1] then ExitShort from entry( "SEntry") on Close; If Close < Lowest(Close,EntryLen)[1] then ExitLong from entry("LEntry") on Close; 
 
 
VOLATILITY REVERSALS 
 
Input: lkbk(5), Ent(.65); 
Value1 = Ent * AvgTrueRange(lkbk); 
{Long Entries} Buy next bar at Open of next bar + Value1 stop; 
 
{Short Entries} Sell next bar at Open of next bar - Value1 stop; 
 
 
 
_____________________________________ 
Warm Regards! 
Visavis  _____________________________________ 
 
 
 
 |