Класс BotPanel является родительским классом для абсолютно всех роботов в программе. Позволяет производным классам определять поведение программы, не прибегая к внесению изменений в код модулей, взаимодействующих с роботами. Содержит компоненты, которые повторно используются роботами и необходимы для их нормального функционирования в OsEngine. Создание любого робота в программе должно начинаться с наследования от BotPanel и реализации его абстрактных членов, иначе терминал просто не сможет использовать ваш алгоритм.
Поговорим немного о структуре логики OsEngine, отвечающей за взаимодействие с роботами. Хотя BotPanel и является своеобразным мостом между алгоритмом робота и программой, его интерфейс не предоставляет всей функциональности, которая требуется ботам. Для решения этой задачи в программе существуют классы, реализующие интерфейс IIBotTab. О них мы подробно поговорим в последующих статьях, сейчас нас интересует класс BotTabSimple. Он предоставляет роботам всю необходимую для торговли логику и поставляет рыночные данные по бумаге.
Для простоты понимания экземпляры класса BotPanel именуются панелями, экземпляры класса BotTabSimple – вкладками. Если сопоставлять эти абстракции с визуальным интерфейсом программы, то выглядят они следующим образом:
Рис. 1. Панели.
Рис. 2. Вкладки.
Вся логика класса располагается в файле OsEngine\project\OsEngine\OsTrader\Panels\BotPanel.cs:
Рис. 3. Расположение BotPanel в структуре проекта.
Рассмотрим все члены класса BotPanel:
BotPanel – защищенный конструктор, доступен только производным классам.
OsTraderMaster_CriticalErrorEven – обработчик события, в случае критической ошибки перезапускает лайт версию программы.
CriticalErrorEvent – защищенное событие, сигнализирует о получении критической ошибки.
NameStrategyUniq – публичное строковое поле, содержит уникальное имя робота, задаваемое пользователем при создании бота.
FileName – публичное строковое поле, содержит имя файла в случае, если алгоритм поставляется в виде скрипта из текстового документа.
StartProgram – публичное поле типа StartProgram, указывает тип программы, создающей робота. Перечисление имеет следующие значения:
IsScript – публичное поле типа bool, указывает, был ли робот загружен в качестве скрипта.
GetJournals – общедоступный метод, возвращает список всех журналов, принадлежащих текущему роботу.
ShowChartDialog – общедоступный метод, используется в лайт версии трейдера для отображения главного окна стратегии с графиком.
_chartUi_Closed – обработчик события закрытия главного окна.
ChartClosedEvent – публичное событие, проталкивает сообщение о закрытии главного окна наверх.
StartPaint – публичный метод, запускает процесс отрисовки всех данных робота в графическом интерфейсе.
StopPaint – публичный метод, останавливает процесс отображения графической информации для панели.
GetNameStrategyType – абстрактный метод, обязателен к переопределению в производных классах. Возвращает имя производного типа.
IsConnected – публичное свойство типа bool, возвращает false, если хоть у одной из вкладок отсутствует соединение с биржей. В остальных случаях возвращает true.
Clear – публичный метод, производит очистку данных робота, например, в оптимизаторе перед началом тестирования с новыми парметрами.
Delete – публичный метод, выполняет все необходимые операции перед удалением робота в программе.
MoveChartToTheRight – публичный метод, на активной вкладке перемещает фокус в правую часть графика.
TotalProfitInPersent – публичное свойство типа decimal, возвращает общее значение прибыли/убытка в процентном выражении по всем сделкам робота.
TotalProfitAbs – публичное свойство типа decimal, возвращает общее значение прибыли/убытка в абсолютном выражении по всем сделкам робота.
MiddleProfitInPersent – публичное свойство типа decimal, возвращает среднее значение прибыли/убытка в процентном выражении на один контракт.
ProfitFactor – публичное свойство типа decimal, рассчитывает и возвращает общий профит фактор для робота.
MaxDrowDown – публичное свойство типа decimal, рассчитывает и возвращает размер максимальной просадки для робота.
WinPositionPersent – публичное свойство типа decimal, рассчитывает и возвращает размер количество прибыльных позиций в процентном отношении.
MaxDrowDown – публичное свойство типа int, рассчитывает и количество всех позиций в роботе, за исключением не открытых, то есть тех, у которых состояние равно OpeningFall.
AllPositionsCount – публичное свойство типа int, рассчитывает и количество абсолютно всех позиций в роботе.
ShowParametrDialog – общедоступный метод, вызывает окно настройки параметров для текущего бота.
_paramUi_Closing – обработчик события закрытия окна настройки параметров.
CloseParameterDialog – публичный метод, закрывает окно с параметрами.
ParamGuiSettings – публичное поле ParamGuiSettings, описывает настройки и логику взаимодействия для окна параметров.
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 – публичное событие, вызываемое при изменении значения параметра.
_riskManager_RiskManagerAlarmEvent – обработчик события достижения роботом заданных лимитов потерь.
ShowMessageInNewThread – приватный метод, открывает окно с предупреждением.
CloseAndOffAllToMarket – публичный метод, закрывает по рынке все позиции во всех вкладках, принадлежащих роботу.
GetTabs – публичный метод, возвращает список всех вкладок, принадлежащих роботу.
ActivTab – публичное поле, указывает на активную вкладку робота.
ActivTabNumber – публичное свойство типа int, возвращает номер активной вкладки.
TabsSimple – публичное свойство, возвращает список всех вкладок типа BotTabSimple.
TabsIndex – публичное свойство, возвращает список всех вкладок типа BotTabIndex.
TabsCluster – публичное свойство, возвращает список всех вкладок типа BotTabCluster.
TabsScreener – публичное свойство, возвращает список всех вкладок типа BotTabScreener.
_tabBotTab_SelectionChanged – обработчик события нажатия на заголовок вкладки.
TabCreate – публичный метод, создает новую вкладку, принимает значение перечисления, указывающее тип необходимой вкладки.
TabDelete – публичный метод, удаляет активную вкладку.
TabDelete – перегруженная версия метода, удаляет активную вкладку по индексу.
ChangeActivTab – приватный метод, устанавливает другую вкладку в качестве активной и отображаемой в пользовательском интерфейсе.
ReloadTab – приватный метод, переназначает вкладку для контрола.
ClearTabs – публичный метод, очищает все вкладки в роботе.
ShowPanelRiskManagerDialog – публичный метод, выводит на экран окно менеджера рисков.
ShowIndividualSettingsDialog – публичный абстрактный метод, после реализации в производных классах содержит логику по отображению и обработке окна настроек робота.
UserSetPositionAction – публичный метод, обрабатывает команды пользователей. Принимает позицию, которую нужно обработать и значение перечисления SignalType – команда, которую необходимо выполнить.
OnOffEventsInTabs – общедоступное свойство типа bool, включает или отключает генерацию событий для всех вкладок робота.
OnOffEmulatorsInTabs – общедоступное свойство типа bool, включает или отключает режим эмуляции для всех вкладок робота.
SendNewLogMessage – защищенный метод, отправляет сообщение в лог.
LogMessageEvent – публичное событие, высылает сообщение наверх.
DeleteEvent – публичное событие, сигнализирует об удалении робота.
NewTabCreateEvent – публичное событие, извещает о создании в роботе новой вкладки.
Комментарии