Jump to content

Welcome to the new Traders Laboratory! Please bear with us as we finish the migration over the next few days. If you find any issues, want to leave feedback, get in touch with us, or offer suggestions please post to the Support forum here.

  • Welcome Guests

    Welcome. You are currently viewing the forum as a guest which does not give you access to all the great features at Traders Laboratory such as interacting with members, access to all forums, downloading attachments, and eligibility to win free giveaways. Registration is fast, simple and absolutely free. Create a FREE Traders Laboratory account here.

raven4ns

Auto Trendlines

Recommended Posts

Hello,

Does anyone know of an auto trendline AFL they really like? There are a couple in the Amibroker library but they are not what I am looking for. Tradestation has an auto trendline indicator that is quite good I hear and so does Ensign. I tried the Ensign and it is excellent.

I would be very grateful if someone knew of such an AFL or would share it with me. Thank you for any and all help.

 

Kindest regards,

 

Tim

Share this post


Link to post
Share on other sites

Tradestations auto trendline feauture is not worth using for daytrading. It's better in most instances to manually draw trendlines - you'll be much more precise with entries and the practice of manually drawing will keep you in tune with the markets movements/waves.

Share this post


Link to post
Share on other sites
Tradestations auto trendline feauture is not worth using for daytrading. It's better in most instances to manually draw trendlines - you'll be much more precise with entries and the practice of manually drawing will keep you in tune with the markets movements/waves.

I agree and use the pivot high/low indicator to draw those lines.

Share this post


Link to post
Share on other sites

Thank you for your insights. I wanted the auto trendlines as a guide and/or filter. I use an Ergodic for timing of my entry but the trendlines would help confirm the direction. Thank you again for your thoughtfulness.

 

kindest regards,

 

Tim

Share this post


Link to post
Share on other sites

{

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 © 1991-2003 TradeStation Technologies, Inc. All rights reserved. **

** TradeStation reserves the right to modify or overwrite this analysis technique

with each release. ** }

Share this post


Link to post
Share on other sites

Thank you Indicator-Master for your kindness. I will try the auto trendline code you sent and see how it works. I truly appreciate all the work involved to send it to me, thank you again.

 

Kindest regards,

 

Tim

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.