Skip to content

Торговля

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

Метод Описание
HookTradeRequestAdd Hook для добавления проверенного торгового запроса в очередь
HookTradeRequestRoute Hook маршрутизации торгового запроса в очереди
HookTradeRequestProcess Hook исполнения торгового запроса
HookTradeRequestProcessCloseBy Hook исполнения запроса Close By
HookTradeRequestRuleFilter Hook проверки соответствия запроса правилу маршрутизации
HookTradeRequestRuleApply Hook применения правила маршрутизации к торговому запросу
HookTradeRollover Hook начисления ролловера
HookTradeInterest Hook расчёта годовых процентов
HookTradeInterestCharge Hook добавления рассчитанной суммы годовых процентов на счёт клиента
HookTradeInterestChargeDeal Hook для сделки по начислению годовых процентов (балансовая операция)
HookTradeCommissionOrder Hook расчёта комиссии, блокируемой при размещении ордера
HookTradeCommissionDeal Hook расчёта комиссии, удерживаемой при исполнении сделки. Вызывается до расчёта/блокировки комиссии, что позволяет использовать собственный алгоритм расчёта.
HookTradeCommissionCharge Hook финального списания/зачисления комиссий в конце дня/месяца
HookTradeExecution Hook применения исполнения сделки

Для того чтобы получать торговые события, плагин должен быть подписан на эти события с помощью метода
IMTServerAPI::TradeSubscribe.

Сценарии обработки клиентских заявок

Ниже приведены сценарии обработки заявок в различных режимах исполнения (Instant Execution, Request Execution, Market Execution), а также принципы работы с отложенными и стоп-ордерами.

Instant Execution

В режиме Instant Execution клиент совершает сделки по текущим рыночным ценам, отображаемым в Market Watch.

Проверки на сервере: - Основные параметры заявки (разрешена ли торговля по символу, стоп-уровни, фриз-уровни, объемы) - Для открытия/закрытия позиции — проверка требований по марже - Проверка согласия клиента на совершение сделки по более выгодной цене (при необходимости возвращается requote с актуальной ценой) - Проверка доступности предложенной цены в потоке цен (при активном режиме "Проверять цену запроса в IE" в настройках группы). Если цена недоступна или устарела, клиенту возвращается requote с актуальной ценой.

Request Execution

В режиме Request Execution клиент сначала запрашивает текущую цену, затем в течение ограниченного времени принимает решение.

Проверки на сервере: - Основные параметры заявки (разрешена ли торговля по символу, стоп-уровни, фриз-уровни, объемы) - Проверка доступности дилерских цен для клиента - Сравнение дилерских цен с рыночными - Проверка тайм-аута на принятие торгового решения - Проверка требований по марже

Market Execution

В режиме Market Execution клиент совершает сделки по текущим рыночным ценам, дилер может изменить цену в любую сторону. Клиент заранее соглашается на любую цену, которую предоставит дилер.

Проверки на сервере: - Основные параметры заявки (разрешена ли торговля по символу, стоп-уровни, фриз-уровни, объемы) - Проверка требований по марже


Как обрабатываются отложенные ордера

При поступлении каждого нового тика сервер проверяет все отложенные ордера на активацию.

На этапе подготовки к активации ордера: - Проверяется свободная маржа. Если средств недостаточно для открытия ордера, он удаляется с комментарием "cancelled by dealer".


Как обрабатываются Stop Loss и Take Profit

Аналогично отложенным ордерам, при каждом новом тике сервер просматривает все открытые позиции и проверяет срабатывание SL и TP.

На этапе активации SL/TP: - Если условия выполнены, происходит обработка соответствующего события согласно торговой логике и настройкам.

Hooks

Некоторые интерфейсы Server API содержат методы-хуки, которые позволяют влиять на поведение сервера при обработке события.
Для лучшего понимания различий между hooks и событиями приведена таблица сравнения их свойств:

События Хуки
Отправляются по факту действия Вызываются до выполнения действия
Предназначены только для уведомления Позволяют влиять на выполняемое действие
Все параметры только для чтения Некоторые параметры можно изменять
Все подписчики получают уведомления Хуки обрабатываются в порядке настроек плагинов; внутри плагина — в порядке подписки на интерфейс
Методы событий типа void Методы-хуки всегда возвращают код результата
Обработка хуков продолжается до первого возврата кода, отличного от MT_RET_OK (если не указано иное); далее hook не передаётся другим методам

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

Торговля

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

Метод Описание
HookTradeRequestAdd Hook для добавления проверенного торгового запроса в очередь
HookTradeRequestRoute Hook маршрутизации торгового запроса в очереди
HookTradeRequestProcess Hook исполнения торгового запроса
HookTradeRequestProcessCloseBy Hook исполнения запроса Close By
HookTradeRequestRuleFilter Hook проверки соответствия запроса правилу маршрутизации
HookTradeRequestRuleApply Hook применения правила маршрутизации к торговому запросу
HookTradeRollover Hook начисления ролловера
HookTradeInterest Hook расчёта годовых процентов
HookTradeInterestCharge Hook добавления рассчитанной суммы годовых процентов на счёт клиента
HookTradeInterestChargeDeal Hook для сделки по начислению годовых процентов (балансовая операция)
HookTradeCommissionOrder Hook расчёта комиссии, блокируемой при размещении ордера
HookTradeCommissionDeal Hook расчёта комиссии, удерживаемой при исполнении сделки. Вызывается до расчёта/блокировки комиссии, что позволяет использовать собственный алгоритм расчёта.
HookTradeCommissionCharge Hook финального списания/зачисления комиссий в конце дня/месяца
HookTradeExecution Hook применения исполнения сделки

Для того чтобы получать торговые события, плагин должен быть подписан на эти события с помощью метода
IMTServerAPI::TradeSubscribe.

Сценарии обработки клиентских заявок

Ниже приведены сценарии обработки заявок в различных режимах исполнения (Instant Execution, Request Execution, Market Execution), а также принципы работы с отложенными и стоп-ордерами.

Instant Execution

В режиме Instant Execution клиент совершает сделки по текущим рыночным ценам, отображаемым в Market Watch.

Проверки на сервере: - Основные параметры заявки (разрешена ли торговля по символу, стоп-уровни, фриз-уровни, объемы) - Для открытия/закрытия позиции — проверка требований по марже - Проверка согласия клиента на совершение сделки по более выгодной цене (при необходимости возвращается requote с актуальной ценой) - Проверка доступности предложенной цены в потоке цен (при активном режиме "Проверять цену запроса в IE" в настройках группы). Если цена недоступна или устарела, клиенту возвращается requote с актуальной ценой.

Request Execution

В режиме Request Execution клиент сначала запрашивает текущую цену, затем в течение ограниченного времени принимает решение.

Проверки на сервере: - Основные параметры заявки (разрешена ли торговля по символу, стоп-уровни, фриз-уровни, объемы) - Проверка доступности дилерских цен для клиента - Сравнение дилерских цен с рыночными - Проверка тайм-аута на принятие торгового решения - Проверка требований по марже

Market Execution

В режиме Market Execution клиент совершает сделки по текущим рыночным ценам, дилер может изменить цену в любую сторону. Клиент заранее соглашается на любую цену, которую предоставит дилер.

Проверки на сервере: - Основные параметры заявки (разрешена ли торговля по символу, стоп-уровни, фриз-уровни, объемы) - Проверка требований по марже


Как обрабатываются отложенные ордера

При поступлении каждого нового тика сервер проверяет все отложенные ордера на активацию.

На этапе подготовки к активации ордера: - Проверяется свободная маржа. Если средств недостаточно для открытия ордера, он удаляется с комментарием "cancelled by dealer".


Как обрабатываются Stop Loss и Take Profit

Аналогично отложенным ордерам, при каждом новом тике сервер просматривает все открытые позиции и проверяет срабатывание SL и TP.

На этапе активации SL/TP: - Если условия выполнены, происходит обработка соответствующего события согласно торговой логике и настройкам.

Hooks

Некоторые интерфейсы Server API содержат методы-хуки, которые позволяют влиять на поведение сервера при обработке события.
Для лучшего понимания различий между hooks и событиями приведена таблица сравнения их свойств:

События Хуки
Отправляются по факту действия Вызываются до выполнения действия
Предназначены только для уведомления Позволяют влиять на выполняемое действие
Все параметры только для чтения Некоторые параметры можно изменять
Все подписчики получают уведомления Хуки обрабатываются в порядке настроек плагинов; внутри плагина — в порядке подписки на интерфейс
Методы событий типа void Методы-хуки всегда возвращают код результата
Обработка хуков продолжается до первого возврата кода, отличного от MT_RET_OK (если не указано иное); далее hook не передаётся другим методам

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

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

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

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

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

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

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

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

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

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

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