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

 
AlexSTAL:

Как получить длину линии зигзага (длину волны по сути) в любых единицах, зная координаты двух точек?

Необходимо для сравнения длин двух волн в процентном соотношении

решается все довольно просто - надо обратится к GDI функциям

вот пример даже посложнее - расчет угла наклона МА. Используются пиксельные расстояния


#import "user32.dll"
        int GetWindowDC(int dc);
        bool GetWindowRect(int h, int& pos[4]);
        int ReleaseDC(int h, int dc);
#import

//---------------------------------------------------------------   CheckAngle
int CheckAngle(string smb, int tf, int iB)
{
  double p1, p2, ang;
  p1=iMA(smb, tf, dPeriod, 0, dMode, dPrice, iB+1);
  p2=iMA(smb, tf, dPeriod, 0, dMode, dPrice, iB);

  int hWnd=WindowHandle(Symbol(), Period()); int hDC=GetWindowDC(hWnd); // получаем хендл окна
  int rect[4]; GetWindowRect(hWnd, rect); ReleaseDC(hWnd, hDC);   // берем его DC
  double wW=rect[2]-rect[0]; double wH=rect[3]-rect[1];           // получаем высоту и ширину в пикселях
  double H=(WindowPriceMax()-WindowPriceMin()); double W=WindowBarsPerChart(); // переводим на график
  double x=wW/W; double y=((p2-p1))*wH/H;                         // определяем катеты
  ang=MathArctan(y/x)*180/3.1415926535; if (ang>180) ang=ang-360; // равняем относительно оси Х
}


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

 

Во! О чём я и говорил, но про API забыл совсем (слишком редко это нужно мне было):

AlexSTAL:

Если бы можно было получить размер графика в пикселях - проблем бы не было. Есть операторы, которые получают ценовой минимум и максимум, есть которые количество баров на экране. Перевести их в условные единицы не проблема


В очередной раз огромное спасибо настоящему профессионалу Алексею!

 

Я конечно опоздал к обсуждению.

Вопрос к Математу:

В каких единицах получается гипотенуза такого треугольника если она параллельна оси попугаев? В каких единицах были длины катетов?

А по существу вопроса думаю нужно считать длину не в барах, а во времени. Минимальный таймфрейм M1 - значит время измеряется дискретно с шагом 1 минута. Вот количество минут и надо принимать за длину одного из катетов. Такой подход гарантирует одинаковую длину катета на разных таймфреймах и не зависит от масштабирования в терминале.

 
api:

Я конечно опоздал к обсуждению.

Вопрос к Математу:

В каких единицах получается гипотенуза такого треугольника если она параллельна оси попугаев? В каких единицах были длины катетов?

А по существу вопроса думаю нужно считать длину не в барах, а во времени. Минимальный таймфрейм M1 - значит время измеряется дискретно с шагом 1 минута. Вот количество минут и надо принимать за длину одного из катетов. Такой подход гарантирует одинаковую длину катета на разных таймфреймах и не зависит от масштабирования в терминале.

Не Математ, но спрошу, а в каких единицах ты измеряешь длины катетов?
 
sanyooooook:
Не Математ, но спрошу, а в каких единицах ты измеряешь длины катетов?

В тех же, что и длину гипотенузы!
 
api:

В тех же, что и длину гипотенузы!
т.е. корень квадратный из: квадрата попугаев плюс квадрат попугаев, а причем тут яблоки?
 
sanyooooook:
т.е. корень квадратный из: квадрата попугаев плюс квадрат попугаев, а причем тут яблоки?

Картинка вообще не имеет смысла
 
sergeev:

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

Зачем тогда все эти танцы с бубном (с пикселями)?

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

 
sanyooooook:
т.е. корень квадратный из: квадрата попугаев плюс квадрат попугаев, а причем тут яблоки?

Не совсем.

Это абстрактное пространство и оно ничего не имеет общего с реальным пространством и не является его проекцией. Для доказательства этого представьте себе любой предмет в этом пространстве, например попугая, расположенного так, что его линия роста расположена параллельно оси попугаев. Глядя на него со стороны оси попугаев вы видите целого попугая, а рассматривая его со стороны оси яблок вы видите какую-то часть яблока или несколько яблок - не важно. С этой стороны вы не видите попугаев. Теперь разверните попугая так, чтобы линия его роста была параллельна оси яблок. В этом случае, наблюдая попугая со стороны оси яблок, вы увидите.... Правильно - несколько яблок и никаких попугаев. А со стороны оси попугаев вы будете наблюдать... ну скажем - "попугайское крылышко", говоря языком известного персонажа мультфильма.

Это такое хитрое пространство, которое тем не менее подчиняется закону Пифагора.

Но в нашем случае никто графики не вращает и цена остается ценой а время - временем.

 
Mischek:

Картинка вообще не имеет смысла
)
Причина обращения: