При чём зигзаг? Просто ищете треугольник.
Из нижней точки сверху вниз гоним касательную. Из верхней точки снизу вверх делаем то же самое. Если касательные расходятся, то не получилось, всё заново.
Признак пробоя - наличие второй точки противоположной касательной после второй точки текущей касательной. В этом случае треугольник строить прекращаем, он уже пробит. Всё.
При чём зигзаг? Просто ищете треугольник.
Из нижней точки сверху вниз гоним касательную. Из верхней точки снизу вверх делаем то же самое. Если касательные расходятся, то не получилось, всё заново.
Признак пробоя - наличие второй точки противоположной касательной после второй точки текущей касательной. В этом случае треугольник строить прекращаем, он уже пробит. Всё.
Как то мудрёно, не ошибаетесь?
Подскажите как у индикатора ZigZag отсортировать все верхние пики и все нижние пики?
если зигзаг по экстремумам цены, то верхние совпадает с high, нижние с low :-)
(не про индикатор из поставки) верхний пик выше предыдущего, нижний ниже и строго чередуются. Тот который в комплекте редко но метко вместо зигзага делает простую ломанную линию - два high (low) подряд или одновременно на одном баре.
Не подскажите как можно продлить отрезки линий в одну точку?
Рассчитать цену и бар, на котором происходит пересечение линий, по уравнению прямой. А потом перенести правые опорные точки обеих линий в рассчитанные координаты.
Таким образом?
double KoeffLine(int x1,double y1,int x2,double y2,double &kKoef){ if(x1==x2) return(DBL_MAX); kKoef=(y2-y1)/(x2-x1); return(y1-kKoef * x1);}
Рассчитать цену и бар, на котором происходит пересечение линий, по уравнению прямой. А потом перенести правые опорные точки обеих линий в рассчитанные координаты.
Они могут пересекаться до или после бара. Видимо надо будет округлять время до времени открытия бара. Да и то, будет погрешность…
Это расчет коэффициента B (цена линии на нулевом баре). Его (и коэффициент K) тоже нужно предварительно определить для каждой линии. Затем приравнять друг другу полученные уравнения для каждой прямой (ведь цена пересечения должна быть одинаковой). Так, из двух уравнений:
y = K1 * x + B1
y = K2 * x + B2
получаем одно:
K1 * x + B1 = K2 * x + B2
Из него находим X (индекс бара, он будет дробный, а не целый), а далее уже Y (цена пересечения).
Да, потом еще придется решить проблему, о которой говорит Алексей (индекс бара дробный, а нам нужно только натуральное значение). Тут уже придется думать применительно к задаче, что важнее: показать правильную цену пересечения или оставить правые опорные точки линий на экстремумах ZZ.
P. S. Кстати, в МТ5 эту проблему можно решить, установив точную шкалу времени (Сервис - Настройки - Графики).
- 2021.10.21
- www.mql5.com
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Не могу найти в сети индикатор ZigZag у которого строятся фигуры по точкам изгиба в виде треугольника по всей истории.
Знаю что должен быть, эта тема не новая и уверен что не раз реализованная, может гуглю запросы не правильно.
Или как сравнивать 5 точек изгиба?
Точка 0 ещё не сформирована и её надо сравнить с точкой 1 чтобы узнать направление луча,
далее если луч 0 вниз то по низу точки 2 и 4, по верху точки 1 и 3,
а если луч 0 вверх то по низу точки 1 и 3, по верху точки 2 и 4
Помогите кто чем сможет))