Вычислить расстояние между двумя параллельными линиями включая !

 

Подскажите как можно вычислить расстояние между двумя параллельными линиями включая масштаб графика (таким образом что бы масштаб не влиял на это)

вот пример:

Красная линия - расстояние между двумя параллельными линиями - как можно вычислить ?

 
Привет!

Сначала надо строить систему координат. И это увязать с ценой и временем.

Потом все дело рук геометрии. 
И смотри, для каждого таймфрейма будет своя система относительности.

 
Itum:

Подскажите как можно вычислить расстояние между двумя параллельными линиями включая масштаб графика (таким образом что бы масштаб не влиял на это)

вот пример:

Красная линия - расстояние между двумя параллельными линиями - как можно вычислить ?

Надо измерить расстояние на одной точки по оси X - это у вас время, предполагаю...

Или вам надо реально со смещением мерить? Тогда по теореме Пифагора - известны две стороны и один угол...

И ещё, смотря в чем расстояние - в пикселях? Тогда надо будет переводить все в соответствующую систему координат для начала.
 
Itum:

Подскажите как можно вычислить расстояние между двумя параллельными линиями включая масштаб графика (таким образом что бы масштаб не влиял на это)

вот пример:

Красная линия - расстояние между двумя параллельными линиями - как можно вычислить ?

Чтобы масштаб не влиял, нужно использовать фиксированный масштаб графика. Иначе он всегда будет влиять.

 
Alexander Ivanov:
Привет!

Сначала надо строить систему координат. И это увязать с ценой и временем.

Потом все дело рук геометрии. 
И смотри, для каждого таймфрейма будет своя система относительности.

А как такую систему координат можно построить, как вы это представляете ?

Aleksey Vyazmikin:

Надо измерить расстояние на одной точки по оси X - это у вас время, предполагаю...

Или вам надо реально со смещением мерить? Тогда по теореме Пифагора - известны две стороны и один угол...

И ещё, смотря в чем расстояние - в пикселях? Тогда надо будет переводить все в соответствующую систему координат для начала.

Если подумать логически то красная линия должна быть перпендикулярная двум (черным) этим линиям - что бы измерять расстояние. Мне НЕ важно в каких величинах будет измерятся это значение, мне самое главное что бы при смене масштаба это значение НЕ менялось.

Я даже пытался делать так: брать значение пересечения линий и считать количество баров между ним ... такой подход не подходит при смене масштаба !





Ihor Herasko:

Чтобы масштаб не влиял, нужно использовать фиксированный масштаб графика. Иначе он всегда будет влиять.

Почему ? А как же пропорция ?

 
А что у Вас вообще есть изначально? Как вы строите линию? Есть же функция наверное, или как?
 

Itum:

 Мне НЕ важно в каких величинах будет измерятся это значение, мне самое главное что бы при смене масштаба это значение НЕ менялось.

Ну тогда вообще просто - измеряйте в пунктах. Обе линии привязаны к цене и при изменении масштаба расстояние между ними не меняется , меняется лишь визуальное отображение линий.

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


 

Проблема вашего случая в том, что в пространстве "цена/секунда" не определено понятие расстояние между точками. Соответственно нельзя найти и кратчайшее расстояние.

Это потому что размерность осей разная. Значит надо либо:

  • Выбрать коэффициент X между  ценой и временем, тогда расстояние будет в единицах квадратный корень из ( цена x секунда x X ). 
  • считать расстояние по одной оси;

Расстояние по вертикали практически не меняется с изменением таймфрейма графика (только из-за того, что есть неполный бары и выходные).

Расстояние по горизонтали совсем не меняется.

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

 
Itum:

Подскажите как можно вычислить расстояние между двумя параллельными линиями включая масштаб графика (таким образом что бы масштаб не влиял на это)

вот пример:

Красная линия - расстояние между двумя параллельными линиями - как можно вычислить ?

Здесь посмотрите. Возможно, поможет.
 
Itum:

Подскажите как можно вычислить расстояние между двумя параллельными линиями включая масштаб графика (таким образом что бы масштаб не влиял на это)

вот пример:

Красная линия - расстояние между двумя параллельными линиями - как можно вычислить ?

Все элементарно, Ватсон...

Для того, чтобы двумерную систему Price X Time привести к плоскости Price X Price, необходимо ввести новую характеристику, которую логичнее назвать скорость изменения цены V.

И измерять её удобно в единицах пункт/секунда.

Причем V = тангенс угла вашей линии в системе, прямо пропорциональной этой:

  • 1 пиксель по вертикали = 1 _Point
  • 1 пиксель по горизонтали = 1 секунда (один минутный бар шириной 60 пикселей на вашем экране)

Тогда расстояние двумя параллельными линиями  можно вычислить двумя способами:

   double V=(Price2-Price1)/(Time2-Time1);
   ulong DeltaTime = TimeLine2-TimeLine1;      // double DeltaPrice = PriceLine2- PriceLine1;
   double R=DeltaTime*V/sqrt(1+V*V) ;          // double R=V/(DeltaPrice*sqrt(1+V*V)) ;

   // где
   // точки (Price1,Time1) и (Price2,Time2) это две любые точки лежащие на одной из параллельных линий, Time измеряется в секундах
   // TimeLine1 и TimeLine2 - время первой и второй линии при фиксированной цене (пересечение с горизонтальной линией)
   // PriceLine1 и PriceLine2- цена первой и второй линии при фиксированном времени (пересечение с вертикальной линией) 
   // DeltaPrice - расстояние между линиями в пунктах по вертикали
   // DeltaTime - расстояние между линиями в секундах по горизонтали
   // R - искомое кратчайшее расстояние между двумя параллельными линиями, скорость измерения цены которых равна V пунктов в секунду

Понятное дело, что данный перпендикуляр не будет выглядеть перпендикуляром в системе с пропорциями, отличными от пропорций вышеупомянутой системы

 
Nikolai Semko:

Все элементарно, Ватсон...

Для того, чтобы двумерную систему Price X Time привести к плоскости Price X Price, необходимо ввести новую характеристику, которую логичнее назвать скорость изменения цены V.

И измерять её удобно в единицах пункт/секунда.

Причем V = тангенс угла вашей линии в системе, прямо пропорциональной этой:

  • 1 пиксель по вертикали = 1 _Point
  • 1 пиксель по горизонтали = 1 секунда (один минутный бар шириной 60 пикселей на вашем экране)

Тогда расстояние двумя параллельными линиями  можно вычислить двумя способами:

Понятное дело, что данный перпендикуляр не будет выглядеть перпендикуляром в системе с пропорциями, отличными от пропорций вышеупомянутой системы

Можно упростить , т.к существует случай когда Time1=TimeLine1 и Time2=TimeLine2.
Тогда:

   double V=(Price2-Price1)/(Time2-Time1);
   double R=(Price2-Price1)/sqrt(1+V*V) ; 


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