Торговля¶
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-функции (например,
HookUserAdd). - Запрос проходит по цепочке подключённых плагинов:
- Каждый плагин получает управление по очереди (в порядке приоритета).
- Если плагин возвращает
MT_RET_OK, управление передаётся следующему плагину. - Если плагин возвращает любой другой код, дальнейшая обработка останавливается — сервер не вызывает следующие плагины для этого hook.
- Если ни один плагин не остановил обработку (все вернули
MT_RET_OK), сервер завершает обработку события.
Таким образом, hook обрабатывается до первого отказа (No на схеме), и дальнейшее выполнение прекращается для оставшихся плагинов.
Схема обработки hook-функции¶
Пояснения к схеме:
- Сервер инициирует вызов hook-функции (например,
HookUserAdd). - Запрос проходит по цепочке подключённых плагинов:
- Каждый плагин получает управление по очереди (в порядке приоритета).
- Если плагин возвращает
MT_RET_OK, управление передаётся следующему плагину. - Если плагин возвращает любой другой код, дальнейшая обработка останавливается — сервер не вызывает следующие плагины для этого hook.
- Если ни один плагин не остановил обработку (все вернули
MT_RET_OK), сервер завершает обработку события.
Таким образом, hook обрабатывается до первого отказа (No на схеме), и дальнейшее выполнение прекращается для оставшихся плагинов.