rss

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

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

Блог компании Os_Engine | Источник данных для одного инструмента. Введение. BotTabSimple #1

BotTabSimple — основная боевая единица в программе, которая предоставляет роботам доступ ко всем потокам данных, поступающих с торговой площадки, а также весь функционал для совершения транзакций. Можно сказать, это посредник между торговым алгоритмом и другими модулями программы, такими как коннектор, журнал сделок, модуль сопровождения позиций, средства визуального отображения данных (графики, стаканы) и другие.

Источник данных для одного инструмента. Введение. BotTabSimple #1

BotTabSimple одномоментно может работать только с одним инструментом. Если же робот должен работать с несколькими инструментами в рамках одного экземпляра, придется добавлять по одной вкладке на каждую бумагу, либо переходить к другим источникам, вроде BotTabScreener. Для простоты восприятия BotTabSimple принято называть простой вкладкой. Далее по тексту будем пользоваться этим термином на ровне со словом «источник».

Код описываемого класса находится в файле BotTabSimple.cs.

На ГитХабе это здесь:

https://github.com/AlexWan/OsEngine/blob/master/project/OsEngine/OsTrader/Panels/Tab/BotTabSimple.cs

В проекте здесь:

Источник данных для одного инструмента. Введение. BotTabSimple #1

 

Как создать источник BotTabSimpleв роботе?

К этому моменту Вы уже многократно это делали, если читаете Гайд по порядку, но вспомним. В качестве примера возьмём встроенного в проект бота «EnvelopTrend»:

Источник данных для одного инструмента. Введение. BotTabSimple #1

  1. Создание источника типа «Simple». В этот момент в робота добавляется один источник BotTabSimple в массив TabsSimple.
  2. Тут мы сохраняем переменную BotTabSimple в поле класса.
  3. Так можно подписаться на событие завершения свечи.
  4. Так можно подписаться на событие успешного открытия сделки.

После пункта номер 1 с картинки выше у нас есть возможность обращаться к огромному функционалу BotTabSimple.  

 

Краткий обзор функционала BotTabSimple.

Несмотря на свое название, BotTabSimple является одним из самых больших и сложных объектов в проекте. Код класса насчитывает порядка пяти тысяч строк.

Функционал простой вкладки условно можно разделить на несколько блоков:

  1. Торговые методы для роботов.
  2. Рыночные события и отправка их в робота.
  3. Доступ к портфелю.
  4. Доступ к бумаге для торгов.
  5. Реализация интерфейса IIBotTab.
  6. Взаимодействие с мастером графического отображения данных.
  7. Взаимодействие с коннектором.
  8. Эмуляция и управление стоп-лоссами и тейк-профитами.
  9. Работа с модулем сопровождения позиций. 

Каждый из этих блоков функциональностей будем обсуждать в отдельных статьях, а пока же просто дадим им короткие определения.

 

Торговые методы для роботов.

Огромную часть класса занимают различные способы выставления и закрытия позиций.

Источник данных для одного инструмента. Введение. BotTabSimple #1 

 

Рыночные события и отправка их в роботов.

Источник данных для одного инструмента. Введение. BotTabSimple #1

 

Доступ к позициям робота.

Основную логику обработки позиций содержит экземпляр класса Journal, который входит в состав BotTabSimple. После создания позиции вкладка помещает ее в журнал, а ордер высылает в коннектор. Далее, по мере получения из коннектора ордеров и собственных сделок, вкладка перенаправляет эти объекты в журнал, который на их основании изменяет состояние позиций. После этого журнал информирует вкладку об изменении состояния позиций при помощи событий PositionStateChangeEvent и PositionNetVolumeChangeEvent.

Кроме того, доступны свойства для доступа к журналу, которые повсеместно применяются в роботах:

Источник данных для одного инструмента. Введение. BotTabSimple #1 

 

Доступ к бумаге для торгов.

Небольшое свойство для доступа к торгуемой бумаге внутри BotTabSimple, однако оно очень важно, т.к. нет практически ни одного робота, которому бы это не было нужно:

Источник данных для одного инструмента. Введение. BotTabSimple #1

Внутри класса Security содержатся такие данные как шаг цены, шаг объёма, лотность инструмента и многое другое. Информация нужная для вычислений внутри ботов.

Подробнее: https://smart-lab.ru/company/os_engine/blog/1043241.php

 

Доступ к портфелю.

Свойство, дающее доступ к биржевому портфелю:

Источник данных для одного инструмента. Введение. BotTabSimple #1 

Подробнее: https://smart-lab.ru/company/os_engine/blog/1043474.php

 

Эмуляция и управление стоп-лоссами и тейк-профитами.

Разнообразие торговых площадок, поддерживаемых платформой, довольно обширно, но не все из них предоставляют возможность использовать условные заявки на стороне брокера. BotTabSimple берет на себя эти обязательства и предоставляет возможность использовать такие важные для трейдеров сущности, как стоп-лосс, трейлинг стоп и тейк-профит. Вкладка содержит ряд методов, позволяющих роботам задействовать этот функционал. К ним относятся методы — CloseAtStop, CloseAtTrailingStop, CloseAtProfit, а также их перегрузки.

 

Работа с модулем сопровождения позиций.

Модуль сопровождения позиций представлен экземпляром класса BotManualControl. Данный объект позволяет настроить реакции на определенные события, связанные с совершением транзакций.

 

ИТОГО

Класс довольно большой.

Если охота делать на OsEngine сложных роботов с развязанными руками, то нужно его понимать.

До этого в Гайде мы касались многих аспектов его работы, настала пора взглянуть на источник целиком!

 

Об этом и будет мини-серия по BotTabSimple.

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

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

Источник данных для одного инструмента. Введение. BotTabSimple #1

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

Источник данных для одного инструмента. Введение. BotTabSimple #1

★1

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