Как торговать по паттернам

 

Содержание

Как искать паттерны в биржевых данных и использовать их в торговле?

Сегодня предлагаю поразмышлять о том, как искать паттерны в биржевых данных и как их использовать для успешной торговли.

Будем получать биржевые данные Forex от одного из брокеров, сохраним в базу данных PostgreSQL и попробуем найти закономерности при помощи алгоритмов машинного обучения.

В статье есть несколько приятных бонусов в виде кода на Python — Вы сможете сами проанализировать любые (почти) биржевые данные (или значения индикаторов), запустить собственного торгового робота и проверить любую торговую стратегию.

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

Что такое паттерн и как его использовать?

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

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

Такой механизм вполне может стать частью успешной торговой стратегии в совокупности с другими методами анализа рынка.

Подготовка

  1. Для того, чтобы получать исторические данные и выставлять заявки на Forex через RESTv20 API, нам потребуется demo счет у известного брокера. Регистрация занимает минуту, после чего Вы получаете token (уникальный ключ для доступа) и номер счета.
  2. Необходим Python версии 2.7 с установленными библиотеками: oandapyV20, sklearn, matplotlib, numpy, psycopg2. Их можно установить через pip.
  3. Необходим PostgreSQL, у меня версия 9.6.

Описание модели

Самое первое, что нужно описать — собственно, исторические данные.

Создадим класс Candle, который будет хранить информацию о каждой свече:

Описание паттерна будет таким:

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

Введем еще два параметра:

  1. Длина серии (Length) — количество последовательных элементов в серии паттерна
  2. Ширина окна (window size) — количество последовательных элементов после серии, для хотя бы одного из которых выполняется условие выбора паттерна

Если мы покупаем по цене ask = X, то продать должны по возросшей цене bid > X. И наоборот, если мы продаем по цене bid = Y, то купить должны по цене ask < Y. В этом изменение цены будет больше спреда на момент покупки, и мы получим прибыль.
Сегодня я предлагаю использовать эти простые правила для отбора паттернов, но, на самом деле, чтобы все хорошо работало, к ним нужно добавить несколько фильтров. Это я предлагаю сделать Вам позже самостоятельно. Не забывайте, что выбор исходных данных (периода, рынка, инструмента и тп) очень важен — где-то паттерны есть, а где-то нет. Или нужно изменить условия их отбора.

Получаем данные

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

Бонус: я оставил в этом классе метод, который загружает любые исторические данные с Финама. Это очень удобно, потому что можно проанализировать как Forex, так и рынки ММВБ и ФОРТС. Минус только в том, что данные могут быть загружены с периодом не менее 1 минуты, в то время как второй метод может загрузить 5-секундные свечи.

Теперь сделаем простой скрипт, которые загружает данные в БД:

Если вы внимательно посмотрите на данные от Oanda, то увидите, что некоторые свечи пропущены. Причем, чем меньше период загружаемых данных, тем больше пропусков. Это не ошибка, а связано с тем, что цена за время пропусков не изменилась. Поэтому есть два способа загрузки таких данных — сохранять как есть, или добавлять пропущенные свечи со значениями, аналогичными последней свече от брокера с нулевым объемом. В репозитории на Github реализованы оба варианта, последний закомментирован. Так же, если Вы посчитаете нужным добавлять пропущенные свечи, есть скрипт DbCheck.py, проверяющий правильность последовательности свечей для этого случая.

Анализ данных

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

В первом методе как раз описываются условия для выбора паттернов, а последний возвращает векторы для алгоритмов. Обратите внимание на метод pattern_serie_to_vector, который нормализует данные. Как уже говорилось выше, цены могут быть разные, а форма одинаковая (аналог в тех анализе — паттерн треугольник, неважно какие цены, важно взаимное расположение последовательных свечей).

А теперь самое интересное, проверим результат работы двух классификаторов — градиентного бустинга и линейной регрессии. Будем оценивать площать под ROC кривой (AUC_ROC) для кроссвалидации по 5 блокам, в зависимости от настроек алгоритма.

Напоминаю, что площадь под ROC кривой меняет свое значение от 0.5 (самый плохой классификатор) до 1 (самый лучший классификатор). Наша цель — получить хотя бы 0.8.

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

Градиентный бустинг с возможным перебором по длине серии и окну (в хорошей модели с увеличением числа деревьев точность должна расти, поэтому надо выбрать подходящую длину серии и окно):

Аналогично, линейная регрессия с настройкой параметров:

Как я уже говорил, условия неполные. Поэтому получаем точность всего 0.52. Но если вы их дополните, то точность будет лучше. Можете попробовать другие алгоритмы — нейросети, random forest и многие другие. Нужно не забыть про проблему переобучения — например, при большом числе деревьев в градиентном бустинге.

Проверка на ошибки в коде: если вместо реальных данных в БД взять от них sin(), то для обоих классификаторов AUC_ROC на кроссвалидации будет 0.96.

Торговый робот

В заключение предлагаю вам код торгового робота, который может ставить заявки как на demo счете, так и на реальном. Самое главное — при закрытии сделок он строит гистограмму профитов по сделке, основываясь на информации, полученной от брокера. То есть, вы реально сможете проверить, как работает ваша торговая стратегия.

Полный исходный код здесь.

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

Отдельное спасибо хочу сказать авторам курса от Яндекс по машинному обучению на Coursera. А так же Andrew Ng за замечательные лекции на этом же ресурсе.

UPDATE:
А вот что получается на градиентном бустинге по склееному фьючерсу SI с финама за последний год (если под критерием выбора паттерна понимать скачок цены на 1% в нужную сторону):

И это уже неплохой результат. Матожидание в плюс.
А тут как раз Альфа Директ выпустил новый серверный API 🙂

Как торговать по паттернам

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

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

Что такое паттерн?

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

Что же имеется в виду под моделью? Обычно модель описывается определенным набором чередующихся ценовых пиков и впадин, их максимумов и минимумов. Особенно ярко такие наборы отображаются на барном и свечном графиках. Трейдеры считают, что такие определенные наборы пиков и впадин имеют свойство повторяться.

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

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

Виды паттернов

Благодаря современным компьютерным технологиям число видов ценовых формаций замечено уже очень много. Их стало значительно больше, чем во времена отсутствия технологической составляющей в рыночной торговле. Собственно, впервые ценовую модель заметили уже в средневековой Японии, когда придумали свечной график для отображения движения цены.

Классическими образцами ценовых паттернов являются классические конфигурационные модели: «Голова и плечи», «Вымпел», «Флаг», «Три вершины» и прочие. Каждая из этих ценовых формаций является устойчивой, подчиняется определенному набору правил формирования. Также, эти конфигурации часто повторяются, согласно аксиоме технического анализа.

Классический паттерн «Голова и плечи»

Рис.1. Классический паттерн «Голова и плечи».

Паттернами также являются волновые формации теории Эллиотта. Каждая волна Эллиотта тоже подчинена правилам формирования и является устойчивой моделью, описывающей некую ценовую ситуацию на рынке.

Волны Эллиотта

Рис.2. Волны Эллиотта.

Свечные модели также являются паттернами. Во многом эти модели повторяют классические конфигурации, как, например, модель «Три Будды» повторяет формацию барного графика «Голова и плечи». Однако в свечных моделях есть очень много формаций, которые легче разглядеть только на свечном графике. Примерами свечных моделей могут стать «Поглощение», «Просвет в облаках», «Молот», «Повешенный» и многие другие.

Свечные паттерны

Рис.3. Свечные паттерны

Некоторые исключения

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

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

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

13 наиболее популярных графических паттернов в трейдинге

Трейдинг_Наиболее популярные паттерны

Па́ттерн (от англ. pattern — образец, шаблон, система) — заимствованное слово, обозначающее повторяющийся элемент в различных сферах жизни — в природе, психологии, музыке, дизайне, трейдинге и т.д. Применительно к трейдингу графическими паттернами называются устойчивые повторяющиеся сочетания данных цены, объёма или индикаторов.

Что такое графический паттерн в техническом анализе?

Графические паттерны – это характерные, повторяющиеся участки на графике цены, их еще называют фигурами технического анализа или техническими фигурами.

В результате многолетних наблюдений за рынком было замечено, что периодически на графике цены формируются графические паттерны (или технические фигуры), по которым можно прогнозировать дальнейшее движение цены. Существуют паттерны, указывающие на разворот тенденции, и паттерны, указывающие на ее продолжение. Здесь важно отметить, что вероятность отработки графических паттернов не является стопроцентной, но, тем не менее, она достаточно высока для того, чтобы использовать паттерны в торговле.

Графические паттерны «Голова и плечи», «Перевернутая голова и плечи»

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

Фигура «Голова и плечи»

Техническая Фигура «Голова и плечи» — формируется на максимумах графика цены в ходе восходящей тенденции. Через точки 1 и 2 проводится линия основания фигуры (линия шеи). Фигура считается полностью сформированной только после закрытия цены ниже линии основания фигуры.

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

Графический паттерн

Графический паттерн «Голова и плечи»

Фигура «Перевернутая голова и плечи»

Паттерн «Перевернутая голова и плечи» — формируется на минимумах графика цены в ходе нисходящей тенденции. Через точки 1 и 2 проводится линия основания фигуры (линия шеи). Данная фигура технического анализа считается полностью сформированной только после закрытия цены выше линии основания фигуры.

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

Графический паттерн

Графический паттерн «Перевернутая голова и плечи»

Графические паттерны «Двойная вершина», «Двойное дно»

Разворотные паттерны, схожие по смыслу с описанными выше паттернами «Голова и плечи», «Перевернутая голова и плечи». Данные фигуры технического анализа образуются после восходящего или нисходящего движения, сигнализируют о завершении тенденции и предстоящей коррекции или развороте.

Фигура «Двойная вершина»

Паттерн «Двойная вершина» формируется после восходящего движения на локальном максимуме графика. Состоит из двух последовательных вершин на графике цены, через минимум между ними (точка 1) проводится горизонтальный уровень поддержки – линия основания фигуры.

После пробития ценой линии основания техническая фигура «Двойная вершина» считается сформированной, рекомендуются продажи. Цель отработки – снижение цены от линии основания фигуры на величину Н – высоту фигуры в пунктах.

Графический паттерн

Графический паттерн «Двойная вершина»

Фигура «Двойное дно»

Паттерн «Двойное дно» формируется после нисходящего движения на локальном минимуме графика. Состоит из двух последовательных впадин на графике цены, через максимум между ними (точка 1) проводится горизонтальный уровень сопротивления – линия основания фигуры.

После пробития ценой линии основания техническая фигура «Двойное дно» считается сформированной, рекомендуются покупки. Цель отработки – рост цены от линии основания фигуры на величину Н – высоту фигуры в пунктах.

Графический паттерн

Графический паттерн «Двойное дно»

Графические паттерны «Тройная вершина», «Тройное дно»

Относятся к разворотным паттернам, очень схожи по принципам формирования и отработки с описанными выше паттернами «Двойная вершина» и «Двойное дно». Точно так же возникают на локальных экстремумах графика цены и предупреждают о возможной коррекции или развороте предыдущей тенденции.

Фигура «Тройная вершина»

Техническая фигура «Тройная вершина» — паттерн образуется на максимумах графика цены после предшествующей восходящей тенденции. Представляет из себя три последовательные вершины на графике цены, находящиеся примерно на одном уровне. Через два находящихся между ними минимума (точки 1 и 2) проводится линия основания фигуры, которая может быть горизонтальной, либо иметь небольшой наклон вверх или вниз. Фигура «Тройная вершина» считается сформированной после закрытия цены ниже линии основания фигуры. Рекомендуются продажи от линии основания фигуры с расчетом на снижение цены на величину высоты фигуры Н.

Графический паттерн

Графический паттерн «Тройная вершина»

Фигура «Тройное дно»

Паттерн «Тройное дно» — образуется на минимумах графика цены после предшествующей нисходящей тенденции. Представляет из себя три последовательные впадины на графике цены, находящиеся примерно на одном уровне. Через два находящихся между ними максимума (точки 1 и 2) проводится линия основания фигуры, которая может быть горизонтальной, либо иметь небольшой наклон вверх или вниз. Фигура технического анализа «Тройное дно» считается сформированной после закрытия цены выше линии основания фигуры. Рекомендуются покупки от линии основания фигуры с расчетом на рост цены на величину высоты фигуры Н.

Графический паттерн

Графический паттерн «Тройное дно»

Графический паттерн «Клин»

Паттерн «Клин» относится к разворотным фигурам, образуется на максимумах и минимумах графика цены между двумя сходящимися линиями поддержки и сопротивления. Он имеет схожие черты с паттерном «Треугольник», основным отличием является наклон фигуры (обеих линий, образующих его) в одном направлении. Пробитием «Клина», как разворотной фигуры считается выход цены из него в сторону, противоположную наклону клина.

Если паттерн «Клин» сформирован на максимумах графика в ходе восходящего тренда – рекомендуются продажи после закрытия цены ниже линии поддержки, цель отработки – величина основания паттерна (Н) в пунктах. Если паттерн «Клин» сформирован на минимумах графика в ходе нисходящего тренда – рекомендуются покупки после закрытия цены выше линии сопротивления, цель отработки – величина основания паттерна (Н) в пунктах.

Графический паттерн

Графический паттерн «Клин»

Графический паттерн «Бриллиант»

Паттерн «Бриллиант» — редкий разворотный паттерн в виде ромба. Формируется на локальных максимумах и минимумах графика цены в ходе восходящего или нисходящего тренда. Указывает на то, что действующая тенденция ослабла и ожидается либо коррекция, либо разворот и смена на противоположный тренд.

Если паттерн «Бриллиант» сформирован на максимумах графика в ходе восходящего тренда – рекомендуются продажи после закрытия цены ниже линии поддержки технической фигуры, цель отработки – высота паттерна (Н) в пунктах. Если «Бриллиант» сформирован на минимумах графика в ходе нисходящего тренда – рекомендуются покупки после закрытия цены выше линии сопротивления паттерна, цель отработки – высота паттерна (Н) в пунктах.

Графический паттерн

Графический паттерн «Бриллиант»

Графический паттерн «Прямоугольник»

Универсальный паттерн «Прямоугольник», может предвещать как разворот, так и продолжение действующего тренда. Выглядит как боковой коридор, в котором консолидируется график цены, ограниченный горизонтальными уровнями поддержки и сопротивления. Рекомендуется вести торговлю в сторону пробития паттерна – если цена закрывается выше уровня сопротивления – покупаем, если цена закрывается ниже уровня поддержки – продаем. Цель отработки – высота паттерна (Н) в пунктах.

Графический паттерн

Графический паттерн «Прямоугольник»

Графический паттерн «Флаг»

Паттерн «Флаг» — фигура продолжения действующей тенденции. Выглядит в виде флага, когда после сильного ценового движения («древко флага»), формируется зона коррекции («полотнище флага»), которая расположена либо горизонтально, либо имеет наклон против «древка».

Зона коррекции паттерна «Флаг» может иметь вид «Прямоугольника», «Треугольника», «Клина». После завершения коррекции и закрытия цены выше линии сопротивления «полотнища флага» рекомендуются покупки, величина отработки – высота «древка флага» (Н).

Графический паттерн «Флаг» Графический паттерн «Флаг»

Графический паттерн «Треугольник»

Можно выделить три основных вида «Треугольников»:

Равносторонний треугольник

Универсальный паттерн «Треугольник», может предвещать как разворот, так и продолжение действующего тренда. Образуется между двумя сходящимися линиями поддержки и сопротивления. Рекомендуется вести торговлю в сторону пробития паттерна – если цена закрывается выше линии сопротивления – покупаем, если цена закрывается ниже линии поддержки – продаем. Цель отработки – величина основания паттерна (Н) в пунктах.

Графический паттерн

Графический паттерн «Равносторонний Треугольник»

Восходящий Треугольник

«Восходящий Треугольник» — паттерн продолжения восходящей тенденции. Образуется между горизонтальным уровнем сопротивления и восходящей линией поддержки. После закрытия цены выше уровня сопротивления рекомендуются покупки, цель отработки – величина основания паттерна (Н) в пунктах.

Графический паттерн

Графический паттерн «Восходящий Треугольник»

Нисходящий треугольник

«Нисходящий Треугольник» — паттерн продолжения нисходящей тенденции. Образуется между горизонтальным уровнем поддержки и нисходящей линией сопротивления. После закрытия цены ниже уровня поддержки рекомендуются продажи, цель отработки – величина основания паттерна (Н) в пунктах.

Графический паттерн

Графический паттерн «Нисходящий треугольник»

Виктор Грязин

Торгует на финансовых рынках с 2004 года. Приобретённые опыт и знания помогли ему сформировать собственный подход к анализу активов, деталями которого он охотно делится со слушателями вебинаров RoboForex.

Источник https://habr.com/ru/post/324244/

Источник https://utmagazine.ru/posts/11631-kak-torgovat-po-patternam

Источник https://blog.roboforex.com/ru/blog/2019/08/01/trejding-naibolee-populjarnye-patterny/