Скринеры – источники данных в OsEngine, которые смотрят одновременно за N бумагами и позволяют их торговать. Т.е. это нужно, когда торгуешь десятки или сотни бумаг одновременно при помощи одной торговой логики.
Посмотрим, как добавлять индикаторы на BotTabScreener.
1. Где исходники?
Посмотреть исходный код робота, показанного ниже в качестве примера, можно, открыв его в проекте OsEngine:
На ГитХаб исходный код здесь: https://github.com/AlexWan/OsEngine/blob/master/project/OsEngine/Robots/Screeners/BollingerMomentumScreener.cs
Обязательно откройте его исходный код, чтобы посмотреть, как это работает.
У данного бота, каждая бумага, подключенная в скринер, имеет два индикатора на графике:
2. Создание индикатора и привязка его к скринеру.
Создание индикаторов происходит в конструкторе робота. В данном случае создаются сразу два индикатора:
- Создание индикатора Bollinger. Обращаемся к источнику данных скринер. Вызываем у него метод CreateCandleIndicator. Метод принимает:
- Порядковый номер индикатора в массиве индикаторов.
- Название индикатора. Точно так, как он называется у Вас. Без ошибок.
- Параметры по умолчанию. А можно выслать туда параметры в виде List<string>, который распарится в параметры для индикатора во время его создания. Если концепция окажется слишком сложной, в этот параметр можно отправить null, тогда индикаторы создадутся с собственными параметрами по умолчанию.
- Имя области данных, на которой индикатор будет прорисовываться. “Prime” – главная, там, где свечи. Назовёте иначе – будет на другой серии данных.
- Создание индикатора Momentum. Обратите внимание, что номер индикатора «2». И обратите внимание, что последний параметр «Область данных» указан как «Second». Т.е. этот индикатор будет размещён на неосновной области вместе со свечами, а ниже.
Всё. После этого индикатор станет доступен на графике, и можно будет его настраивать из интерфейсов. Отдельных параметров для него здесь не предусмотрено, он настраивается вручную.
3. Доступ к данным индикатора в логике робота.
Во-первых, надо помнить, что, когда из скринера приходят какие-то события, вместе с ними приходит и источник BotTabSimple, по которому это событие произошло.
В нашем примере робот подписан на событие завершения свечи, и в обработчике есть источник BotTabSimple:
- Событие завершения свечи у скринера. Второй параметр – «Простой» источник, по которому произошло событие, BotTabSimple. Внутри него лежат все индикаторы, если они есть на скринере.
- Запрашиваем индикатор у текущего инструмента, по которому прошло событие.
- В данном роботе дополнительно реализована проверка параметров у индикатора. Совпадают ли они с теми, которые выставил пользователь в параметрах робота. Если нет, то индикатору устанавливаются новые параметры.
- Проверка доступности данных по индикатору. Рассчитаны ли они. Если в серии у боллинджера последнее значение НОЛЬ, выходим из логики. Индикатор не готов.
- Запрашиваем у индикатора Bollinger последнее значение верхней линии.
Удачных алгоритмов!
Комментарии открыты для друзей!
OsEngine: https://github.com/AlexWan/OsEngine
Поддержка 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