Расчёт угла наклона трендовой линии. - страница 21

 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам

Nikolai Semko, 2020.10.26 00:34

Зачем боятся скорости. Это лишь условность для приведения типов.
Как вариант функции определения угла:

struct PointPriceTime
  {
   double            price;
   datetime          time;
                     PointPriceTime(double p, datetime t) { price=p; time=t; };
   void              Set(double p, datetime t){ price=p; time=t;};
                     PointPriceTime(PointPriceTime &p){ price=p.price; time=p.time; };
                     PointPriceTime() { price=0.0; time=0; };
  };

double Angle(PointPriceTime &p1,PointPriceTime &p2) // возвращает угол в градусах в приведенной системе координат price-price, где по оси X 
  {                                                 // расстояние между x1 и  x2  = N*_Point, где N - количество минутных баров во временном промежутке отрезка. 
   static int tf[9]= {PERIOD_M1,PERIOD_M5,PERIOD_M15,PERIOD_M30,PERIOD_H1,PERIOD_H4,PERIOD_D1,PERIOD_W1,PERIOD_MN1};
   int i=0;
   while(i<9 && SeriesInfoInteger(_Symbol,tf[i],SERIES_FIRSTDATE)>p1.time)
      i++;
   if(i==9)
     {
      Print("Время левой границы вне диапазона исторических данных");
      return DBL_MAX;
     }
   int bar1 = iBarShift(_Symbol,tf[i],p1.time);
   int bar2 = iBarShift(_Symbol,tf[i],p2.time);
   if(bar1==bar2)
      return 0.0;
   return atan((p2.price-p1.price)/((bar1-bar2)*PeriodSeconds(tf[i])*_Point/60))*180/M_PI;
  }

После MT5 ощущение от работы MT4 просто ужасное. Доступ к истории какой-то кастрированный. О тиках даже молчу.




 
Nikolai Semko:

И куда потом девать этот "угол"?

 
Dmitry Fedoseev:

И куда потом девать этот "угол"?

Привести к пункт в минуту, смотреть как долго и делать выводы)

 
Valeriy Yastremskiy:

Привести к пункт в минуту, смотреть как долго и делать выводы)

А зачем в минуту? Зачем куда-то приводить, если уже все давно приведено к пунктам за бар?

 
Dmitry Fedoseev:

А зачем в минуту? Зачем куда-то приводить, если уже все давно приведено к пунктам за бар?

философский вопрос. С учетом фрактальности на разных ТФ тоже иногда оценку делаю скорости в барах, но как бы интерес и привожу к одному знаменателю. Толку в общем то никакого, но точно видно что скорость на малых тф больше.

зы вернее в этом чтото есть, не знаю как выразить, отражение динамики, как то так. Структура движений то одинакова.

 
Valeriy Yastremskiy:

философский вопрос. С учетом фрактальности на разных ТФ тоже иногда оценку делаю скорости в барах, но как бы интерес и привожу к одному знаменателю. Толку в общем то никакого, но точно видно что скорость на малых тф больше.

зы вернее в этом чтото есть, не знаю как выразить, отражение динамики, как то так. Структура движений то одинакова.

Фантазировать можно как угодно и о чем угодно. Можно даже посчитать, сколь раз водитель-дальнобойщик сходил отлить за рейс и даже приплюсовать это к общей дистанции, и подивиться - о, она стала на 30 метров длиннее.

 
Dmitry Fedoseev:

Фантазировать можно как угодно и о чем угодно. Можно даже посчитать, сколь раз водитель-дальнобойщик сходил отлить за рейс и даже приплюсовать это к общей дистанции, и подивиться - о, она стала на 30 метров длиннее.

НЕ обладаю такой прямотой мысли. Иду путем сложным. Сперва смотрю что можно измерить, посчитать и только потом думаю, что можно с этим сделать. 

Вопрос, как несложно вычислить влево, от текущего бара конец коридора? синие красные это экстемумы. Коридор можно в относительных изменения разницы минимумов и максимумов, и скорость минимумов и максимумов считать, но сложно это получается. Проще сделать хочется.

Минутка с экстремумами.

 

Простота - относительное понятие. Проще в каком смысле? Проще всего в реализации - просто пройтись циклом по последним барам. 

Если проще с позиции быстродействия... то очень много вопросов. В этом случае надо стараться слева-направо, и чтобы на каждом баре только один раз быть. Если это вообще возможно. По крайней мере стремиться к этому надо.

 
Dmitry Fedoseev:

Простота - относительное понятие. Проще в каком смысле? Проще всего в реализации - просто пройтись циклом по последним барам. 

Если проще с позиции быстродействия... то очень много вопросов. В этом случае надо стараться слева-направо, и чтобы на каждом баре только один раз быть. Если это вообще возможно. По крайней мере стремиться к этому надо.

Понятно что циклом по барам или экстремумам. Данные экстремумов есть в виде номер бара и цена. Что в условие поставить. Коридоры могут быть разной ширины, наклона. Можно конечно тупо регламентно если меньше ширины то мы в коридоре, но это тупиковое решение. А динамическое не могу сформировать. Это для первого расчета, для понимания что есть коридор к текущему бару. 

про быстродействие и оптимизащию пока не думаю. 

 
Valeriy Yastremskiy:

Понятно что циклом по барам или экстремумам. Данные экстремумов есть в виде номер бара и цена. Что в условие поставить. Коридоры могут быть разной ширины, наклона. Можно конечно тупо регламентно если меньше ширины то мы в коридоре, но это тупиковое решение. А динамическое не могу сформировать. Это для первого расчета, для понимания что есть коридор к текущему бару. 

про быстродействие и оптимизащию пока не думаю. 

Можно посчитать линейную регрессию по вершинам, по низинам. Расстояние между границ измерять относительно стандартной девиации. 

На сколько канал ровный можно оценить по соотношению коэффициентов B верхней и нижней границы. Если нужна такая точность.

Наклон канала - тоже по коэффициенту B.

...

А можно просто посчитать среднее от разницы двух соседних фракталов.

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