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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
itum
1550
itum  

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

вот пример:

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

Alexander Ivanov
17050
Alexander Ivanov  
Привет!

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

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

Aleksey Vyazmikin
15934
Aleksey Vyazmikin  
Itum:

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

вот пример:

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

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

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

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

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

вот пример:

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

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

itum
1550
itum  
Alexander Ivanov:
Привет!

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

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

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

Aleksey Vyazmikin:

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

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

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

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

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





Ihor Herasko:

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

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

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

Itum:

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

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

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


Ilya Baranov
4315
Ilya Baranov  

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

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

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

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

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

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

Dmitriy Skub
12002
Dmitriy Skub  
Itum:

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

вот пример:

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

Здесь посмотрите. Возможно, поможет.
Nikolai Semko
6569
Nikolai Semko  
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
6569
Nikolai Semko  
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) ; 


Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий