Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
- Просмотров:
- 1957
- Рейтинг:
- Опубликован:
- 2018.04.18 09:00
-
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Параметры функции:
- double LX1 - координата X первой точки линии;
- double LY1 - координата Y первой точки линии;
- double LX2 - координата X второй точки линии;
- double LY2 - координата Y второй точки линии;
- double DX - координата X точки;
- double DY - координата Y точки.
Принцип расчета
По координатам двух точек линии получаем формулы линии вида y=a+k*x. Коэффициент k определят величину наклона линии, то есть изменение координаты y на единицу изменения координаты x. Рассчитывается коэффициент k следующим образом:
double K=(LY2-LY1)/(LX2-LX1);
Константа a определяет значение линии при x=0, то есть соответствует уровню, на котором линия пересекает ось y. Зная коэффициент наклона и координату x одной из точек линии, вычисляем а:
double LA=LY1-K*LX1;
Расстояние от точки до лини определяется по перпендикуляру, проведенному к линии. Если повернуть рисунок на 90 градусов против часовой стрелки, линия d будет иметь такой же коэффициент наклона как и основная линия, но с другим знаком. Зная коэффициент наклона и координаты одной точки, можно получить уравнение линии, но в данном случае в форме x=a-ky. Значит константа a:
double DA=DX+K*DY;
Располагая формулами двух линий, найдем точку их пересечения. Для этого выраженный формулой первой линии y подставляем в формулу второй линии, делаем небольшие преобразования и получаем координату x точки пересечения:
double CX=(DA-K*LA)/(1.0+K*K);
Полученный x подставляем в формулу первой линии и получаем координату y точки пересечения линий:
double CY=LA+K*CX;
Зная координаты двух точек, можно вычислить расстояние между ними по осям x и y (величины проекций на оси). Далее, при помощи теоремы Пифагора вычислить расстояние:
MathSqrt(MathPow(DX-CX,2)+MathPow(DY-CY,2))
Желающие могут поучаствовать в обсуждение вопроса в теме на форуме https://www.mql5.com/ru/forum/237198 или ниже в комментариях.
![maximus_vX lite](https://c.mql5.com/i/code/expert.png)
Советник торгует по уровням. В рынке не более двух позиции каждого вида (BUY и SELL).
![Donchain counter](https://c.mql5.com/i/code/expert.png)
Торговая система на основе индикатора Donchian Channel.
![Poker_SHOW](https://c.mql5.com/i/code/expert.png)
Советник на генераторе случайных чисел. Определение тренда на основе индикатора iMA (Moving Average, MA).
![TrueSort_1100](https://c.mql5.com/i/code/expert.png)
Советник ждет, когда линии MA(10), MA(20), MA(50), MA(100) и MA(200) выстраиваются одна над одной (или одна под другой).