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.

Tams

Trendline (EasyLanguage)

Recommended Posts

This thread is about using EasyLanguage to draw trendlines on a chart.

 

 

 

 

 

TL_New

 

Displays a trendline, with the specified starting and ending points,

on the chart that the study is based on;

 

returns a trendline-specific ID number, required to modify the trendline.

 

Usage

 

TL_New (sDate, sTime, sPriceValue, eDate, eTime, ePriceValue)

 

Parameters

 

sDate - a numerical expression specifying the trendline starting point date;

the date is indicated in the YYYMMdd format,

where YYY is the number of years since 1900,

MM is the month,

and dd is the day of the month

 

sTime - a numerical expression specifying the trendline starting point time;

the time is indicated in the 24-hour HHmm format,

where 1300 = 1:00 PM

 

sPriceValue - a numerical expression specifying the trendline starting point price value

(vertical position, corresponding to a value on the price scale of a chart)

 

eDate - a numerical expression specifying the trendline ending point date

 

eTime - a numerical expression specifying the trendline ending point time

 

ePriceValue - a numerical expression specifying the trendline ending point price value

 

Example

 

Display a trendline,

that begins at 9:00 AM at a price value of 1381,

and ends at 3:00 PM at a price value of 1337,

on January 17th, 2008,

on the chart that the study is based on:

 

Value1 = TL_New( 1080117, 900, 1381, 1080117, 1500, 1337);

 

 

 

 

 

source: EasyLanguage Manual

Share this post


Link to post
Share on other sites

Here's an example of

drawing a trendline

at the highest high and the lowest low of X days back.

 

 

it utilizes the highD and lowD functions to obtain the highest/lowest prices.

 

 

attachment.php?attachmentid=10322&stc=1&d=1240776619

 

 

MC version can be used on sub-minute charts.

i.e. tick, seconds, volume bar, etc.

HL_Bar.jpg.fb00aac27016e2e3fed753ce3e41567b.jpg

HL_bar_(TS).txtFetching info...

HL_bar_(MC).txtFetching info...

Edited by Tams

Share this post


Link to post
Share on other sites

I think that I understand TL_New but no way to extend extend lines on the right !!! :angry:

 

I've coded :missy: something horrible and complicate , but it works

 

Tams, If you have time to correct it I will appreciate it a lot

 

// HL bar (MC)
// version: beta 0.1
// author: TAMS
// date: 20090426
// license: public use
// description: this indicator draws a trendline 
// at the highest high and lowest low of X days back

input:
lookback(	1	),
Line.size (	1 	),
Line.style (	1	),
color.tl.h(	blue	),
color.tl.l(	red	);
// 1
if date <> date[1] and lookback = 1 then begin
value1 = tl_new_s(d , time_s , highd(1), d  , time_s, highd(1 ));	
value2 = tl_new_s(d  , time_s, lowd(1), d  , time_s, lowd(1));

tl_setcolor( value1, color.tl.h );
TL_SetSize(  value1, Line.size  );
TL_SetStyle( value1, Line.style );		

tl_setcolor(  value2 , color.tl.l );
TL_SetSize(   value2, Line.size   );
TL_SetStyle(  value2, Line.style  );		
end;

if lookback = 1 then begin
tl_setend_s(value1, d , time_s , highd(1) );
tl_setend_s(value2, d , time_s , lowd(1)  );
end;

// 2
if date <> date[1] and lookback = 2 then begin
value1 = tl_new_s(d , time_s , highd(1), d  , time_s, highd(1 ));	
value2 = tl_new_s(d  , time_s, lowd(1), d  , time_s, lowd(1));
value3 = tl_new_s(d , time_s , highd(2), d  , time_s, highd(2 ));	
value4 = tl_new_s(d  , time_s, lowd(2), d  , time_s, lowd(2));

tl_setcolor( value1, color.tl.h );
TL_SetSize(  value1, Line.size  );
TL_SetStyle( value1, Line.style );		

tl_setcolor(  value2 , color.tl.l );
TL_SetSize(   value2, Line.size   );
TL_SetStyle(  value2, Line.style  );

tl_setcolor( value3, color.tl.h );
TL_SetSize(  value3, Line.size  );
TL_SetStyle( value3, Line.style );		

tl_setcolor(  value4 , color.tl.l );
TL_SetSize(   value4, Line.size   );
TL_SetStyle(  value4, Line.style  );			
end;
if lookback = 2 then begin
tl_setend_s(value1, d , time_s , highd(1) );
tl_setend_s(value2, d , time_s , lowd(1)  );
tl_setend_s(value3, d , time_s , highd(2) );
tl_setend_s(value4, d , time_s , lowd(2)  );
end;

// 3
if date <> date[1] and lookback = 3 then begin
value1 = tl_new_s(d , time_s , highd(1), d  , time_s, highd(1 ));	
value2 = tl_new_s(d  , time_s, lowd(1), d  , time_s, lowd(1));
value3 = tl_new_s(d , time_s , highd(2), d  , time_s, highd(2 ));	
value4 = tl_new_s(d  , time_s, lowd(2), d  , time_s, lowd(2));
value5 = tl_new_s(d , time_s , highd(3), d  , time_s, highd(3 ));	
value6 = tl_new_s(d  , time_s, lowd(3), d  , time_s, lowd(3 ));

tl_setcolor( value1, color.tl.h );
TL_SetSize(  value1, Line.size  );
TL_SetStyle( value1, Line.style );		

tl_setcolor(  value2 , color.tl.l );
TL_SetSize(   value2, Line.size   );
TL_SetStyle(  value2, Line.style  );

tl_setcolor( value3, color.tl.h );
TL_SetSize(  value3, Line.size  );
TL_SetStyle( value3, Line.style );		

tl_setcolor(  value4 , color.tl.l );
TL_SetSize(   value4, Line.size   );
TL_SetStyle(  value4, Line.style  );

tl_setcolor( value5, color.tl.h );
TL_SetSize(  value5, Line.size  );
TL_SetStyle( value5, Line.style );		

tl_setcolor(  value6 , color.tl.l );
TL_SetSize(   value6, Line.size   );
TL_SetStyle(  value6, Line.style  );					
end;

if lookback = 3 then begin
tl_setend_s(value1, d , time_s , highd(1) );
tl_setend_s(value2, d , time_s , lowd(1)  );
tl_setend_s(value3, d , time_s , highd(2) );
tl_setend_s(value4, d , time_s , lowd(2)  );
tl_setend_s(value5, d , time_s , highd(3) );
tl_setend_s(value6, d , time_s , lowd(3)  );
end;

// 4
if date <> date[1] and lookback = 4 then begin
value1 = tl_new_s(d , time_s , highd(1), d  , time_s, highd(1 ));	
value2 = tl_new_s(d  , time_s, lowd(1), d  , time_s, lowd(1));
value3 = tl_new_s(d , time_s , highd(2), d  , time_s, highd(2 ));	
value4 = tl_new_s(d  , time_s, lowd(2), d  , time_s, lowd(2));
value5 = tl_new_s(d , time_s , highd(3), d  , time_s, highd(3 ));	
value6 = tl_new_s(d  , time_s, lowd(3), d  , time_s, lowd(3 ));
value7 = tl_new_s(d , time_s , highd(4), d  , time_s, highd(4 ));	
value8 = tl_new_s(d  , time_s, lowd(4), d  , time_s, lowd(4 ));

tl_setcolor( value1, color.tl.h );
TL_SetSize(  value1, Line.size  );
TL_SetStyle( value1, Line.style );		

tl_setcolor(  value2 , color.tl.l );
TL_SetSize(   value2, Line.size   );
TL_SetStyle(  value2, Line.style  );

tl_setcolor( value3, color.tl.h );
TL_SetSize(  value3, Line.size  );
TL_SetStyle( value3, Line.style );		

tl_setcolor(  value4 , color.tl.l );
TL_SetSize(   value4, Line.size   );
TL_SetStyle(  value4, Line.style  );

tl_setcolor( value5, color.tl.h );
TL_SetSize(  value5, Line.size  );
TL_SetStyle( value5, Line.style );		

tl_setcolor(  value6 , color.tl.l );
TL_SetSize(   value6, Line.size   );
TL_SetStyle(  value6, Line.style  );

tl_setcolor( value7, color.tl.h );
TL_SetSize(  value7, Line.size  );
TL_SetStyle( value7, Line.style );		

tl_setcolor(  value8 , color.tl.l );
TL_SetSize(   value8, Line.size   );
TL_SetStyle(  value8, Line.style  );						
end;

if lookback = 4 then begin
tl_setend_s(value1, d , time_s , highd(1) );
tl_setend_s(value2, d , time_s , lowd(1)  );
tl_setend_s(value3, d , time_s , highd(2) );
tl_setend_s(value4, d , time_s , lowd(2)  );
tl_setend_s(value5, d , time_s , highd(3) );
tl_setend_s(value6, d , time_s , lowd(3)  );
tl_setend_s(value7, d , time_s , highd(4) );
tl_setend_s(value8, d , time_s , lowd(4)  );
end;

Share this post


Link to post
Share on other sites
  aaa said:
I think that I understand TL_New but no way to extend extend lines on the right !!! :angry:

I've coded :missy: something horrible and complicate , but it works

Tams, If you have time to correct it I will appreciate it a lot

 

 

 

I am not sure if I understand what you want to achieve.

 

Can you make a screen shot, then draw some lines/arrows/notes to illustrate your intention?

Share this post


Link to post
Share on other sites

It's good to have friends all over the world :)

 

The idea is simple and works like classicals pivots

 

The goal is to have High Blue and low Red in a solid color

 

And to extend in Dotted lines to the right during xDays

 

The circles shows interesting S/R on the 15 mn graph

 

They are a lot of pullback in 1 mn on these support

HLXtended.thumb.jpg.c0b32bf41400a9082716e9ff7d5a9546.jpg

Share this post


Link to post
Share on other sites
  aaa said:
It's good to have friends all over the world :)

The idea is simple and works like classicals pivots

The goal is to have High Blue and low Red in a solid color

And to extend in Dotted lines to the right during xDays

The circles shows interesting S/R on the 15 mn graph

They are a lot of pullback in 1 mn on these support

 

 

ok, simple enough...

 

sneo suggested the correct keyword -- TL_SetExtRight( id.tl, True);

 

 

here's the trick:

you only want to extend the lines on current day.

you don't want previous day's lines to clutter up your chart:

 

if lastbaronchart then begin

tl_setextright(value1, true);

... and so on

Edited by Tams

Share this post


Link to post
Share on other sites

I don't see any changes...

 

I'm not a fan of multi colored lines too

 

Blue for High and red for low

 

I'm not complaining guys !!!

 

Your help is a gift :)

 

I think that my way is not the good way to do what I "want"

 

The code is too heavy because if I want to have 50 days back...

 

2 millions exponentials codes lines may be ?

 

Also it's better to have the beginning of the line with the real first day in a solid line to better interpretation and the choose of, let's say, 50 days of Xtended dotted lines on the right

 

My 15 mn charts is exactly my goal

 

50 ThanX anyway, I really do appreciate your help.

Share this post


Link to post
Share on other sites
  aaa said:
I don't see any changes...

...

 

 

you better write some lines/arrows/notes on your chart.

 

;-)

Edited by Tams

Share this post


Link to post
Share on other sites
  aaa said:
...

I'm not a fan of multi colored lines too

...

 

 

you can set the color to anything you like when you are trading,

but when you are programming, you have to see which line is which.

Share this post


Link to post
Share on other sites

You are right

 

I must give more informations if I want to be understood

 

I hope that this graph is clear enough

 

The lookback period is usefull to clean the graph from pollution of all the H/L of the data range

 

Let say on my graph that I estimated that the -4 day is an important top

 

It could be also the -10 day ( the yellow arrow )

 

or any lookback (may be maxi 50 days ?)

 

The Blue/red color for H/L is a way to immediatly see the confluences of the H/L

Untitled-1.thumb.jpg.b96761956b0b46546c880b9aa319dbcc.jpg

Share this post


Link to post
Share on other sites
  aaa said:
You are right

 

I must give more informations if I want to be understood

 

I hope that this graph is clear enough

 

The lookback period is usefull to clean the graph from pollution of all the H/L of the data range

 

Let say on my graph that I estimated that the -4 day is an important top

 

 

my last code should do this trick.

all you need to do is to copy my codes in lookback=3 to lookback=4.

 

 

 

  Quote

It could be also the -10 day ( the yellow arrow )

 

or any lookback (may be maxi 50 days ?)

 

The Blue/red color for H/L is a way to immediatly see the confluences of the H/L

 

 

if you need addition lookbacks, simply use my original code here:

http://www.traderslaboratory.com/forums/f56/trendline-easylanguage-5840.html#post63601

 

this code is for ONE lookback only.

simply apply this indicator to the chart with the lookback at 10,

then you will have the HL lines from 10 days ago.

 

if you also need to lookback at day 50,

then apply the indicator AGAIN... with lookback at 50.

 

QED !

Share this post


Link to post
Share on other sites

additional notes:

 

if you want to plot current day's high low...

this requires a different routine.

 

because past day's HL are static,

all you need is to find the HL once and plot the lines.

 

Current day's HL is a moving target.

Your codes needs to detect and compare current bar's HL

to see if it has made a new HL, then plot the HL lines accordingly.

... and this has to be done for every bar and after every tick.

 

 

You can see an example here:

http://www.traderslaboratory.com/forums/f218/plotting-globex-high-and-low-5630.html

Share this post


Link to post
Share on other sites

Quod erat demonstrandum!

 

If I remember right.

 

It means something like:

 

"What had to be shown"

(sorry for my English, I guess I could it better explain in my mother tongue).

It is usually used, behind a successful finished proof.

 

Hal

Share this post


Link to post
Share on other sites

Here is one of the 3 indicators wich slowed down MC :angry:

 

// The code slows dramatically MC when resizing the scale with the mouse in 1 mn untill it freezezes all the screen during 10 seconds

 

 

// HL bar (MC)
// version: beta 0.3
// author: TAMS
// date: 20090426
// license: public use
// description: this indicator draws a trendline 
// at the highest high and lowest low of X days back
// 
// 20090503: modified by aaa for multi-days lookback
// 20090503: TAMS: added different colors for each day
// 20090503: TAMS: added tl extension for lookback=3
// 20090505: aaa:  removed 
//			multi-days lookback  
//			different colors for each day 
//		     added 
//			StartDate
//			tl_setextright (Sneo suggestion)
// The code slows dramatically MC when resizing the scale with the mouse in 1 mn untill it freezezes all the screen during 10 seconds

input:
StartDate(	1090426),
Line.size (	1 	),
Line.style (	2	),
Color.high(	blue	),
Color.low(	red	);

If date this bar >= StartDate then 
begin

if date <> date[1] then begin
	value1 = tl_new_s(d , time_s , highd(1) , d , time_s , highd(1) );	
	value2 = tl_new_s(d , time_s , lowd( 1) , d , time_s , lowd(1)  );

	tl_setcolor( value1, Color.high );
	TL_SetSize(  value1, Line.size  );
	TL_SetStyle( value1, Line.style );		

	tl_setcolor( value2, Color.low  );
	TL_SetSize(  value2, Line.size  );
	TL_SetStyle( value2, Line.style );		
end;
	tl_setextright(value1, true);
	tl_setextright(value2, true);
end;

Share this post


Link to post
Share on other sites

Suggestion for working with zero problems

 

MC has a very good C++ multiprocessoring engines

 

Actual powered quad CPU + GPU can draw millions of lines in a fraction of a seconds

 

2 Mo memory is enough... 4 Mo is better and cheap (instead 3,xx Mo is available for programms and 1,xx Mo reseved to the system )

 

I suggest a C: ghost each week ( C = windows D = your programm )

 

The system will be clean without virus and You will always have the best of windows performance and security

 

And

 

Backup

Backup

Backup

 

oftently your datas on multiple supports

Share this post


Link to post
Share on other sites

Thats odd AAA the code you posted should run once a day! It should not slow things down.

 

Multicharts rasterisation had always been snotbag slow, something I have tired of telling them about. Apparently they have speeded it up in version 5.0. It frustrated me no end that they did not put more effort into the fundamental things... receiving data from a provider....storing and managing it.....displaying it. They are getting (finally).

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.


  • Topics

  • Posts

    • TDUP ThredUp stock, watch for a top of range breakout above 2.94 at https://stockconsultant.com/?TDUP
    • TDUP ThredUp stock, watch for a top of range breakout above 2.94 at https://stockconsultant.com/?TDUP
    • NFLX Netflix stock watch, local support and resistance areas at 838.12 and 880.5 at https://stockconsultant.com/?NFLX
    • Date: 8th April 2025.   Markets Rebound Cautiously as US-China Tariff Tensions Deepen     Global markets staged a tentative recovery on Tuesday following a wave of volatility sparked by escalating trade tensions between the United States and China. The Asia-Pacific region showed signs of stability after a chaotic start to the week—though some pockets remained under pressure. Taiwan’s Taiex dropped 4.4%, dragged lower by losses in tech heavyweight TSMC. The world’s largest chipmaker fell another 4% on Tuesday and has now slumped 13.5% since April 2, when US President Donald Trump first unveiled what he called ‘Liberation Day’ tariffs.   However, broader sentiment across the region turned more positive, with several markets rebounding sharply after Monday’s dramatic sell-offs. Japan’s Nikkei 225 surged over 6% in early trading, rebounding from an 18-month low. South Korea’s Kospi rose marginally, and Australia’s ASX 200 gained 1.9%, driven by strength in mining stocks. Hong Kong’s Hang Seng rose 1.6%, though still far from recovering from Monday’s 13.2% crash—its worst day since the 1997 Asian financial crisis. China’s Shanghai Composite added 0.9%.   In Europe, DAX and FTSE 100 are up more than 1% in opening trade. EU Commission President von der Leyen repeated yesterday that the EU had offered reciprocal zero tariffs on manufactured goods previously and continues to stand by that offer. Others are also trying again to talk to Trump to get some sort of agreement that limits the impact.   Much of the rally appeared to be driven by dip-buying, as well as hopes that the intensifying trade war could still be defused through negotiations.   China Strikes Back: ‘We Will Fight to the End’   Tensions reached a boiling point after Trump threatened to impose an additional 50% tariff on all Chinese imports unless Beijing rolled back its retaliatory measures by April 8. ‘If China does not withdraw its 34% increase above their already long-term trading abuses by tomorrow... the United States will impose additional tariffs on China of 50%,’ Trump declared on social media.   If implemented, the new tariffs would bring total US duties on Chinese goods to a staggering 124%, factoring in the existing 20%, the 34% recently announced, and the proposed 50%.   In response, China’s Ministry of Commerce issued a stern warning, stating: ‘The US threat to escalate tariffs is a mistake on top of a mistake... If the US insists on its own way, China will fight to the end.’ The ministry also called for equal and respectful dialogue, though signs of compromise on either side remain scarce.   Beijing acted quickly to contain a market fallout. State funds intervened to support equities, and the People’s Bank of China set the yuan fixing at its weakest level since September 2023 to boost export competitiveness. Additionally, five-year interest rate swaps in China fell to their lowest levels since 2020, indicating potential for further monetary easing.   Trump Talks Tough on EU Too   Trump’s hardline approach extended beyond China. Speaking at a press conference, he rejected the European Union’s offer to eliminate tariffs on cars and industrial goods, accusing the bloc of ‘being very bad to us.’ He insisted that Europe would need to source its energy from the US, claiming the US could ‘knock off $350 billion in one week.’   The EU, meanwhile, backed away from a proposed 50% retaliatory tariff on American whiskey, opting instead for 25% duties on selected US goods in response to Trump’s steel and aluminium tariffs.     Volatile Wall Street Adds to the Drama   Wall Street experienced wild swings on Monday as investors processed the rapidly evolving trade conflict. The S&P 500 briefly fell 4.7% before rebounding 3.4%, nearly erasing its losses in what could have been its biggest one-day jump in years—if it had held. The Dow Jones Industrial Average sank by as much as 1,700 points early in the day but later climbed nearly 900 points before closing 349 points lower, down 0.9%. The Nasdaq ended up 0.1%.   The brief rally was fueled by a false rumour that Trump was considering a 90-day pause on tariffs—rumours that the White House quickly labelled ‘fake news.’ The market's sharp reaction underscored how desperate investors are for any sign that tensions might ease.   Oil Markets in Focus: Goldman Sachs Revises Forecasts   Crude prices also reflected the uncertainty, with US crude briefly dipping below $60 per barrel for the first time since 2021. As of early Tuesday, Brent crude was trading at $64.72, while WTI hovered around $61.26.   Goldman Sachs, in a note dated April 7, lowered its average price forecasts for Brent and WTI through 2025 and 2026, citing mounting recession risks and the potential for higher-than-expected supply from OPEC+.       Under a base-case scenario where the US avoids a recession and tariffs are reduced significantly before the April 9 implementation date, Goldman sees Brent at $62 per barrel and WTI at $58 by December 2025. These figures fall further to $55 and $51, respectively, by the end of 2026. This outlook also assumes moderate output increases from eight OPEC+ countries, with incremental boosts of 130,000–140,000 barrels per day in June and July.   However, should the US slip into a typical recession and OPEC production aligns with the bank’s baseline assumptions, Brent could retreat to $58 by the end of this year and to $50 by December 2026.   In a more bearish scenario involving a global GDP slowdown and no change to OPEC+ output levels, Brent prices might fall to $54 by year-end and $45 by late 2026. The most extreme projection—based on a simultaneous economic downturn and a full reversal of OPEC+ production cuts—would see Brent plunge to below $40 per barrel by the end of 2026.   Goldman noted that oil prices could outperform forecasts significantly if there was a dramatic shift in tariff policy and a surprise in global demand recovery.   Cautious Optimism, But Warnings Persist   With both Washington and Beijing showing no signs of backing down, markets are likely to remain volatile in the days ahead. Investors now turn their attention to upcoming trade meetings and policy decisions, hoping for clarity in what has become one of the most unpredictable trading environments in recent years.   Always trade with strict risk management. Your capital is the single most important aspect of your trading business.   Please note that times displayed based on local time zone and are from time of writing this report. Click HERE to access the full HFM Economic calendar.   Want to learn to trade and analyse the markets? Join our webinars and get analysis and trading ideas combined with better understanding of how markets work. Click HERE to register for FREE!   Click HERE to READ more Market news.   Andria Pichidi HFMarkets   Disclaimer: This material is provided as a general marketing communication for information purposes only and does not constitute an independent investment research. Nothing in this communication contains, or should be considered as containing, an investment advice or an investment recommendation or a solicitation for the purpose of buying or selling of any financial instrument. All information provided is gathered from reputable sources and any information containing an indication of past performance is not a guarantee or reliable indicator of future performance. Users acknowledge that any investment in Leveraged Products is characterized by a certain degree of uncertainty and that any investment of this nature involves a high level of risk for which the users are solely responsible and liable. We assume no liability for any loss arising from any investment made based on the information provided in this communication. This communication must not be reproduced or further distributed without our prior written permission.
    • CVNA Carvana stock watch, rebound to 166.56 support area at https://stockconsultant.com/?CVNA
×
×
  • Create New...

Important Information

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