Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Делись ссылками на продукты и получай доход с этого
Aleksandr Chugunov
4816
Aleksandr Chugunov 2010.09.04 14:47 

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

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


=== редактирование===

Уважаемый sergeev на странице 9 дал код, я подправил под свою задачу:

Важное замечание: при перемотке, сжатии/растяжении значения будут меняться!

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

#import

// B1 и B2 - это номера баров
double GetLengthTrendLineInPixels(int B1, double P1, int B2, double P2)
{
    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 lengthW = wW / W * MathAbs(B1 - B2); // ширина в пикселях; wW / W = 1 бар в пикселях
    double lengthH = wH / H * MathAbs(P1 - P2); // высота в пикселях; wH / H = 1 пункт в пикселях
    return(MathSqrt(MathPow(lengthW, 2) + MathPow(lengthH, 2)));
}
Alexandr Bryzgalov
27398
Alexandr Bryzgalov 2010.09.04 14:54  
AlexSTAL:

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

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

не хорошая затея, получается ты будешь складывать пункты и время, так нельзя(не логично) )
Alexandr Bryzgalov
27398
Alexandr Bryzgalov 2010.09.04 14:55  
ну, а если чисто математически то: корень квадратный из суммы квадратов катетов(теорема Пифагора)
techno
1226
techno 2010.09.04 14:58  
а просто длина в пунктах если из большей вычесть меньшую не подойдет?
Abzasc
1284
Abzasc 2010.09.04 15:21  
sanyooooook:
не хорошая затея, получается ты будешь складывать пункты и время, так нельзя(не логично) )
А если вместо времени - номера баров*ТФ? Напр., 1: 1,5413+48*15, 2: 1,5466+1*15.
Alexandr Bryzgalov
27398
Alexandr Bryzgalov 2010.09.04 15:36  
Abzasc:
А если вместо времени - номера баров*ТФ? Напр., 1: 1,5413+48*15, 2: 1,5466+1*15.
да хоть что, если не цена, то смысла нет )
Nikolay Demko
12463
Nikolay Demko 2010.09.04 16:06  
sanyooooook:
да хоть что, если не цена, то смысла нет )

Если речь идёт об относительной величине то смымл есть.

Смысл по пифагору вычислять длинну вектора будет в дугах фибоначи.

Просто со временем импульс можно сказать перегорает, и если движение не реализовано за определённое время то оно выдыхается.

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

Так что смело суммируйте квадрат разности цены (а лучше перевести в пункты пройденного пути) и квадрат количества бар движения,

ну и корень вам даст искомую относительную величину для стравнения.

Abzasc
1284
Abzasc 2010.09.04 16:09  
sanyooooook:
да хоть что, если не цена, то смысла нет )
Смысл в пути :)
Nikolay Demko
12463
Nikolay Demko 2010.09.04 16:28  
Abzasc:
Смысл в пути :)

Дорогу осилит идущий, и путь длинной в тысячу миль начинается с первого шага.

Млин так в скептик-философы скоро к Математу запишусь :о)

Abzasc
1284
Abzasc 2010.09.04 16:32  

Ну вообще то я имел в виду длину гипотенузы :) а вы что подумали? ;)

Sceptic Philozoff
Модератор
17844
Sceptic Philozoff 2010.09.04 16:34  
О какой гипотенузе можно говорить, если "катеты" не просто из разного теста, а в разных пространствах? Точнее, они просто несоизмеримы.
12345678...25
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий