Продолжаем обзор роботов, использующих в своей торговле сетки. В этот раз рассмотрим пример робота, торгующего в обе стороны по контртренду через индикатор Bollinger.
Робот-пример: GridBollinger.
Тип сетки: MarketMaking.
Логика: Сигналом для выброса сетки служит индикатор Bollinger. Выше верхней линии – выброс сетки в Short. Ниже нижней линии – выброс сетки в Long. По обратному сигналу – закрытие сетки.
1. Пример в проекте.
Для начала Вам следует открыть исходный код робота GridBollinger. Внутри проекта это здесь:
2. Конструктор.
Сеточники отличаются от обычного робота только способом открытия позиции. Т.е. конструкторы совершенно обычные:

- Блок кода, в котором мы создаём источник типа BotTabSimple (Моноисточник). Сохраняем его в поле класса. Подписываемся на событие завершения свечи по какому-то инструменту. Подписываемся на событие старта теста для тестера.
- Создание параметров. Всё стандартно.
- Создание индикатора.
3. Параметры робота.
У данного робота две вкладки параметров, рассмотрим их по очереди.
Вкладка «Base»:

- Regime – режим работы.
- Off – Выключен.
- On – Включен и будет входить в лонг.
- Start Trade Time – время внутри дня, начиная с которого можно начинать выставлять сетку.
- End Trade Time – время внутри дня, начиная с которого больше нельзя выставлять сетку.
- Bollinger Length – длина для индикатора линейной регрессии.
- Bollinger Deviation – отклонение для индикатора линейной регрессии.
Вкладка «Grid»:
Grid lines count – количество линий в сетке.
- Grid lines step – шаг в % между линиями.
- Profit percent – расстояние до закрывающего ордера.
- Volume type – режим выбора объёма.
- Contracts – кол-во контрактов инструмента.
- Contract currency – валюта контракта.
- Deposit percent – процент от депозита.
- Volume on one line – значение объёма. Что именно, зависит от предыдущего пункта. В случае Contracts тут указывается объём инструмента. В случае Contract currency здесь указывается кол-во рублей или долларов, которыми нужно войти. В случае с Deposit percent здесь указывается % от общего депозита, которым нужно войти в контракт.
- Asset in portfolio – тут нужно указывать название валюты, которое будет использовано для расчёта объёма, если Вы выбрали тип объёма “Deposit percent”. В тестере, Т-Инвест и Алор оставляем «Prime». На крипте это обычно “USDT”.
*Все значения для объёмов указаны для одной линии.
4. Логика сигнала на выброс сетки.
- Все действия происходят в обработчике события завершения свечи.
- Если сеток нет, заходим в логику проверки условия для её выброса.
- Берём значение верхнего и нижнего канала боллинджера.
- Берём закрытие последней свечи.
- Если цена выше или ниже, чем линии, заходим в логику выброса сетки.
5. Выброс сетки.

- Создание основного объекта сетки.
- Устанавливаем тип сетки. В данном случае это MarketMaking. Т.е. будем заходить и выходить по каждой линии отдельно.
- Устанавливаем стартовый объём для первой линии сетки.
- Устанавливаем название валюты в портфеле из настроек.
- Устанавливаем тип объёма.
- Устанавливаем для сетки цену первой линии.
- Устанавливаем для сетки кол-во линий.
- Устанавливаем для сетки шаг.
- Указываем, что шаг сетки в процентах.
- Указываем тип профита. Проценты.
- Устанавливаем размер профита.
- Указываем сторону сетки в зависимости от нахождения цены от линий боллинджера.
- Вызываем метод для генерации линий сетки.
- Сохраняем то, что получилось.
- Включаем режим сетки в ON. После этого должны начать выставляться заявки.
6. Удаление сетки после отработки.
В отличии от предыдущего примера здесь также есть закрытие сетки:

1. Здесь мы проверяем, завершила ли сетка свою работу или нет. И если завершила, удаляем старую сетку из памяти.
*Закрытые позиции при этом остаются в журнале, всё в порядке.
2. Логика определения точки, где сетку надо закрывать по противоположному сигналу.
Удачных алгоритмов!
Пост из серии статей про Сеточных роботов: https://smart-lab.ru/company/os_engine/blog/1167610.php
Комментарии открыты для друзей!

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