Australian (ASX) Stock Market Forum

Autotrend Lines

Joined
30 November 2008
Posts
27
Reactions
0
Hello,
I have been sent an autotrend code that is coded in Easy language. Is there someone in the group who has seen something similar in an AFL code? It might be worthwhile trying to find such a code. I have tried but haven't found one as yet. Here is the code:

{
This indicator:
(1) INSERTS DnTL's/UpTL's connecting each new SwingHi/SwingLo with the next most
recent higher/lower SwingHi/SwingLo within the last 10 SwingHi's/SwingLo's;
(2) EXTENDS each new TL to the right and SETS it's color and alert type;
(3) TRUNCATES a DnTL/UpTL on the right when the next new DnTL/UpTL is drawn (if the
History input is set to "Yes"), or BarsPast bars after it has been breached,
whichever comes first.
(4) DELETES a DnTL/UpTL when the next new DnTL/UpTL is drawn, if the History input
is set to "No".

NOTE: This indicator may not work well with low-count tick bars, such as 10-tick bars,
etc., because the time resolution of the bars may not be high enough for each bar to
have a distinct time stamp.
}

inputs:
SwHiStrength( 4 ),
SwLoStrength( 4 ),
BarsPast( 10 ),
History( "Yes" ),
DnTLColor( Red ),
UpTLColor( Cyan ),
AlertType( "IntraBar" ) ;

variables:
DnTLRef( -1 ),
DnTLEndBar( 0 ),
DnTLBreak( false ),
DnTLColorNum( DnTLColor ),

UpTLRef( -1 ),
UpTLEndBar( 0 ),
UpTLBreak( false ),
UpTLColorNum( UpTLColor ),

Index( 0 ),
BarNum( 0 ),
HistoryTF( false ),
AlertTypeCAPS( UpperStr( AlertType ) ) ;

arrays:
SwHiDate[10]( 0 ),
SwHiTime[10]( 0 ),
SwHiVal[10]( -1000000 ),
SwLoDate[10]( 0 ),
SwLoTime[10]( 0 ),
SwLoVal[10]( 1000000 ) ;

if CurrentBar = 1 then
HistoryTF = UpperStr( History ) = "YES" or UpperStr( History ) = "Y" ;
{ should also be able to do this via declaration above }

BarNum = BarNumber ;

if SwingHighBar( 1, High, SwHiStrength, SwHiStrength + 1 ) = SwHiStrength then
{ ie, if just confirmed SwHi }
begin

{ push arrays back }
for Value1 = 9 downto 0
begin
SwHiDate[ Value1 + 1 ] = SwHiDate[Value1] ;
SwHiTime[ Value1 + 1 ] = SwHiTime[Value1] ;
SwHiVal[ Value1 + 1 ] = SwHiVal[Value1] ;
end ;

{ read in parameters of new SwHi into 0-elements of arrays }
SwHiDate[0] = Date[SwHiStrength] ;
SwHiTime[0] = Time[SwHiStrength] ;
SwHiVal[0] = High[SwHiStrength] ;

{ find and save the index of the next-most-recent higher SwHi if it exists }
for Value2 = 1 to 10
begin
if SwHiVal[Value2] > SwHiVal[0] then
begin
Index = Value2 ;
Value2 = 11 ; { short circuit the looping with 11 instead of 10; the 11
will become 12 in the final pass }
end ;
end ;

if Value2 = 12 then { ie, if next-most-recent higher SwHi exists }
begin
if DnTLRef >= 0 then { ie, if previous DnTL exists }
begin
if HistoryTF and DnTLBreak = false then
{ if history reqd and most recent DnTL not already truncated
elsewhere, truncate it now }
begin
TL_SetEnd( DnTLRef, Date, Time, TL_GetValue( DnTLRef, Date, Time ) ) ;
TL_SetExtRight( DnTLRef, false ) ;
end
else if HistoryTF = false then
{ if history not reqd, delete most recent DnTL }
TL_Delete( DnTLRef ) ;
end ;
{ draw new DnTL, reset break flag, save endbar, set extents/color/alert }
DnTLRef = TL_New( SwHiDate[Index], SwHiTime[Index], SwHiVal[Index],
SwHiDate[0], SwHiTime[0], SwHiVal[0] ) ;
if DnTLBreak = true then
DnTLBreak = false ;
DnTLEndBar = BarNum - SwHiStrength ;
TL_SetExtLeft( DnTLRef, false ) ;
TL_SetExtRight( DnTLRef, true ) ;
if DnTLColorNum <> 99 then
TL_SetColor( DnTLRef, DnTLColorNum ) ;
if AlertTypeCAPS = "ONCLOSE" then
TL_SetAlert( DnTLRef, 2 )
else if AlertTypeCAPS = "INTRABAR" then
TL_SetAlert( DnTLRef, 1 )
else
TL_SetAlert( DnTLRef, 0 ) ;
end ;
end ;

if SwingLowBar( 1, Low, SwLoStrength, SwLoStrength + 1 ) = SwLoStrength then
{ ie, if just confirmed SwLo }
begin

{ push arrays back }
for Value1 = 9 downto 0
begin
SwLoDate[Value1+1] = SwLoDate[Value1] ;
SwLoTime[Value1+1] = SwLoTime[Value1] ;
SwLoVal[Value1+1] = SwLoVal[Value1] ;
end ;

{ read in parameters of new SwLo into 0-elements of arrays }
SwLoDate[0] = Date[SwLoStrength] ;
SwLoTime[0] = Time[SwLoStrength] ;
SwLoVal[0] = Low[SwLoStrength] ;

{ find and save the index of the next-most-recent lower SwLo if it exists }
for Value2 = 1 to 10
begin
if SwLoVal[Value2] < SwLoVal[0] then
begin
Index = Value2 ;
Value2 = 11 ;{ short circuit the looping with 11 instead of 10; the 11
will become 12 in the final pass }
end ;
end ;

if Value2 = 12 then { ie, if next-most-recent lower SwLo exists }
begin
if UpTLRef >= 0 then { ie, if previous UpTL exists }
begin
if HistoryTF and UpTLBreak = false then
{ if history reqd and most recent UpTL not already truncated
elsewhere, truncate it now }
begin
TL_SetEnd( UpTLRef, Date, Time, TL_GetValue( UpTLRef, Date, Time ) ) ;
TL_SetExtRight( UpTLRef, false ) ;
end
else if HistoryTF = false then
{ if history not reqd, delete most recent UpTL }
TL_Delete( UpTLRef ) ;
end ;
{ draw new UpTL, reset break flag, save endbar, set extents/color/alert }
UpTLRef = TL_New( SwLoDate[Index], SwLoTime[Index], SwLoVal[Index],
SwLoDate[0], SwLoTime[0], SwLoVal[0] ) ;
if UpTLBreak = true then
UpTLBreak = false ;
UpTLEndBar = BarNum - SwLoStrength ;
TL_SetExtLeft( UpTLRef, false ) ;
TL_SetExtRight( UpTLRef, true ) ;
if UpTLColorNum <> 99 then
TL_SetColor( UpTLRef, UpTLColorNum ) ;
if AlertTypeCAPS = "ONCLOSE" then
TL_SetAlert( UpTLRef, 2 )
else if AlertTypeCAPS = "INTRABAR" then
TL_SetAlert( UpTLRef, 1 )
else
TL_SetAlert( UpTLRef, 0 ) ;
end ;
end ;

{ if most recent DnTL/UpTL exists AND has not yet been truncated here AND was drawn
at least BarsPast ago AND was breached BarsPast bars ago THEN truncate it here and
set break flag }

if DnTLRef >= 0
and DnTLBreak = false
and BarNum > DnTLEndBar + SwHiStrength + BarsPast
and ( Close > TL_GetValue( DnTLRef, Date, Time ) )[BarsPast]
then
begin
TL_SetEnd( DnTLRef, Date, Time, TL_GetValue( DnTLRef, Date, Time ) ) ;
TL_SetExtRight( DnTLRef, false ) ;
DnTLBreak = true ;
end ;

if UpTLRef >= 0
and UpTLBreak = false
and BarNum > UpTLEndBar + SwLoStrength + BarsPast
and ( Close < TL_GetValue( UpTLRef, Date, Time ) )[BarsPast]
then
begin
TL_SetEnd( UpTLRef, Date, Time, TL_GetValue( UpTLRef, Date, Time ) ) ;
TL_SetExtRight( UpTLRef, false ) ;
UpTLBreak = true ;
end ;


{ ** Copyright (c) 1991-2003 TradeStation Technologies, Inc. All rights reserved. **
** TradeStation reserves the right to modify or overwrite this analysis technique
with each release. ** }
Edit/Delete Message
 
Top