Skip to content
Bogdan Khanbekov edited this page Jul 22, 2022 · 1 revision

Архитектура Core (Testing Core)

Testing Core - тестирующее ядро, создается для тестирования гейтов под нагрузкой, с условиями ошибок в ордерах и прочем. В архитектуре учитывается дальнейшее использование ядра в качестве полноценного торгового ядра.

Основные компоненты:

  • Strategy - абстрактный класс, реализации которого пишет пользователь (алготрейдер). В нём описан алгоритм торговой стратегии, который использует Trader для получения данных и выставления ордеров. Будет использоваться для написания тестовых сценариев.
  • Trader - отвечает за взаимодействие с Gate. Хранит и обновляет данные, отправляет команды. Логгирует действия стратегии.
  • Communicator - класс, который используется для взаимодействия с лог-сервером и Gate.

Далее классы описаны более подробно.

Общая схема архитектуры

core

Класс Trader

Отвечает за взаимодействие с гейтом и хранение данных. То есть создает, отправляет гейту и обновляет ордера, хранит и обновляет балансы, ордер-буки, отправляет гейту команды.

trader

Класс Communicator

Отвечает за взаимодействие с Gate, в частности, по Aeron. Получает и отправляет сообщения, форматирует под общий формат и проверяет их на правильность (не были повреждены, соблюдение формата).

communicator

Класс Order

Содержит информацию об ордере, может отправить сообщение в гейт для исполнения или отмены ордера на бирже.

order

Состояние ордера - OrderState

Хранит состояние ордера на бирже. Список состояний:

  • unplaced - ордер не был добавлен на биржу, существует только в ядре
  • placing - гейту была отправлена команда разместить ордер, ответ пока не получен
  • open - ордер открыт на бирже
  • filled - ордер частично заполнен
  • closed - ордер закрыт (полностью заполнен, т.е. исполнен)
  • canceled - ордер отменен ядром (вне зависимости от того, насколько он был заполнен)
  • error - ошибка во время создания ордера (например, недостаточно средств)
Переходы между состояниями

order_states

Класс OrderManager

Отвечает за хранение и обновление ордеров.

order_manager

Класс OrderFabric

Отвечает за создание объектов ордеров. Не размещает ордера на бирже.

(см. схему в общей схеме архитектуры)

Класс BalanceManager

Отвечает за хранение и обновление баланса.

(см. схему в общей схеме архитектуры)

Класс MarketDataManager

Отвечает за хранение и обновление рыночных данных, в данной версии только актуального ордер-бука.

(см. схему в общей схеме архитектуры)