Продолжаем усложнять пример ThreeSoldier, о котором говорили некоторое время назад. Теперь добавим в него механизм адаптации под усреднённую внутридневную волатильность. Получим ThreeSoldiersVolatilityAdaptive. Делаем силу сигнала одинаковой на всю глубину теста, чтобы и 5ть, и 10ть лет назад сигнал был одной силы.
Напомню, базовая идея паттерна «Три солдата» заключается в том, что мы должны найти на графике три растущих свечи подряд:
Собственно, данный робот всё ещё именно это и делает, ищет три подряд растущих (и падающих тоже, тогда это «Три вороны») на определённый процент свечи и входит после них в тренд. Между тем, адаптация под актуальную волатильность очень важна, ибо от этого может очень многое зависеть. И без адаптации под волатильность лучше вообще ничего не торговать.
1. Пример в проекте.
Робот ThreeSoldiersVolatilityAdaptive находится внутри проекта OsEngine. Открываем его и идём вот сюда:
2. Параметры робота.
- Regime – режим работы.
- Off – Выключен.
- On – Включен и будет входить и в лонг и в шорт.
- OnlyLong – Включен и будет входить только в лонг.
- OnlyShort – Включен и будет входить только в шорт.
- OnlyClosePosition – сможет только закрыть позицию, а входить не будет.
- Volume type – режим выбора объёма.
- Contracts – кол-во контрактов инструмента.
- Contract currency – валюта контракта.
- Deposit percent – процент от депозита.
- Volume – значение объёма. Что именно, зависит от предыдущего пункта. В случае Contracts тут указывается объём инструмента. В случае Contract currency здесь указывается кол-во рублей или долларов, которыми нужно войти. В случае с Deposit percent здесь указывается % от общего депозита, которым нужно войти в контракт.
- Asset in portfolio – тут нужно указывать название валюты, которое будет использовано для расчёта объёма, если Вы выбрали тип объёма “Deposit percent”. В тестере оставляем «Prime». На крипте это обычно “USDT”. В АЛОР это «RUB».
- Slippage % — проскальзывание для цен ордера.
- Height soldiers % — Общая высота трёх свечек, после которой считаем паттерн сформированным.
- Min height one soldier % — Минимальная высота тела каждой свечи в отдельности, после которой считаем паттерн сформированным.
- Profit % from height of pattern – % от общей высоты паттерна, который будет взят за величину профита.
- Stop % from height of pattern – % от общей высоты паттерна, который будет взят за величину стопа.
- Days volatility adaptive – кол-во дней, за которое мы берём усреднённую волатильность.
- Height soldiers volatility percent – какая часть в % от усреднённой внутридневной волатильности у нас будет новой высотой всех трёх свечей.
- Min height one soldier volatility – какая часть в % от усреднённой внутридневной волатильности у нас будет новой минимальной высотой каждой отдельной свечи в паттерне.
3. Логика входа и выхода из позиции.
ЛОНГ
Вход, если за три свечи мы набрали общую величину движения вверх, «Height soldiers %». При этом каждая отдельная свеча была размером не меньше «Min height one soldier %».
Выход привязан к общему размеру величины движения за 3 свечи. Профит равен настройке «Profit % from height of pattern», при этом берётся общая величина движения за 3 свечи и определённый процент от этого движения, который откладывается в виде профита. Стоп равен настройке «Stop % from height of pattern».
ШОРТ
Вход, если за три свечи мы набрали общую величину движения вниз, «Height soldiers %». При этом каждая отдельная свеча была размером не меньше «Min height one soldier %».
Выход привязан к общему размеру величины движения за 3 свечи. Профит равен настройке «Profit % from height of pattern», при этом берётся общая величина движения за 3 свечи и определённый процент от этого движения, который откладывается в виде профита. Стоп равен настройке «Stop % from height of pattern».
4. Логика адаптации размерностей сигнальных свечей под волатильность.
Сама логика адаптации вызывается утром каждого дня. В роботе этот метод AdaptSoldiersHeight:
Всего там три этапа:
- Считаем внутридневную волатильность в процентах за указанное кол-во дней.
- Усредняем это значение.
- Рассчитываем новые значения высоты паттерна и отдельных свечек в нём.
5. Что с профитом?
На сбербанке всё по-прежнему прекрасно. Те настройки, которые указаны выше, выдают вот такое:
ВАЖНО!!! Сделок мало — поэтому не забывайте про кросс-тесты. Я их уже провёл на MOEX TOP 30, и там всё более чем хорошо. Напишу про это чуть позже. Но Вы должны сами за этим следить и понимать важность тестов редких паттернов (как этот) на множестве инструментов. За робастностью надо следить…
Удачных алгоритмов!
Комментарии открыты для друзей!
Пост из серии «Свечи и преобразование ленты сделок».
OsEngine: https://github.com/AlexWan/OsEngine
FAQ: https://o-s-a.net/os-engine-faq
Поддержка OsEngine: https://t.me/osengine_official_support
Регистрируйся в АЛОР и получай бонусы: https://www.alorbroker.ru/open
Сайт АЛОР БРОКЕР: https://www.alorbroker.ru
Раздел «Для клиентов»: https://www.alorbroker.ru/openinfo/for-clients
Программа лояльности от АЛОР БРОКЕР и OsEngine: https://smart-lab.ru/company/os_engine/blog/972745.php