Skip to content

Hooks (перехватчики)

Hook — это заранее определённая функция плагина, которая вызывается сервером в определённый момент времени.
Например, hook HookTradeRequestOpen вызывается каждый раз, когда клиентский запрос добавляется в очередь на обработку.
Полное описание доступно в разделе Hooks документации.

Любой плагин должен содержать как минимум два hook-функции:

  • AboutPlugin — предоставляет серверу основную информацию о плагине.
  • CreatePlugin — используется для глобальной инициализации плагина; получает интерфейс сервера в качестве параметра.
  • DestroyPlugin — используется для глобальной инициализации плагина; получает интерфейс сервера в качестве параметра.

Если плагину требуется деинициализация (например, закрытие потоков или сокетов), добавьте hook-функцию DestroyPlugin. Она вызывается при завершении работы сервера.
Внимание: после вызова CreatePlugin доступ к интерфейсу сервера запрещён.
Например, если в плагине есть отдельный поток, его следует завершать именно в DestroyPlugin, не дожидаясь выгрузки плагина.

How to add plugins to the Docker image?

Your answer or details here.

Схема обработки hook-функции

Схема обработки hook-функции

Пояснения к схеме:

  1. Сервер инициирует вызов hook-функции (например, HookUserAdd).
  2. Запрос проходит по цепочке подключённых плагинов:
    • Каждый плагин получает управление по очереди (в порядке приоритета).
    • Если плагин возвращает RET_OK, управление передаётся следующему плагину.
    • Если плагин возвращает любой другой код, дальнейшая обработка останавливается — сервер не вызывает следующие плагины для этого hook.
  3. Если ни один плагин не остановил обработку (все вернули RET_OK), сервер завершает обработку события.

Таким образом, hook обрабатывается до первого отказа (No на схеме), и дальнейшее выполнение прекращается для оставшихся плагинов.

Trades Hooks

Hook Description
HookTradeRequestOpen Hook for adding a checked trade request to the queue
HookTradeProcessOpen Hook for trade request execution
HookTradeRequestClose Hook for Close By request execution
HookTradeProcessClose Hook for checking if a trade request matches routing rules
HookTradeProcessCommission Hook for calculating the commission blocked when placing an order
HookTradeProcessMarginCall Hook for margin calculation (in progress)
HookTradeProcessStopOut Hook for stop out calculation (in progress)

Accounts Hooks

Hook Description
HookAccountAdd A hook of an event of adding a new client record
HookAccountUpdate A hook of an event of client record update
HookAccountDelete A hook of an event of client record deletion
HookAccountLogin A hook of a client's connection to the server
HookAccountLogout A hook of a client's connection to the server

System Hooks

Hook Description
HookServerConnect The hook for managing ScaleTrade platform components connections to Gateway API.