- Текстовая метка - Графические объекты - Использование аналитических объектов - Графики котировок, технический и фундаментальный анализ
- Использование аналитических объектов - Графики котировок, технический и фундаментальный анализ
- Веер Ганна - Инструменты Ганна - Объекты - Чарты - MetaTrader 5 для Android
Точнее - что брать за единицу измерения по шкале цены и что брать за единиу измерения по шкале времени.
Когда будет определенность в этом вопросе, тогда не будет проблем с расчетом углов.
Например, можно единицу измерения рассчитывать следующим образом.
По шкале времени за единицу берется один бар (опять же на каком таймфрейме?)
По шкале цены. Подсчитываем количество баров на всей истории. Вычисляем средний размер бара в пунктах.
Вот, например, этот средний размер бара и принять за единицу измерения по шкале цены.
Но, опять же, это все условно.
Предложите метод определения единиц измерения по шкале цены и по шкале времени. И в соответствии с Вашим медтодом будет делаться расчет углов.
Кто-то другой метод определения единиц измерения предложит. По его методу будут уже другие углы.
Например, у Ганна была своя методика определения углов.
==============================
Индикатор по расчету углов имеется. Но для других целей он применяется.
С его помощью определяется наклон надписи для вывода на график.
==============================
Угол на графике - величина относительная. Возможно, более важно - значения ретресментов.
На примере показаны значения ретресментов. В скобках - расчетные значения - по вышеописанной методике определяем единицы измерения по шкалам времени и цены. Вычисляем площади прямоугольников с диагональю равной лучу зигзага. В скобках как раз приведено отношение площадей этих прямоугольников. Но можно вывести и значения углов.
Большое спасибо Quod Licet за изящную формулу.
#import "user32.dll" int GetClientRect( int hWnd, int lpRect[] ); #import int GetClientWidth() { int rect[4]; int hWnd = WindowHandle( Symbol(), 0 ); GetClientRect( hWnd, rect ); return ( rect[ 2 ] ); } int GetPixelsBetweenBars() { return( GetClientWidth() - 3 - 41 ) / WindowBarsPerChart() ); }
Зная количество пикселов между соседними барами и длины сторон треуга в барах по горизонтали, определяются длины сторон
по горизонтали в пикселах.
Далее, по сторонам треуга, прилегающим к углу, если бы они были известны в пикселах, легко определить нужный угол:
fi = MathArcsin( 2*S / (a*b) ).
Площадь S определяется по формуле Герона: S = MathSqrt( p * ( p - a ) * ( p - b )* ( p - c ) )
Здесь p = ( a + b + c) / 2 - полупериметр треуга.
Осталось как-то определить измерения сторон по вертикали в пикселах. Ну тут надо вычислить
WindowPricesRange = WindowPriceMax() - WindowPriceMin().
Осталось определить высоту главного окна в пикселах. Если нет никаких других индикаторных субокон, то неплохую оценку дает
функция GetClientWidth(), в которой возвращается rect[ 3 ]. Можно для более высокой точности еще вычесть из rect[ 3 ] три пиксела и еще
примерно 20, чтобы учесть зазор сверху и подписи внизу.
Теперь определяем, сколько пикселов на чарте занимает один пипс: PixelsPerPips = ( GetClientHeight() - 3. - 20. ) / WindowPricesRange .
Зная это и вертикальные координаты вершин треуга, определяем их вертикальные измерения. Наконец, считаем сами длины сторон
по теореме Пифагора в пипсах. А дальше вычисляем угол.
Конечно, муторно, но другого более простого способа пока не знаю.
А вообще вся эта бодяга с пикселами совсем не нужна, если углы сравниваются между собой только на одном зуме и одном ТФ:
для определения сторон достаточно просто тупо применить теорему Пифагора, умножив ценовой размах на подобранный коэффициент.
Углы получатся очень условными, но, может быть, тебе, lik, достаточно только их сравнения друг с другом?
Вся проблема в определении размерностей по вертикали и горизонтали.
Все-таки время (по горизонтали) и цена (по вертикали) - разные единицы измерения.
И как их правильно совместить для вычисления углов - большой вопрос?
Используется любой коэффициент, а дальше оптимизатор покажет оптимальную величину коэффициента для заданного угла, или оптимальный угол для заданного коэффициента.
Используется любой коэффициент, а дальше оптимизатор покажет оптимальную величину коэффициента для заданного угла, или оптимальный угол для заданного коэффициента.
возможно попробовать использовать ТРЕНДОВУЮ ЛИНИЮ ПО УГЛУ
Углы получатся очень условными, но, может быть, тебе, lik, достаточно только их сравнения друг с другом?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования