Координаты окончания линии на графике - страница 3

 
forex2030:

Можно поправить эту функцию, чтобы не зависеть от окна графика?

Отлично справились! Здесь только лишнее ChartTimePriceToXY(). Поэтому передавайте в функцию не время баров, а их индексы:

double xAngle(const int x1, const double y1, const int x2, const double y2)
{
   if(x1 == x2 || y1 == y2) 
      return 0.0;

   return MathArctan((y2 - y1) / (x1 - x2)) * (180 / 3.1415926535);
}

Еще я выбросил MathAbs(), т. к. результат будет неправильный при разных направлениях линий (угол может быть отрицательный). Также нужно учитывать, что при такой системе координат угол будет получаться противоположный ожидаемому, т. к. ось абсцисс направлена не как обычно (слева направо), а справа налево. Связано с нумерацией баров.

 
Ihor Herasko:

Отлично справились! Здесь только лишнее ChartTimePriceToXY(). Поэтому передавайте в функцию не время баров, а их индексы

Спасибо за помощь!
Немного подкорректировал для себя, добавил *1000, т.к. результат угла в 20 градусов получался 0.02

//+------------------------------------------------------------------+
//|  Значение угла трендовой линии в градусах                        |
//+------------------------------------------------------------------+
double xAngle(int ln, const int x1, const double y1, const int x2, const double y2)
{              // ln=0 верх, ln=1 низ
   double ugol=0.0;
   if(x1!=x2 && y1!=y2){ 
      if(ln==1) ugol=NormalizeDouble(MathArctan((y2-y1)/(x1-x2)) * (180/3.1415926535) * 1000, 1);
           else ugol=NormalizeDouble(MathArctan((y1-y2)/(x1-x2)) * (180/3.1415926535) * 1000, 1);}
return(ugol);}

Вроде у нижней линии по отношению к осям:
30 градусов по X стороне, а по Y стороне в районе 60 градусов


 
forex2030:

Спасибо за помощь!
Немного подкорректировал для себя, добавил *1000, т.к. результат угла в 20 градусов получался 0.02

Вроде у нижней линии по отношению к осям:
30 градусов по X стороне, а по Y стороне в районе 60 градусов


X - это абсцисса, т. е. шкала времени или же индексация баров.

Y- это ордината, т. е. ценовая шкала.

На Вашем рисунке они перепутаны местами. Ну и также не стоит пытаться соотносить видимый наклон линии к тому результату, который получен в обсуждаемом вычислении. У них должен совпадать только знак.

Причина обращения: