Jump to content

Need right settings for automatic trendlines on all timeframes


gigiocean

Recommended Posts

{

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 ;

Link to comment
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 ;

 

This was already available with Andreybbrv's MC.Just check the indicators list for Trendline Automatic

be helpful

Link to comment
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.

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...