BotTabSimple — основная боевая единица в программе, которая предоставляет роботам доступ ко всем потокам данных, поступающих с торговой площадки, а также весь функционал для совершения транзакций. Можно сказать, это посредник между торговым алгоритмом и другими модулями программы, такими как коннектор, журнал сделок, модуль сопровождения позиций, средства визуального отображения данных (графики, стаканы) и другие.
BotTabSimple одномоментно может работать только с одним инструментом. Если же робот должен работать с несколькими инструментами в рамках одного экземпляра, придется добавлять по одной вкладке на каждую бумагу, либо переходить к другим источникам, вроде BotTabScreener. Для простоты восприятия BotTabSimple принято называть простой вкладкой. Далее по тексту будем пользоваться этим термином на ровне со словом «источник».
Код описываемого класса находится в файле BotTabSimple.cs.
На ГитХабе это здесь:
https://github.com/AlexWan/OsEngine/blob/master/project/OsEngine/OsTrader/Panels/Tab/BotTabSimple.cs
В проекте здесь:
К этому моменту Вы уже многократно это делали, если читаете Гайд по порядку, но вспомним. В качестве примера возьмём встроенного в проект бота «EnvelopTrend»:
После пункта номер 1 с картинки выше у нас есть возможность обращаться к огромному функционалу BotTabSimple.
Несмотря на свое название, BotTabSimple является одним из самых больших и сложных объектов в проекте. Код класса насчитывает порядка пяти тысяч строк.
Функционал простой вкладки условно можно разделить на несколько блоков:
Каждый из этих блоков функциональностей будем обсуждать в отдельных статьях, а пока же просто дадим им короткие определения.
Огромную часть класса занимают различные способы выставления и закрытия позиций.
Основную логику обработки позиций содержит экземпляр класса Journal, который входит в состав BotTabSimple. После создания позиции вкладка помещает ее в журнал, а ордер высылает в коннектор. Далее, по мере получения из коннектора ордеров и собственных сделок, вкладка перенаправляет эти объекты в журнал, который на их основании изменяет состояние позиций. После этого журнал информирует вкладку об изменении состояния позиций при помощи событий PositionStateChangeEvent и PositionNetVolumeChangeEvent.
Кроме того, доступны свойства для доступа к журналу, которые повсеместно применяются в роботах:
Небольшое свойство для доступа к торгуемой бумаге внутри BotTabSimple, однако оно очень важно, т.к. нет практически ни одного робота, которому бы это не было нужно:
Внутри класса Security содержатся такие данные как шаг цены, шаг объёма, лотность инструмента и многое другое. Информация нужная для вычислений внутри ботов.
Подробнее: https://smart-lab.ru/company/os_engine/blog/1043241.php
Свойство, дающее доступ к биржевому портфелю:
Подробнее: https://smart-lab.ru/company/os_engine/blog/1043474.php
Разнообразие торговых площадок, поддерживаемых платформой, довольно обширно, но не все из них предоставляют возможность использовать условные заявки на стороне брокера. BotTabSimple берет на себя эти обязательства и предоставляет возможность использовать такие важные для трейдеров сущности, как стоп-лосс, трейлинг стоп и тейк-профит. Вкладка содержит ряд методов, позволяющих роботам задействовать этот функционал. К ним относятся методы — CloseAtStop, CloseAtTrailingStop, CloseAtProfit, а также их перегрузки.
Модуль сопровождения позиций представлен экземпляром класса BotManualControl. Данный объект позволяет настроить реакции на определенные события, связанные с совершением транзакций.
Класс довольно большой.
Если охота делать на OsEngine сложных роботов с развязанными руками, то нужно его понимать.
До этого в Гайде мы касались многих аспектов его работы, настала пора взглянуть на источник целиком!
Об этом и будет мини-серия по BotTabSimple.
Удачных алгоритмов!
Комментарии открыты для друзей!
OsEngine: https://github.com/AlexWan/OsEngine
FAQ: https://o-s-a.net/os-engine-faq
Поддержка 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