Смотри, как бесплатно скачать роботов
Ищи нас в Twitter!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Скрипты

sDotToLineDist - скрипт для MetaTrader 5

Просмотров:
1923
Рейтинг:
(19)
Опубликован:
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 maximus_vX lite

Советник торгует по уровням. В рынке не более двух позиции каждого вида (BUY и SELL).

Donchain counter Donchain counter

Торговая система на основе индикатора Donchian Channel.

Poker_SHOW Poker_SHOW

Советник на генераторе случайных чисел. Определение тренда на основе индикатора iMA (Moving Average, MA).

TrueSort_1100 TrueSort_1100

Советник ждет, когда линии MA(10), MA(20), MA(50), MA(100) и MA(200) выстраиваются одна над одной (или одна под другой).