Изображение блога
OS_Engine_team
OS_Engine_team Блог компании Os_Engine
11 августа 2024, 12:04

Назначение и описание класса BotPanel в OsEngine.

Класс BotPanel является родительским классом для абсолютно всех роботов в программе. Содержит компоненты, которые повторно используются роботами и необходимы для их нормального функционирования в OsEngine. 

В основном BotPanel хранит в себе источники и параметры, и когда Вы хотите делать роботов на OsEngine, Вам нужно держать этот класс открытым.

Создание любого робота в программе должно начинаться с наследования от BotPanel и реализации его абстрактных членов, иначе терминал просто не сможет использовать ваш алгоритм.

Назначение и описание класса BotPanel в OsEngine.

Поговорим немного о структуре логики OsEngine, отвечающей за взаимодействие с роботами. Хотя BotPanel и является своеобразным мостом между алгоритмом робота и программой, его интерфейс не предоставляет всей функциональности, которая требуется ботам.  Для решения этой задачи в программе существуют классы, реализующие интерфейс IIBotTab (источники данных).

О них мы подробно поговорим в последующих статьях. Сейчас нас интересует класс BotTabSimple. Он предоставляет роботам всю необходимую для торговли логику и поставляет рыночные данные по бумаге.

Для простоты понимания экземпляры класса BotPanel именуются роботами (или панелями). Экземпляры класса BotTabSimple – источниками (или вкладками). Если сопоставлять эти абстракции с визуальным интерфейсом программы, то выглядят они следующим образом:

Назначение и описание класса BotPanel в OsEngine.
Рис. 1. Роботы / Панели.

Если открыть каждого отдельного робота по отдельности, то мы увидим у них источники (помечены стрелками). Источников у одного робота может быть множество:

Назначение и описание класса BotPanel в OsEngine.
Рис. 2. Источники / Вкладки.

Вся логика класса располагается в файле https://github.com/AlexWan/OsEngine/blob/master/project/OsEngine/OsTrader/Panels/BotPanel.cs

Внутри проекта это здесь:

Назначение и описание класса BotPanel в OsEngine.
Рис. 3. Расположение BotPanel в структуре проекта.

Вверху класса находится перечисление источников, которые есть в OsEngine:

Назначение и описание класса BotPanel в OsEngine.

  1. Simple – простой, базовый источник.
  2. Index – автоиндекс.
  3. Cluster – источник для генерации горизонтального объёма.
  4. Screener – источник для торговли множества инструментов одновременно.
  5. Pair – источник для торговли парами.
  6. Polygon – источник для торговли треугольными арбитражами.

 

1 Часть. Создание источников.

Первое, что должно быть Вам интересно в этом классе, это код, который создаёт источники. Метод, отмеченный красным снизу, будет использоваться в Ваших роботах повсеместно:

Назначение и описание класса 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 – публичный метод. Очищает все вкладки в роботе.

 

2 Часть. Создание параметров.

Второе, самое используемое место класса BotPanel — будет код, который создаёт и хранит параметры:

Назначение и описание класса BotPanel в OsEngine. 

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 – публичное событие, вызываемое при изменении значения параметра.

 

3 Часть. Общая статистика торгов данного робота.

Это также

Назначение и описание класса BotPanel в OsEngine. 

TotalProfitInPersent – публичное свойство типа decimal. Возвращает общее значение прибыли/убытка в процентном выражении по всем сделкам робота.

TotalProfitAbs – публичное свойство типа decimal. Возвращает общее значение прибыли/убытка в абсолютном выражении по всем сделкам робота.

MiddleProfitInPersent – публичное свойство типа decimal. Возвращает среднее значение прибыли/убытка в процентном выражении на один контракт.

ProfitFactor – публичное свойство типа decimal. Рассчитывает и возвращает общий профит фактор для робота.

MaxDrowDown – публичное свойство типа decimal. Рассчитывает и возвращает размер максимальной просадки для робота.

WinPositionPersent – публичное свойство типа decimal. Рассчитывает и возвращает количество прибыльных позиций в процентном отношении.

MaxDrowDown – публичное свойство типа int. Рассчитывает количество всех позиций в роботе, за исключением не открытых, то есть тех, у которых состояние равно OpeningFall.

AllPositionsCount – публичное свойство типа int. Рассчитывает количество абсолютно всех позиций в роботе.

 

4 Часть. Что ещё может пригодиться?

Назначение и описание класса BotPanel в OsEngine. 

  1. Обратившись к данной переменной, можно узнать, в каком интерфейсе развёрнут робот. Тестер / Оптимизатор / Реальные торги.
  2. Событие, на которое Вам нужно будет подписываться, чтобы робот реагировал на изменение параметров со стороны пользователя.
  3. Метод, в который можно отсылать сообщения в лог. Также повсеместно используемая штука.

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

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

Назначение и описание класса BotPanel в OsEngine.

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

Назначение и описание класса BotPanel в OsEngine.

0 Комментариев

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн