Угловые операции для трейдеров
Aleksej Poljakov | 23 февраля, 2024
Введение
Угловые операции в трейдинге используются очень давно. Основным достоинством этих операций является простота построения углов и их наглядность. Ярким примером угловых операций являются инструменты Ганна.
Казалось бы, все про углы уже известно. Но мы попробуем взглянуть на углы под другим углом (прощу прощения за тавтологию). И попытаемся вспомнить хорошо забытое старое, чтобы получить что-то совершенно новое.
Строим первый угол
Угол – это одна из простейших геометрических фигур. Провести две линии из одной точки – что может быть проще? При этом одной из линий, чаще всего, служит ось абсцисс.
В этом случае величину угла очень просто рассчитать через координаты точки P.
Так как угол является безразмерной величиной, то по обеим осям должны быть одинаковые величины. Если по одной оси у вас отсчитываются метры, а по другой – килограммы, то вы получите какое-то соотношение между ними, но никак не угол.
Давайте попробуем воплотить угловую операцию в виде индикатора. Я буду делать такой индикатор: по осям X и Y будут отображаться цены разных валютных пар. Тогда небольшой по значению угол будет соответствовать большой цене первой валютной пары, и низкой цене для второй. Соответственно, большой угол будет говорить о том, что цена второго символа выше, чем первого. То есть, наш будущий индикатор будет определять перекупленность/перепроданность одной валютной пары относительно другой. Неплохая идея для парного трейдинга.
Первое затруднение, с которым мы сталкиваемся, по разным осям у нас разные величины (для примера я взял EURUSD и USDJPY). Это затруднение мы преодолеваем легко и просто – цену каждого инструмента мы поделим на величину пункта.
Тогда мы сразу решаем две проблемы – по обеим осям у нас будут сравнимые величины (цена, выраженная в пунктах), плюс масштаб по этим осям будет одинаков. А вот так выглядит наш индикатор.
На первый взгляд индикатор кажется довольно банальным. Его значение колеблется около какого-то среднего значения, а разность между максимумом и минимумом индикатора составляет всего-то 2-3 градуса. Но, давайте не будем делать преждевременных выводов. Возможно, мы сумеем улучшить этот индикатор и сделать его более информативным.
Небольшое напоминание. Наиболее распространенной угловой мерой, которую мы используем в обычной жизни, является градус. А для математических вычислений, чаще всего, используется радианная мера. Переход от градусной меры к радианной и наоборот, осуществляется по формулам:
Т.е., перевод градусов в радианы и обратно – это просто умножение на некоторый масштабирующий коэффициент. Однако, если вам нужно вывести информацию в числовом виде, то предпочтительнее использовать градусы. Согласитесь, что 45° выглядит лучше, чем 0.78539 rad. По сути одно и то же, но первое значение выглядит нагляднее.
Углы и нормальное распределение
При изучении реальных процессов исследователи используют различные распределения вероятностей случайных величин. Наиболее известным распределением является нормальное.
Давайте вспомним некоторые свойства нормального распределения. Его график представляет собой колоколообразную линию. А концы этой линии уходят в бесконечность.
Мысленно проделаем такую операцию. Мы начнем потихоньку сворачивать ось X в окружность. При этом, мы будем следовать такому правилу – чем дальше мы отойдем от центра, тем сильнее будет сворачивание. Если мы проявим терпение, то ось X превратится в окружность. Исказится и сама линия нормального распределения, и в результате у нас получится круговое нормальное распределение.
Первое отличие обычного нормального распределения от кругового заключается в том, что -∞ отображается в -180°, а +∞ в +180°. Но, не ради этого мы старались. Главное предназначение кругового нормального распределения – обработка угловых величин. Сама формула кругового нормального распределения выглядит так:
Как мы можем видеть, в круговом распределении используются и среднее, и среднеквадратическое отклонение. Все, как у обычного нормального распределения. Немного пугает суммирование, но при работе с реальными данными мы легко справимся с этими бесконечностями.
Давайте возьмем наш индикатор и применим к нему круговое нормальное распределение.
Сначала нам нужно определить среднее всех углов, встречающихся в истории. В нашем случае, найти среднее не составит большого труда – обычное суммирование и деление на количество наблюдений. Но, вообще говоря, угловое среднее нужно искать немного иначе. Представьте, что вам нужно найти среднее двух углов – 10° и 350°. Обычный подход дает ответ в 180°. И, этот ответ неправильный. Правильный ответ – их среднее равно нулю.
Чтобы получить правильный ответ в любой ситуации нам придется поступить следующим образом: сначала нам нужно найти суммы синусов и косинусов всех углов. Разделим первую сумму на вторую, и получим тангенс среднего угла.
Теперь, найти величину среднего угла не составит никакого труда. Но, и тут есть небольшое условие. Если все углы лежат в пределах от -90° до +90°, то можно использовать функцию MathArctan. Если углы выходят за эти пределы нужно обязательно использовать более универсальную функцию MathArctan2.
Таким образом, средний угол будет равен:
После того, как мы оценили значение среднего угла, можно приступать к оценке среднеквадратического отклонения. Для этого мы можем использовать метод Ямартино. Сначала нам нужно найти вспомогательную величину:
Она дает уже достаточно точную оценку стандартного отклонения, но и ее можно улучшить:
Теперь, давайте внесем изменения в наш индикатор. Его показания будем рассчитывать так: сначала найдем разность между текущим и средним углами, а потом сравним эту разность со среднеквадратическим отклонением. В результате у нас получится такая картинка.
Индикатор позволяет точнее определять уровни перекупленности/перепроданности, а его ближайшим аналогом является индикатор CCI.
Углы и линейная функция
С углами для однотипных данных мы с вами разобрались. А можно ли применить угловые операции к тренду? Ответ – нет, так как мы имеем дело с данными разных типов, по одной оси у нас время, а по другой – цена.
Что ж, ответ правильный, но неверный. Давайте вспомним о линейной функции. Она описывает линейную взаимосвязь между двумя независимыми переменными и задается уравнением:
Казалось бы, а где здесь угол? А угол скрывается в коэффициенте k. Этот коэффициент равен тангенсу угла наклона линии относительно оси X.
Давайте попробуем применить эту функцию для описания тренда. Уравнение линейной функции для трейдеров будет выглядеть так:
В этом случае коэффициент k получит еще одно толкование – он показывает среднее изменение цены за единицу времени. Еще одно маленькое примечание: я вписал в формулу время – это академично и правильно. Но, при реальных расчетах гораздо проще использовать вместо времени индексы. Во-первых, праздники и выходные дни очень сильно повлияют на точность расчетов. А во-вторых, использование индексов делает формулы (и вычисления) намного проще. Единственное требование к этим индексам – они должны возрастать слева направо.
Теперь давайте посмотрим на способы оценки параметров линейного тренда. В первую очередь мы можем использовать метод наименьших квадратов (МНК). Напомню, что я вместо времени использую индексы, значения которых изменяются от 0 до n-1.
Но есть и более надежные способы для оценки этих параметров. Например, мы можем использовать оценку Тейла-Сена. Давайте посмотрим, как эта оценка может работать в реальных условиях. Возьмем тренд с параметрами k=0.25 и b=10. Добавим к нему немного шума, в виде случайно распределенных отклонений. По получившимся точкам попробуем найти параметры исходного тренда. В результате мы получим примерно такую картинку.
На первый взгляд кажется, что робастный метод не дает больших преимуществ. Но, это только потому, что ошибки в нашей модели тренда были распределены одинаково и по нормальному закону. Реальные цены могут не соответствовать этому критерию. Тогда метод Тейла-Сена будет работать намного лучше, к тому же он может дать немного больше информации. Именно робастную оценку я буду использовать в дальнейшем.
Итак, давайте рассмотрим, как можно оценить параметры линейного тренда с помощью метода Тейла-Сена. Сначала нам нужно найти параметр k. Он будет равен медиане из всех возможных разностей вида:
Значение медианы можно найти следующим образом. Сначала записываем все значения в массив. Потом сортируем его. Медиана будет равна значению, находящемуся в центре массива.
Теперь мы можем приступать к оценке параметра b. Для этого нам нужно найти медиану от всех возможных значений:
С теорией мы разобрались, пора переходить к практике. Давайте посмотрим, какие возможности открывает нам использование оценки Тейла-Сена.
Оценка Тейла-Сена и индикаторы
После оценки параметров тренда, у нас осталось два массива с данными. Давайте посмотрим, можем ли мы использовать эти массивы как-то еще.
Итак, мы оценили параметры тренда, и даже построили его линию. Теперь мы можем построить канал, внутри которого происходит движение цены. Для этого нам нужно сначала оценить, насколько сильно отклоняются цены от трендовой линии.
Возьмем массив, с помощью которого мы оценивали значение параметра b. Для того, чтобы оценить отклонение нам нужно найти медиану абсолютного отклонения. Т.е., сначала для каждого элемента массива находим абсолютное значение разности с параметром b. После чего остается найти медиану из полученных значений. Эта медиана даст робастную оценку стандартного отклонения.
Зная стандартное отклонение, мы можем построить трендовый канал. Например, так выглядит канал шириной в 6 стандартных отклонений.
Этот индикатор по своей сути похож на Bollinger Bands. Кроме того, линии трендового канала можно использовать в качестве линий поддержки и сопротивления.
Кроме того, мы можем построить веер трендовых линий. Все вычисления производятся так же, как и при построении канала. Единственное отличие – нужно взять параметр k и соответствующий массив. Вот так выглядит веер с размахом в 1 отклонение по углу.
Ну, и конечно же, мы можем совместить канал и веер. Для этого сначала мы строим линии канала. А потом применяем к этим линиям веер. В результате мы получим примерно такую картинку.
Итак, применение робастных методов позволило нам получить линию тренда, и еще три дополнительных индикатора, которые можно использовать в техническом анализе.
Еще несколько слов
Угловые операции можно применять не только для построения трендов и углов. Возьмем, уже упоминавшийся в статье индикатор CCI. А что будет, если мы сделаем аналогичный индикатор. Но, в качестве исходных данных, мы будем использовать не цены, а углы тренда.
Тогда, мы сможем оценивать изменения тренда по истории. А вот так будет выглядеть наш индикатор.
Все технические индикаторы можно переделать под работу с угловыми величинами. С такими переделками вы можете открыть для себя новые способы технического анализа.
Заключение
При написании статьи были использованы следующие программы.
Название | Тип | Описание |
---|---|---|
Angle Two Pairs | Индикатор |
|
LS vs Robust | Скрипт | Сравнивает работу МНК и оценку Тейла-Сена |
Theil–Sen estimator | Индикатор |
|
Angle CCI | Индикатор |
|