Не смотря на свое название, BotTabSimple является одним из самых больших и сложных объектов в проекте. Код класса насчитывает порядка пяти тысяч строк. Функционал простой вкладки условно можно разделить на несколько блоков:
Интерфейс IIBotTab предписывает каждой вкладке необходимость реализации некоторого функционала, который позволяет программе единообразно управлять всеми вкладками. Как правило в интерфейсе обозначено общее для всех вкладок состояние и поведение.
Одна из важных обязанностей вкладки - это взаимодействие с экземпляром класса ChartCandleMaster. Основная обязанность этого объекта - управление прорисовкой серий данных в графическом интерфейсе программы, таких как свечи, индикаторы, сделки на графике. BotTabSimple является посредником между торговым алгоритмом и мастером прорисовки. В этот блок входят методы для добавления/удаления индикаторов с графика; нанесение на график графических элементов (линии, точки) а также их удаление; изменение фокуса на графике; отображение сделок, условных заявок, линий для стопов и профитов.
Без преувеличения можно сказать, ConnectorCandles - это самый главный объект, с которым взаимодействует вкладка, так как через него происходит все общение с торговой площадкой. BotTabSimple обрабатывает почти все события из коннектора, производит множество вычислений и перенаправляет дальше данные через собственные события. В обратку вкладка обрабатывает запросы роботов и отправляет ордера в коннектор.
Основную логику обработки позиций содержит экземпляр класса Journal, который входит в состав BotTabSimple. После создания позиции вкладка помещает ее в журнал, а ордер высылает в коннектор. Далее по мере получения из коннектора ордеров и собственных сделок, вкладка перенаправляет эти объекты в журнал, который на их основании изменяет состояние позиций. После этого журнал информирует вкладку об изменении состояния позиций при помощи событий PositionStateChangeEvent и PositionNetVolumeChangeEvent.
Разнообразие торговых площадок, поддерживаемых платформой, довольно обширно, но не все из них предоставляют возможность использовать условные заявки на стороне брокера. BotTabSimple берет на себя эти обязательства и предоставляет возможность использовать такие важные для трейдеров сущности, как стоп-лосс, трейлинг стоп и тейк-профит. Вкладка содержит ряд методов, позволяющих роботам задействовать этот функционал. К ним относятся методы - CloseAtStop, CloseAtTrailingStop, CloseAtProfit, а также их перегрузки.
Модуль сопровождения позиций представлен экземпляром класса BotManualControl. Данный объект позволяет настроить реакции на определенные события, связанные с совершением транзакций.
Комментарии