rss

Профиль компании

Финансовые компании

Блог компании OsEngine | Скринер на сетках по взрыву волатильности в тренд. Робот с открытым кодом. Сетки 15

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

Сегодняшний пример: GridScreenerAdaptiveSoldiers.

Тип сетки: MarketMaking.

Логика: Сигналом для выброса сетки служит паттерн «Три солдата», т.е. три расположенные в одну сторону свечи (растущие или падающие). Три свечи вместе должны соответствовать размеру в N % от усреднённой внутридневной волатильности, которая считается внутри робота.

Закрытие сетки происходит по двум условиям: 1) Кол-во отработанных позиций. 2) Кол-во времени жизни сетки в секундах.

Скринер на сетках по взрыву волатильности в тренд. Робот с открытым кодом. Сетки 15

1. Пример в проекте.

Для начала Вам следует открыть исходный код робота GridScreenerAdaptiveSoldiers. Внутри проекта это здесь:

Скринер на сетках по взрыву волатильности в тренд. Робот с открытым кодом. Сетки 15

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

Скринер на сетках по взрыву волатильности в тренд. Робот с открытым кодом. Сетки 15

  1. Constructor, settings, service – сервисный код.
  2. Volatility adaptation – код, отвечающий за расчёт внутридневной волатильности и хранения этих данных.
  3. Logic – основная торговая логика.
  4. Non trade periods – место хранения параметров и методов, отвечающих за неторговые периоды.

 

2. Конструктор.

Сеточники – отличаются от обычного робота, только способом открытия позиции. Т.е. конструкторы совершенно обычные. Данный робот использует источник BotTabScreener для работы с N инструментов одновременно:

Скринер на сетках по взрыву волатильности в тренд. Робот с открытым кодом. Сетки 15 

  1. Блок кода, в котором мы создаём источник типа BotTabScreener. Сохраняем его в поле класса, подписываемся на событие завершения свечи по какому-то инструменту, подписываемся на событие старта теста для тестера.
  2. Создание параметров.
  3. Создание параметров для неторговых периодов, которые будут передаваться напрямую в сетки.
  4. Загрузка данных по волатильности в боевых торгах после перезагрузки.

 

3. Параметры робота.

У данного робота три вкладки параметров, рассмотрим их по очереди.

Вкладка «Prime»:

Скринер на сетках по взрыву волатильности в тренд. Робот с открытым кодом. Сетки 15 

  1. Regime – режим работы.
    1. Off – Выключен.
    2. On – Включен и будет входить в лонг.
    3. OnlyLong – выбрасываем только сетки на покупку, когда цена идёт вверх.
    4. OnlyShort – выбрасываем только сетки на продажу, когда цена идёт вниз.
  2. Days volatility adaptive – за какое количество дней усредняется волатильность.
  3. Height soldiers volatility percent – минимальный размер трёх солдат в % от усреднённой внутридневной волатильности, который должен быть для выброса сетки.
  4. Min height one soldier volatility – минимальный размер каждой из трёх свечей в % от усреднённой внутридневной волатильности, который должен быть для выброса сетки.
  5. Sma filter is on – включает фильтр по наклону скользящей средней.
  6. Sma filter length – длина скользящей для фильтра.

Вкладка «Grid»:

Скринер на сетках по взрыву волатильности в тренд. Робот с открытым кодом. Сетки 15 

  1. Max grids count – максимальное кол-во сеток, выброшенное на разные инструменты.
  2. Grid lines count – количество линий в сетке.
  3. Grid lines step – шаг в % между линиями.
  4. Profit % – расстояние до закрывающего ордера.
  5. Grid close positions max — количество исполненных открывающих ордеров, после чего сетка переходит в режим CloseForced и закрывает позиции.
  6. Grid life time seconds – время жизни сетки в секундах.
  7. Volume type – режим выбора объёма.
    1. Contracts – кол-во контрактов инструмента.
    2. Contract currency – валюта контракта.
    3. Deposit percent – процент от депозита.
  8. Volume – значение объёма. Что именно, зависит от предыдущего пункта. В случае Contracts тут указывается объём инструмента. В случае Contract currency здесь указывается кол-во рублей или долларов, которыми нужно войти. В случае с Deposit percent здесь указывается % от общего депозита, которым нужно войти в контракт.
  9. Asset in portfolio – тут нужно указывать название валюты, которое будет использовано для расчёта объёма, если Вы выбрали тип объёма “Deposit percent”. В тестере и Т-Инвест оставляем «Prime». На крипте это обычно “USDT”.

*Все значения для объёмов указаны для одной линии.

 

Вкладка «Trade periods»:

Скринер на сетках по взрыву волатильности в тренд. Робот с открытым кодом. Сетки 15 

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

 

4. Точка входа в логику.

Завершение свечи по какому-то инструменту, подключенному в скринер:

Скринер на сетках по взрыву волатильности в тренд. Робот с открытым кодом. Сетки 15 

  1. Если главный режим робота Off, ничего не делаем.
  2. Если свечей меньше 150, ничего не делаем.
  3. Блок кода, в котором идёт расчёт волатильности и минимальных значений свечек для выброса сеток.
  4. Если уже существует ранее выброшенная сетка по инструменту, то заходим в логику её закрытия или удаления.
  5. Если сеток по источнику нет, вызываем метод для попытки выбросить сетку по условию.

 

5. Логика сигнала на выброс сетки.

Скринер на сетках по взрыву волатильности в тренд. Робот с открытым кодом. Сетки 15 

  1. Фильтр по количеству сеток на всех источниках.
  2. Фильтр по времени.
  3. Проверка фильтров по размеру свечей относительно ранее рассчитанных показателей.
  4. Логика выброса сетки ЛОНГ. Проверка направление свечек. Прохождение фильтра по скользящей средней.
  5. Логика выброса сетки ШОРТ. Проверка направление свечек. Прохождение фильтра по скользящей средней.

 

6. Выброс сетки. Отдельным методом.

Скринер на сетках по взрыву волатильности в тренд. Робот с открытым кодом. Сетки 15

  1. Создание основного объекта сетки.
  2. Устанавливаем тип сетки. В данном случае это MarketMaking. Т.е. будем заходить и выходить по каждой линии отдельно.
  3. Устанавливаем объёмы для сетки.
  4. Устанавливаем настройки для генерации сетки и вызываем метод генерации. После этого внутри сетки появляются линии, по которым будут в дальнейшем выставляться ордера.
  5. Устанавливаем неторговые периоды для сетки.
  6. Устанавливаем Trailing Up. Заметьте, что шаг сдвига рассчитывается в процентах. В данном случае это половина процента. 0.5%. При этом вызван метод, обрезающий цены по цене инструмента.
  7. Устанавливаем Trailing Down. Заметьте, что шаг сдвига рассчитывается в процентах. В данном случае это половина процента. 0.5%. При этом вызван метод, обрезающий цены по цене инструмента.
  8. Устанавливаем закрытие сетки по количеству сделок.
  9. Устанавливаем закрытие сетки по времени жизни.
  10. Сохраняем то, что получилось.
  11. Включаем режим сетки в ON. После этого должны начать выставляться заявки.

 

7. Закрытие сетки и удаление из памяти.

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

Скринер на сетках по взрыву волатильности в тренд. Робот с открытым кодом. Сетки 15

  1. Удаляем сетку, если она уже отработала.

Скринер на сетках по взрыву волатильности в тренд. Робот с открытым кодом. Сетки 15 

 

HFT detected:

Скринер на сетках по взрыву волатильности в тренд. Робот с открытым кодом. Сетки 15 

 

Почти на каждом инструменте из обоймы прибыль:

Скринер на сетках по взрыву волатильности в тренд. Робот с открытым кодом. Сетки 15

Удачных алгоритмов!

Пост из серии статей про Сеточных роботов: https://smart-lab.ru/company/os_engine/blog/1167610.php

Комментарии открыты для друзей!

Скринер на сетках по взрыву волатильности в тренд. Робот с открытым кодом. Сетки 15

https://smart-lab.ru/company/os_engine/blog/1024149.php

OsEngine: https://github.com/AlexWan/OsEngine
Поддержка OsEngine: https://t.me/osengine_official_support
Канал научный трейдинг: https://t.me/bad_quant

12.1К | ★4

теги блога OS_Engine_team

....все тэги



UPDONW
Новый дизайн