В этот раз сделаем простой бэктестер. Начнём с бинарных опционов, так как у них примитивный принцип работы. Мы делаем ставку, а она на следующей свече выиграет или проиграет.
Также посмотрим на работу стратегии с Мартингейлом и опасность, которую она несёт. Часто, есть периоды, когда подобные стратегии рисуют красивый график с прибылью. Но заканчиваются чудеса молниеносно быстро, несколькими ставками в максимальный убыток.
Для проверки, проведём тесты на минутном таймфрейме за июль 2018 года на паре EUR/USD. Поможет нам в этом Jupyter и Python 3.6.
Это относительно медленный бэктестер, который позволяет тестировать историю цен исключая заглядывание в будущее. Для его работы нам требуется:
Здесь всё просто. Следим за балансом, принимаем и проверяем ставки. А также накапливаем последовательный убыток.
Код доступен на Quantrum.me
Эти функции мы будем использовать в цикле, чтобы через одну из них прошли все имеющиеся ценовые бары. Дополнительно, сопроводим каждый бар объектом account и историей цен без будущего. Тест останавливается при потере капитала.
Простая стратегия с сигналом, на основании текущей свечи и возможностью подключения мартингейла:
Код доступен на Quantrum.me
Стратегия, фильтрующая тренд:
Код доступен на Quantrum.me
Стратегия возврата к среднему:
Код доступен на Quantrum.me
Осталось подготовить данные и запустить. Используем цикл, так как скорость его работы равна скорости использования метода pd.DataFrame().apply(). И, в отличии от метода, нам будут видны возникающие ошибки. Дополнительно добавим остановку при получении ошибки.
Код доступен на Quantrum.me
Брокер бинарных опционов всегда накладывает дополнительные ограничения на игроков. Мы учтём только часть.
Что мы не можем учесть:
Историю цен можно найти в интернете бесплатно. Ниже на графиках минутные свечи за первую неделю месяца и распределение величины свечей для фильтрации дожи.
Для проверки запустим тест без Мартингейла с самой простой стратегией, и посмотрим, как капитал растает к концу третьего дня.
Добавление мартингейла позволяет слить капитал к середине первого дня.
Удача была на стороне брокера. Попробуем усложнить себе жизнь.
Теперь добавим простые технические индикаторы, показывающие направление тренда. Они запаздывают, но должны помочь отфильтровать неблагоприятные моменты.
Как мы видим, с мартингейлом удалось протянуть два дня. Без него — четыре. Но тренд на средних нам не помог.
В заключение рассмотрим ставки по стратегии возврата к среднему. Проверяем максимум и минимум за последние 200 минут. Для ставки на рост проверяем, чтобы цена была не далее 15% от максимума, а RSI(3) показывал перепроданность. И что мы видим? Мы продержались 22 торговые сессии и даже вышли в плюс.
Добавление мартингейла с ограничением максимальной ставки до 20К руб. приносит нам 80% прибыли.
В июле нам сопутствовала удача, но вот май и июнь стабильно несли убытки. В те месяцы работали другие стратегии.
Ниже таблица со всеми результатами:
Колонки:
Сокращения:
Тесты показали, что стабильность тренда на минутках предсказать очень тяжело. А вот развороты дались легче. Возврат к среднему рядом с максимумами/минимумами позволил даже заработать. Мартингейл даёт возможность быстро вернуться к прибыли, но на длинных дистанциях стабильно ведёт к полной потере счёта.
Бэктестер доработаем в следующих статьях и реализуем механизм торговли акциями.
В комментариях задавайте вопросы и выражайте своё мнение.
Александр Румянцев
Автор на Quantrum.me
Telegram-канал: @quantiki
+ RSI и, вуаля:
2. > Добавление мартингейла с ограничением максимальной ставки до 20К руб. приносит нам 80% прибыли.
И кто-то ещё говорит, что теханализ не работает )).