Найти в Дзене
Трейдинг и Роботы

#17 Pip: Доработка, тестирование, доработка

В прошлый раз я сумел хорошо выделить тренд, но взял неподходящий индикатор для поиска точки входа в тренд. Найду в этот раз. Спойлер: и не раз.
Оглавление

В прошлый раз я сумел хорошо выделить тренд, но взял неподходящий индикатор для поиска точки входа в тренд. Найду в этот раз. Спойлер: и не раз.

На этом я остановился в прошлый раз

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

Пока я сделал алгоритм, который входит на каждой новой свече по треду — точка для входа не определена — и выглядит это так:

Тестирование Pip 1
Тестирование Pip 1

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

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

Поиск нового индикатора точки входа

Первые идеи: для поиска точки коррекции тренда можно использовать перекупленность/перепроданность, поискать «ямку/кочку» графически или с помощью индикатора.

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

И так, спустя некоторое время поиска мне попался индикатор Accelerator Decelerator (AC), который измеряет ускорение и замедление текущей движущей силы рынка.

Столбчатая диаграмма AC - это разница между значением 5/34 гистограммы движущей силы и 5-периодной простой скользящей средней, взятой из этой гистограммы.

теория для поиска точки входа с помощью AC в Pip 3
теория для поиска точки входа с помощью AC в Pip 3

Точка входа в рынок для Pip 3: когда столбчатая диаграмма AC лежит в противоположном конверте от направления тренда, определенного TrendEnvelopes, и динамика значения оказывается сонаправлена тренду, можно судить о прохождении самой глубокой точки конкретной коррекции.

Торговый алгоритм

Новая функциональная часть алгоритма робота:

архитектура Pip 3
архитектура Pip 3

Расчеты (при открытии нового бара):

Получаем значение TrendEnvelopes с текущего [0] и прошлого [1] баров;

Получаем значение AC positive и AC negative с текущего [0] и прошлого [1] баров;

Сигнал на покупку:

Если Bid [0] > TrendEnvelopes [0] (цена выше линии тренда)

и AC positive [1] < AC negative [1] (рынок был медвежий)

и AC positive [0] > AC negative [0] (рынок стал бычий)

тогда, BUY (... SL = TrendEnvelopes [0] ...) — открываем покупку

Сигнал на продажу:

Если Bid [0] < TrendEnvelopes [0] (цена ниже линии тренда)

и AC positive [1] > AC negative [1] (рынок был бычий)

и AC positive [0] < AC negative [0] (рынок стал медвежий)

тогда, SELL (... SL = TrendEnvelopes [0] ...) — открываем продажу

Ведение ордеров (при открытии нового бара):

В цикле считываем очередной открытый ордер и в каждой итерации:

Если покупка {

если Bid [0] > TrendEnvelopes [0] и SL_price < TrendEnvelopes [0],

тогда SL = TrendEnvelopes [0] }

Если продажа {

если Bid [0] < TrendEnvelopes [0] и SL_price > TrendEnvelopes [0],

тогда SL = TrendEnvelopes [0] }

Реализация Pip 3 и Тестирование

Реализацию оставлю за кадром. Теперь, когда готов Pip 3, можно посмотреть, что получается на графике:

 Тестирование Pip 3
Тестирование Pip 3

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

Однако, результат тестирования за 1 месяц выглядит не очень. Прибыли робот в таком состоянии практически не генерирует (все съела комиссия):

результат тестирования Pip 3 за 1 месяц
результат тестирования Pip 3 за 1 месяц

При этом, на графике видно, что все происходит правильно — открываются позиции в коррекциях тренда:

снимок ценового графика из тестирования Pip 3
снимок ценового графика из тестирования Pip 3

Видимо нужен более спокойный инструмент (акции, например) или больший таймфрейм, где тренды будут более выраженные.

План Б

Изначально, продумывая базовую стратегию, я планировал:

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

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

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

теория: выход из позиций с окончанием импульса
теория: выход из позиций с окончанием импульса

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

Открыта продажа:

Если AC positive [1] < AC negative [1] (рынок был медвежий)

и AC positive [0] > AC negative [0] (рынок стал бычий), то

-> Закрываем продажу

Открыта покупка:

Если AC positive [1] > AC negative [1] (рынок был бычий)

и AC positive [0] < AC negative [0] (рынок стал медвежий), то

-> Закрываем покупку

/разработка опять за кадром/

Итоги

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

белые круги — начало тренда, явное упущение, что робот не захватывает его :)
белые круги — начало тренда, явное упущение, что робот не захватывает его :)

Необходимо тестировать/оптимизировать/дорабатывать. Продолжу в следующий раз.