Trendline Calcualtion of the actual value

Back to topics list To post a new topic, please log in or register
avatar
315
sunshineh 2016.03.22 10:05
 
I am trying to calculate the actual value of my trendline that way:
x1 = (datetime)ObjectGet(AlertElement, OBJPROP_TIME1); 
y1 = (double)ObjectGet(AlertElement, OBJPROP_PRICE1);
x2 = (datetime)ObjectGet(AlertElement, OBJPROP_TIME2); 
y2 = (double)ObjectGet(AlertElement, OBJPROP_PRICE2); 

stg1 = (y2-y1)/(x2-x1);
yab1 = y1 - (x1*stg1); 
ActualLineValue = (Time[0]*stg1+yab1) ; 

Sometimes this is working fine, but in other times the value pretty far away. Do you have a solution?
avatar
Moderator
3427
GumRai 2016.03.22 10:16 #
 

Use iBarShift for the time points, then you can calculate the rise/fall for x bars

Then you can use this value to calculate the rise/fall over y bars

avatar
13009
WHRoeder 2016.03.22 14:30 #
 
sunshineh: I am trying to calculate the actual value of my trendline that way:
ObjectGetValueByShift - Object Functions - MQL4 Reference
ObjectGetValueByTime - Object Functions - MQL4 Reference



avatar
315
sunshineh 2016.03.22 22:55 #
 

@WHRoeder, lot's of thanks!

Where these functions available also in former times?

 -That's Great!! 

avatar
2017
gooly 2016.03.22 23:11 #
 
sunshineh:
I am trying to calculate the actual value of my trendline that way:
x1 = (datetime)ObjectGet(AlertElement, OBJPROP_TIME1); 
y1 = (double)ObjectGet(AlertElement, OBJPROP_PRICE1);
x2 = (datetime)ObjectGet(AlertElement, OBJPROP_TIME2); 
y2 = (double)ObjectGet(AlertElement, OBJPROP_PRICE2); 

stg1 = (y2-y1)/(x2-x1);
yab1 = y1 - (x1*stg1); 
ActualLineValue = (Time[0]*stg1+yab1) ; 

Sometimes this is working fine, but in other times the value pretty far away. Do you have a solution?

Maybe the reason for your problem is datetime? It gives you seconds but on the chart you see some kind or enumeration of bars.

E.g. the two points of a straight line were [0,100] and [5,200]. x (=0 & 5) were bar numbers so stg1 = (200-100)/(5-0) = 20.

But in case this were h1-bars you get for (x2-x1) = 5 (bars) * 60 (min) * 60 (sec) = 18'000 and stg1 = 0,00555555555555555555555555555556.

You can try  tdiff = (x2-x1)/(Period()*60) => 18'000/(60*60) = 5?

Back to topics list  

To add comments, please log in or register