В публичную сборку добавлен новый сеточный робот, cпециально созданный для ловли ложных пробоев вниз в неликвидных бумагах, когда основной рынок движется в противоположном направлении.
Сегодняшний пример: GridVolumeBollingerRankingScreener.
Тип сеточной стратегии: MarketMaking.
Логика работы:
Сигналом для выброса сетки служит индикатор Bollinger. Если цена выше верхней линии — выброс сетки в Short. Если ниже нижней линии – выброс сетки в Long. По обратному сигналу сетка закрывается.
Главное в этом роботе — фильтры:
Фильтр 1: торгуем только бумаги, которые по объёму не входят в первую десятку (настраивается).
Фильтр 2: Входим в Long по конкретной бумаге, если её цена ниже нижней линии Bollinger, а N % всех бумаг в роботе находятся выше верхней линии Bollinger — общий тренд движения вверх.
В результате Long сетка выбрасывается в момент, когда весь рынок агрессивно растёт, а по отдельной бумаге происходит ложный пробой вниз.
Тесты с 2025 года проводились на ленте сделок с комиссией 0.04% на каждую сделку:

Существуют варианты, показывающие в тестере и 50, и 70%. Выбирайте подходящие. Данный тест выполнен на штатных настройках, а параметры и используемые бумаги приведены в конце статьи.
1) Пример в проекте
Исходный код робота GridVolumeBollingerRankingScreener внутри проекта находится здесь:
Сразу же обратите внимание на отдельный регион «Non trade periods». Предполагается, что этот участок кода можно скопировать, если вам нужно контролировать торговые периоды у своих роботов:

2) Конструктор
Сеточники отличаются от обычного робота только способом открытия позиции — конструкторы остаются обычными. Данный робот использует источник BotTabScreener для работы с N инструментов одновременно:
1) Блок кода в котором мы создаём источник типа BotTabScreener:
сохраняем источник в поле класса, подписываемся на событие завершения свечи по какому-то инструменту и на событие старта теста для тестера.
2) Создание параметров для торговли и развёртывания сетки.
3) Создание параметров для ранжирования направления рынка по индикатору Bollinger.
4) Создание параметров для ранжирования объёмов по бумагам.
5) Создание параметров для неторговых периодов, которые будут передаваться напрямую в сетки.
3) Параметры робота
У данного робота предусмотрены три вкладки параметров. Рассмотрим их по очереди.
Вкладка «Prime»:
1) Regime — режим работы:
A) Off — выключен.
Б) On — включён, будет входить и в Long, и в Short.
В) OnlyLong — включены только сетки на покупку.
Г) OnlyShort — включены только сетки на продажу.
2) Volume type – режим выбора объёма:
A) Contracts — количество контрактов инструмента.
Б) Contract currency — объём в валюте контракта.
В) Deposit percent — процент от депозита.
3) Volume — значение объёма (зависит от выбранного типа):
4) Asset in portfolio — валюта портфеля, используемая для расчёта объёма при выборе типа Deposit percent.
В тестере используется значение «Prime».
На криптовалютных рынках это обычно «USDT».
5) Bollinger length — длина индикатора Bollinger.
6) Bollinger deviation — величина отклонения линий индикатора Bollinger.
7) Non trade periods — кнопка вызова окна настроек неторговых периодов для выбрасываемых сеток.
*Все значения объёма указаны для одной линии.
Вкладка «Grid»:
1) Max grids count — максимальное количество сеток выброшенных на разные инструменты.
2) Grid lines count — количество линий в сетке.
3) Grid lines step — шаг между линиями в процентах.
4) Profit percent — расстояние в процентах до закрывающего ордера.
Вкладка «Bollinger ranking»:
1) Bollinger ranking is on — включает и выключает фильтр ранжирования по Bollinger.
2) Bollinger ranking percent to Entry — процент всех бумаг, находящихся с противоположной стороны Боллинджера для входа. Например, чтобы была выброшена сетка Long по пробою нижней линии Боллинджера, 50 % всех бумаг должны находиться выше верхней линии Bollinger.
3) Кнопка «Show bollinger ranking» выводит в экстренный лог текущие значения ранжирования.
Сообщение в логе выглядит следующим образом:
55% всех бумаг выше своего Боллинджера, 10% всех бумаг ниже своего Боллинджера:
Вкладка «Volume ranking»:
1) Volume ranking is on — включает и выключает фильтр ранжирования по объёму.
2) Volume ranking max number — максимальное положение бумаги в таблице ранжирования по объёма, для входа в позицию. В данном случае, всё что ниже 20 – будет торговаться. Всё что выше 20 – торговаться не будет.
3) Кнопка «Show volume ranking» выводит в экстренный лог текущие значения ранжирования.
Ранжирование по объёму выглядит следующим образом:
4) Точка входа в логику
Завершение свечи по одному из инструментов, подключённых в скринере:
1) Если основной режим робота установлен в значение Off — ничего не произойдет.
2) Если количество свечей меньше пяти — ничего не произойдет.
3) Если по инструменту уже существует ранее выброшенная сетка, переходим к логике её закрытия или удаления.
4) Выполняем расчёт показателей ранжирования.
5) Если по источнику отсутствуют активные сетки, вызываем метод попытки выброса новой сетки по заданным условиям.
5) Логика сигнала на выброс сетки
1) Фильтр по количеству сеток на всех источниках.
2) Фильтр по времени.
3) Проверка индикатора Bollinger: корректность настроек и наличие данных.
4) Если текущая цена ниже нижней линии Bollinger — переходим к логике выброса сетки LONG.
5) Фильтр по Bollinger: количество инструментов, находящихся выше верхней линии, должно быть больше N.
6) Фильтр по объёму: текущий инструмент не должен находиться в ТОПе по объёму.
7) Выброс сетки — выполняется при прохождении всех фильтров.
6) Выброс сетки отдельным методом
1) Создание основного объекта сетки.
2) Установка типа сетки — MarketMaking. В этом режиме будем заходить и выходить по каждой линии отдельно.
3) Установка объёмов для сетки.
4) Установка параметров генерации сетки и вызов метода генерации. После выполнения метода внутри объекта создаются линии, по которым далее будут выставляться ордера.
5) Установка неторговых периодов для сетки.
6) Установка Trailing Up. Шаг сдвига рассчитывается в процентах и составляет 0,5%. При этом вызван метод обрезающий цены по цене инструмента.
7) Установка Trailing Down. Шаг сдвига также рассчитывается в процентах и составляет 0,5%. При этом вызван метод обрезающий цены по цене инструмента.
8) Сохранение конфигурации сетки.
9) Перевод режима сетки в состояние ON. После активации начинается выставление заявок.
7) Закрытие сетки и удаление из памяти
Метод вызывается, когда в рынке уже есть выброшенные сетки. Его предназначение — удалять сетки из памяти после завершения их работы, а также переводить сетку в режим закрытия, если на рынке появляется обратный сигнал относительно открытия.
1) Проверка корректности настроек индикатора Bollinger на источнике.
2) Удаление сетки, если она полностью отработала.
3) Проверка обратного сигнала к выбросу сетки. Если такой сигнал присутствует — перевод сетки в режим CloseForced.
8) Нюансы тестирования
Во‑первых, не забываем о том, что сетки следует тестировать на тиковых данных. В сборнике по сеткам есть соответствующая статья.
Используемые инструменты и таймфреймы для тестов:
Результаты на стандартных настройках:
ВАЖНО!
Сетки — зло! Каждого робота по сеткам наша команда делает, заливаясь слезами!
В OsEngine это хотя бы можно оттестировать! Не запускайте сетки, не убедившись, что в тестере они хотя бы показывают прибыль. И даже в этом случае помните: февраль 2022 года никто не отменял, и все сетки рано или поздно сольют в ноль!
Удачных алгоритмов!
https://smart-lab.ru/company/os_engine/blog/1024149.php
OsEngine: https://github.com/AlexWan/OsEngine
Поддержка OsEngine: https://t.me/osengine_official_support
Канал Научный трейдинг (Bad Quant): https://t.me/bad_quant