Стратегия Двойная вершина двойное дно

Рейтинг самых честных бинарных опционов за 2020 год:
  • Бинариум
    Бинариум

    1 место! Лидер! Лучший брокер бинарных опционов за этот год!
    Идеальный вариант для начинающих — дают бесплатное обучение и демо-счет!
    Заберите свой бонус за регистрацию:

Разворотные паттерны: Тестируем паттерн «Двойная вершина/дно»

Содержание

Введение

Анализ, проведенный в статье «Сколько длится тренд?», демонстрирует, что около 60% ценовое движение находится в тренде. И именно открытие позиции в начале тренда дает возможность получить максимальный результат. Поиски точек разворотов трендов породили большое количество разворотных паттернов. Одним из наиболее известных и часто применяемых паттернов является двойная вершина/дно.

1. Теоретические аспекты формирования паттерна

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

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

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

2. Стратегия торговли по паттерну

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

2.1. Сценарий 1

Первая точка входа основана на пробитии линии шеи. Стоп-лосс выставляется за линией вершин / впадин. При этом существуют различные подходы для определения «пробития лини шеи». Здесь может использоваться как закрытие бара под линией шеи, так и преодоление линии шеи на фиксированное расстояние. Оба подхода имеют свои плюсы и минусы. При резком движении закрытие свечи может произойти на достаточном расстоянии от линии шеи, что сделает неэффективным использование паттерна.

ТОП лучших брокеров для торговли бинарными опционами:
  • Бинариум
    Бинариум

    1 место! Лидер! Лучший брокер бинарных опционов за этот год!
    Идеальный вариант для начинающих — дают бесплатное обучение и демо-счет!
    Заберите свой бонус за регистрацию:

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

2.2. Сценарий 2

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

2.3. Сценарий 3

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

Во всех трех стратегиях предлагается выход на уровне равном расстоянию от экстремумом до линии шеи.

Также, при определении паттерна на графике следует обратить внимание, что двойная вершина/дно должно четко выделяться из ценового движения. И часто при описании паттерна добавляется ограничение: между двумя вершинами/впадинами должно быть не менее 6 баров.

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

3. Создаем советник

3.1. Поиск экстремумов

Создание торгового советника начнем с создания блока поиска паттерна. Для поиска экстремумом на графике воспользуемся индикатором зиг-заг из коробочной поставки MetaTrader 5. Перенесем расчетную часть индикатора в класс по технологии, описанной в статье [1]. Как известно, данный индикатор содержит два индикаторных буфера, содержащих значение цены в точках экстремумом. Между экстремумами индикаторные буферы содержат пустые значения. Чтобы не создавать два индикаторных буфера, содержащих множество пустых значений, они были заменены массивом структур, содержащих информацию об экстремуме. Структура для хранения информации об экстремуме имеет нижеследующий вид.

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

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

Для получения информации об экстремумах в классе предусмотрены методы:

  • ExtremumByTime — получение номера экстремума в базе по заданному времени,
  • Extremum — возвращает экстремум по указанной позиции в базе,
  • IsHigh — возвращает true, если указанный экстремум является вершиной, и false — если впадиной.

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

Основная логика класса реализована в методе Calculate. Давайте рассмотрим его подробнее.

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

Затем, определим количество необработанных экстремумов. В случае, если все экстремумы обработаны, выходим из метода с результатом true.

После этого запрашиваем необходимое количество экстремумов из индикаторного класса.

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

Далее организовываем цикл с перебором всех загруженных экстремумом. Экстремумы до последнего ранее сохраненного пропускаются.

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

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

С полным кодом всех классов и их методов можно ознакомиться во вложении.

3.2. Поиск паттернов

После определения ценовых экстремумом построим блок поиска точек открытия позиции. Разделим эту работу на 2 подэтапа:

  1. Поиск паттерна для потенциального открытия позиции.
  2. Непосредственно точки открытия позиции.

Этот функционал будет возложен на класс CPttern, заголовок которого представлен ниже.

Паттерн будем определять по четырем соседним экстремумам, информацию о которых сохраним в четырех структурах s_StartTrend, s_StartCorrection, s_EndCorrection и s_EndTrend. Для идентификации паттерна нам также потребуются уровни минимума и максимума коррекции, которые будут храниться в переменных d_MinCorrection и d_MaxCorrection. Экстремумы будем получать из экземпляра ранее созданного класса CTrends.

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

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

Вначале метода проверим актуальность указателя на объект класса CTrends и наличие сохраненных экстремумов. В случае негативного результата выходим из метода с результатом false.

Затем определяем экстремум, соответствующий дате, полученной в входных параметрах. Если экстремум не найден, выходим из метода с результатом false.

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

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

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

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

В начале метода проверим флаг на наличие ранее найденного паттерна, и если паттерн не найден, выходим из метода с результатом false.

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

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

Стоит отметить, что здесь я добавил еще некоторые ограничения:

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

После обнаружения сигнала на открытие позиции укажем тип сигнала («-1» — Продажа, «1» — Покупка) и торговые уровни. Стоп-лосс установим на уровне максимальной глубины коррекции к линии шеи после ее пробития. Для тейк-профита установим 2 уровня:

1. На уровне, равном 90% расстояния от линии экстремумов до шеи в сторону открытия позиции.

2. На уровне, равно 90% от предыдущего трендового движения.

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

С полным кодом всех классов и методов можно ознакомиться во вложении.

3.3. Собираем советник

После проведения подготовительной работы соберем все блоки в единый советник. Объявим внешние переменные, которые разделим на три блока:

  • Параметры индикатора зиг-заг;
  • Параметры для поиска паттернов и точек входа;
  • Параметры для совершения торговых операций.

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

Для реализации возможности выставления одновременно двух тейк-профитов к позиции воспользуемся технологией, предложенной в статье [2]

В функции OnInit() проведем инициализацию всех необходимых объектов. При этом, так как мы глобально не объявляли экземпляры классов CZigZag и CTrends, мы просто их инициализируем и добавим указатели на эти объекты в наш массив. В случае ошибки инициализации на любом из этапов выходим из функции с результатом INIT_FAILED.

В функции OnDeinit() произведем очистку экземпляров используемых объектов.

Как всегда, основной функционал реализован в функции OnTick. Функционал данной функции можно условно разделить на два блока:

1. Проверка сигналов на открытие позиции в ранее найденных паттернах. Запускается при каждом открытии новой свечи на малом таймфрейме поиска подтверждения сигнала.

2. Поиск новых паттернов. Запускается при каждом открытии новой свечи на рабочем (указанном для индикатора) таймфрейме.

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

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

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

При появлении нового бара определим начальную дату поиска паттернов (с учётом заданной в параметрах глубины анализируемой истории). Затем проверим актуальность указателя на объект класса CPattern и, в случае недействительного указателя, создадим новый экземпляр класса.

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

Если же найден новый паттерн, то проверим сигнал на открытие позиции, вызвав функцию CheckPattern(). После чего, при необходимости, сохраняем паттерн в наш массив и инициализируем новый экземпляр класса для следующего поиска. Цикл продолжается пока при очередном поиске метод Search() не вернет значение false.

Для полноты картины предлагаю рассмотреть алгоритм функции CheckPattern(). В параметрах данный метод получает указатель на экземпляр класса CPatern и возвращает логическое значение результата проведения операций. Напомню, что при получение результата false от рассматриваемой функции, анализируемый паттерн удаляется из массива сохраняемых объектов.

В начале функции вызовем метод поиска сигнала на открытия позиции класса CPattern. В случае ошибки проверки выходим из функции с результатом false.

При успешном поиске сигнала на открытие позиции установим торговые уровни и отправим приказ на открытие позиции в соответствии с полученным сигналом.

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

С полным кодом всех методов и функций можно ознакомиться во вложении.

4. Тестирование стратегии

После создания нашего советника пришло время проверить его работу на исторических данных. Тестирование будем проводить за период в 9 месяцев 2020 года для пары EURUSD. Поиск паттернов будем проводить на тайм фрейме М30, а точки открытия позиции будем искать на тайм-фрейме М5.

Результаты тестирование показали возможность советника генерировать прибыль. За тестируемый период советник совершил 90 трейдов, 70 из которых было прибыльными. Советник показал профит фактор 2.02 и фактор восстановления 4.77, что свидетельствует о возможности использования советника на реальных счетах. Полные результаты тестирования приведены ниже.

Заключение

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

Индикатор для бинарных опционов Binary Double Top-Bottom

Индикатор Binary Double Top-Bottom версии 2.0 предназначен для поиска такой фигуры технического анализа как «двойная вершина» «двойное дно» и облегчает поиск точек разворота на графике. Данный индикатор подходит как для бинарных опционов, так и для торговли на Forex. При помощи стрелки индикатор показывает трейдеру место нахождения фигуры двойная вершина (двойное дно). Этот технический индикатор дает сигналы с хорошей точностью. Индикатор рекомендован для работы в период, когда на рынке наблюдается высокая волатильность.

Общие характеристики

При работе с данным индикатором следует соблюдать следующие рекомендации:

  1. Торговая платформа — MetaTrader4.
  2. Основные активы — любые пары валют.
  3. Время торговли — после открытия американской и европейский сессий, но подходит любой интервал.
  4. Таймфрейм — М1 либо М5.
  5. Срок экспирации — 5 минут (если выбран М1) либо 30 минут (М5).
  6. Лучшие Брокеры — WordForex, Альпари, Finmax, PocketOption

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

Правила торговли с индикатором «двайна вершина двойное дно»

Данный индикатор дважды сигнализирует о формировании на графике двойной вершины (двойного дна). Сначала на экране появляются красный либо синий треугольник, а затем — стрелка, которая указывает направление изменения текущего тренда. Как только появятся эти сигналы и начнет формироваться новая свеча, нужно открывать сделку, покупая соответствующий бинарный опцион (Call либо Put).

Сигнал о покупке опциона Call выглядит следующим образом:

Покупать опцион Put нужно, если на графике сформируется следующая картина:

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

Скачать индикатор Binary Double Top-Bottom

Не можете разобраться как работает эта стратегия или индикатор? Напишите об этом в комментариях к этой статье, а так же подпишитесь на наш YouTube канал WinOptionSignals, где мы обязательно разберем все ваши вопросы на видео.

Смотрите так же:

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

Двойная вершина и двойное дно

Прогнозы и анализ

Двойная вершина и двойное дно

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

Консервативные трейдеры ищут дополнительное подтверждение, а агрессивные трейдеры входят в медвежью позицию после второго пика. Цель может быть спрогнозирована путем измерения высоты паттерна и проецирования этого уровня вниз от «линии шеи». Общие уровни стопов находятся чуть выше «линии шеи», посередине между «линией шеи» и вершинами или над вершинами. Двойное дно — версия этого паттерна, которая может сформироваться после нисходящего тренда. Популярным вариантом этого паттерна является 2618 trade (описанный Джейсоном Стэплтоном) с определёнными правилами конфигурации паттерна, включая описание моментов входа и выхода из сделки.

Лучшие площадки для торговли бинарными опционами за 2020 год:
  • Бинариум
    Бинариум

    1 место! Лидер! Лучший брокер бинарных опционов за этот год!
    Идеальный вариант для начинающих — дают бесплатное обучение и демо-счет!
    Заберите свой бонус за регистрацию:

Добавить комментарий