Класс BotPanel является родительским классом для абсолютно всех роботов в программе. Содержит компоненты, которые повторно используются роботами и необходимы для их нормального функционирования в OsEngine.
В основном BotPanel хранит в себе источники и параметры, и когда Вы хотите делать роботов на OsEngine, Вам нужно держать этот класс открытым.
Создание любого робота в программе должно начинаться с наследования от BotPanel и реализации его абстрактных членов, иначе терминал просто не сможет использовать ваш алгоритм.
Поговорим немного о структуре логики OsEngine, отвечающей за взаимодействие с роботами. Хотя BotPanel и является своеобразным мостом между алгоритмом робота и программой, его интерфейс не предоставляет всей функциональности, которая требуется ботам. Для решения этой задачи в программе существуют классы, реализующие интерфейс IIBotTab (источники данных).
О них мы подробно поговорим в последующих статьях. Сейчас нас интересует класс BotTabSimple. Он предоставляет роботам всю необходимую для торговли логику и поставляет рыночные данные по бумаге.
Для простоты понимания экземпляры класса BotPanel именуются роботами (или панелями). Экземпляры класса BotTabSimple – источниками (или вкладками). Если сопоставлять эти абстракции с визуальным интерфейсом программы, то выглядят они следующим образом:
Если открыть каждого отдельного робота по отдельности, то мы увидим у них источники (помечены стрелками). Источников у одного робота может быть множество:
Вся логика класса располагается в файле https://github.com/AlexWan/OsEngine/blob/master/project/OsEngine/OsTrader/Panels/BotPanel.cs
Внутри проекта это здесь:
Рис. 3. Расположение BotPanel в структуре проекта.
Вверху класса находится перечисление источников, которые есть в OsEngine:
Первое, что должно быть Вам интересно в этом классе, это код, который создаёт источники. Метод, отмеченный красным снизу, будет использоваться в Ваших роботах повсеместно:
GetTabs – публичный метод. Возвращает список всех источников, принадлежащих роботу.
ActivTab – публичное поле. Указывает на активную вкладку робота. То, которая открыта сейчас у пользователя.
ActivTabNumber – публичное свойство типа int. Возвращает номер активной вкладки.
TabsSimple – публичное свойство. Возвращает список всех вкладок типа BotTabsSimple.
TabsIndex – публичное свойство. Возвращает список всех вкладок типа BotTabsIndex.
TabsCluster – публичное свойство. Возвращает список всех вкладок типа BotTabsCluster.
TabsPair – публичное свойство. Возвращает список всех вкладок типа BotTabsPair.
TabsScreener – публичное свойство. Возвращает список всех вкладок типа BotTabsScreener.
TabsPolygon – публичное свойство. Возвращает список всех вкладок типа BotTabsPolygon.
_tabBotTab_SelectionChanged – обработчик события нажатия на заголовок вкладки.
TabCreate – публичный метод. Создает новый источник, принимает значение перечисления, указывающее тип необходимой вкладки.
TabDelete – публичный метод. Удаляет активную вкладку.
TabDelete – перегруженная версия метода. Удаляет активную вкладку по индексу.
ChangeActivTab – приватный метод. Устанавливает другую вкладку в качестве активной и отображаемой в пользовательском интерфейсе.
ReloadTab – приватный метод. Переназначает вкладку для контрола.
ClearTabs – публичный метод. Очищает все вкладки в роботе.
Второе, самое используемое место класса BotPanel — будет код, который создаёт и хранит параметры:
CreateParameter – публичный метод. Создает оптимизируемый параметр типа StrategyParameterDecimal.
CreateParameterTimeOfDay – публичный метод. Создает оптимизируемый параметр типа StrategyParameterTimeOfDay.
CreateParameter – перегруженная версия метода. Создает оптимизируемый параметр типа StrategyParameterInt.
CreateParameter – перегруженная версия метода. Создает оптимизируемый параметр типа StrategyParameterString. Инициализирует параметр списком допустимых значений.
CreateParameter – перегруженная версия метода. Создает оптимизируемый параметр типа StrategyParameterString. Создает параметр без инициализации списка допустимых значений.
CreateParameter – перегруженная версия метода. Создает оптимизируемый параметр типа StrategyParameterBool.
CreateParameterButton – публичный метод. Создает оптимизируемый параметр типа StrategyParameterButton.
CreateParameterCheckBox – публичный метод. Создает оптимизируемый параметр типа StrategyParameterCheckBox.
CreateParameterLabel – публичный метод. Создает оптимизируемый параметр типа StrategyParameterLabel.
LoadParameterValues – приватный метод. Устанавливает обработчик события изменения значения параметра и добавляет параметр в хранимый список.
GetValueParameterSaveByUser – приватный метод. При наличии файла с данными загружает настройки в параметр.
Parameters – публичное свойство. Возвращает список всех параметров робота.
Parameter_ValueChange – обработчик события изменения значения параметра.
SaveParametrs – сохраняет параметры робота в файл.
ParametrsChangeByUser – публичное событие, вызываемое при изменении значения параметра.
Это также
TotalProfitInPersent – публичное свойство типа decimal. Возвращает общее значение прибыли/убытка в процентном выражении по всем сделкам робота.
TotalProfitAbs – публичное свойство типа decimal. Возвращает общее значение прибыли/убытка в абсолютном выражении по всем сделкам робота.
MiddleProfitInPersent – публичное свойство типа decimal. Возвращает среднее значение прибыли/убытка в процентном выражении на один контракт.
ProfitFactor – публичное свойство типа decimal. Рассчитывает и возвращает общий профит фактор для робота.
MaxDrowDown – публичное свойство типа decimal. Рассчитывает и возвращает размер максимальной просадки для робота.
WinPositionPersent – публичное свойство типа decimal. Рассчитывает и возвращает количество прибыльных позиций в процентном отношении.
MaxDrowDown – публичное свойство типа int. Рассчитывает количество всех позиций в роботе, за исключением не открытых, то есть тех, у которых состояние равно OpeningFall.
AllPositionsCount – публичное свойство типа int. Рассчитывает количество абсолютно всех позиций в роботе.
Удачных алгоритмов!
Комментарии открыты для друзей!
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