Класс BotPanel является родительским классом для абсолютно всех роботов в программе. Содержит компоненты, которые повторно используются роботами и необходимы для их нормального функционирования в OsEngine.
В основном BotPanel хранит в себе источники и параметры, и когда Вы хотите делать роботов на OsEngine, Вам нужно держать этот класс открытым.
Создание любого робота в программе должно начинаться с наследования от BotPanel и реализации его абстрактных членов, иначе терминал просто не сможет использовать ваш алгоритм.
Поговорим о структуре логики OsEngine, отвечающей за взаимодействие с роботами. Хотя BotPanel и является своеобразным мостом между алгоритмом робота и программой, его интерфейс не предоставляет всей функциональности, которая требуется ботам. Для решения этой задачи в программе существуют классы, реализующие интерфейс IIBotTab (источники данных).
О них мы подробно поговорим в последующих статьях. Сейчас нас интересует класс BotTabSimple. Он предоставляет роботам всю необходимую для торговли логику и поставляет рыночные данные по бумаге.
Для простоты понимания экземпляры класса BotPanel именуются роботами (или панелями). Экземпляры класса BotTabSimple – источниками (или вкладками). Если сопоставлять эти абстракции с визуальным интерфейсом программы, то выглядят они следующим образом:
Если открыть каждого отдельного робота по отдельности, то мы увидим у них источники (помечены стрелками). Источников у одного робота может быть множество:
Вся логика класса располагается в этом файле.
Внутри проекта это здесь:
Вверху класса находится перечисление источников, которые есть в OsEngine:
1. Simple – простой, базовый источник.
2. Index – автоиндекс.
3. Cluster – источник для генерации горизонтального объёма.
4. Screener – источник для торговли множества инструментов одновременно.
5. Pair – источник для торговли парами.
6. Polygon – источник для торговли треугольными арбитражами.
1 Часть. Создание источников.
Первое, что должно быть Вам интересно в этом классе, это код, который создаёт источники. Метод, отмеченный красным снизу, будет использоваться в Ваших роботах повсеместно:
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 - будет код, который создаёт и хранит параметры:
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 Часть. Общая статистика торгов данного робота.
Это также
TotalProfitInPersent – публичное свойство типа decimal. Возвращает общее значение прибыли/убытка в процентном выражении по всем сделкам робота.
TotalProfitAbs – публичное свойство типа decimal. Возвращает общее значение прибыли/убытка в абсолютном выражении по всем сделкам робота.
MiddleProfitInPersent – публичное свойство типа decimal. Возвращает среднее значение прибыли/убытка в процентном выражении на один контракт.
ProfitFactor – публичное свойство типа decimal. Рассчитывает и возвращает общий профит фактор для робота.
MaxDrowDown – публичное свойство типа decimal. Рассчитывает и возвращает размер максимальной просадки для робота.
WinPositionPersent – публичное свойство типа decimal. Рассчитывает и возвращает количество прибыльных позиций в процентном отношении.
MaxDrowDown – публичное свойство типа int. Рассчитывает количество всех позиций в роботе, за исключением не открытых, то есть тех, у которых состояние равно OpeningFall.
AllPositionsCount – публичное свойство типа int. Рассчитывает количество абсолютно всех позиций в роботе.
4 Часть. Что ещё может пригодиться?
1. Обратившись к данной переменной, можно узнать, в каком интерфейсе развёрнут робот. Тестер / Оптимизатор / Реальные торги.
2. Событие, на которое Вам нужно будет подписываться, чтобы робот реагировал на изменение параметров со стороны пользователя.
3. Метод, в который можно отсылать сообщения в лог. Также повсеместно используемая штука.
Удачных алгоритмов!
Поддержка OsEngine: https://t.me/osengine_official_support
Комментарии