Стоп-заявки
Стоп-заявки — распоряжение брокеру на выставление рыночной или лимитной заявки на бирже только при достижении определённых условий.
Общая информация
Стоп-заявки обладают рядом свойств, которые необходимо учитывать при ведении торгов с их помощью. В частности, следует помнить, что:
Стоп-заявка — это условная заявка.
Стоп-заявки стоит рассматривать как промежуточный этап выставления прямых заявок.
Такие заявки существуют только на серверах Брокера и их задача — передать бирже рыночную или лимитную заявку с заданными характеристиками только тогда, когда будут достигнуты определённые условия по цене.
До момента срабатывания условные заявки не видны другим участникам торгов и не требуют обеспечения, так как от них требуется только дождаться возможности создать прямую заявку.
Заявки, следующие за условными, подчиняются всем требованиям к прямым заявкам.
При срабатывании условной заявки на биржу отправляется прямая заявка, по которой должна быть заключена сделка. И эта выставляемая заявка, будь то рыночная, лимитная или айсберг-заявка, будет подчиняться тем требованиям и обладать теми особенностями, которые ей соответствуют.
Кроме того, стоит разделять гарантийное обеспечение условных и прямых заявок. Стоп-заявка для выставления не требует обеспечения, но прямая заявка должна быть обеспечена в соответствии с тарифом торгового аккаунта. Если на момент срабатывания стоп-заявки и попытки выставления прямой заявки обеспечить гарантийное обеспечение сделки будет невозможно, такая заявка будет отклонена биржей так же, как и при попытке создания необеспеченной заявки вручную.
Вложенность условных заявок ограничена.
Каждая условная заявка может создать только одну прямую заявку при срабатывании. К прямым заявкам относятся рыночные, лимитные и айсберги. Создать сценарии «Стоп-заявка создаёт стоп-заявку, создающую стоп-заявку» или «Одна стоп-заявка создаёт несколько прямых заявок» не получится.
Это ограничение можно частично обойти, объединив несколько заявок в группу.
Ограничение по цене работает в обе стороны.
При выставлении условной заявки требуется указать цену, при достижении которой заявка должна сработать. В зависимости от того, как была выставлена цена срабатывания, условные заявки делятся на два типа:
Тейк-профит (Take profit) — цена в заявке более выгодная, чем текущая рыночная. Такая заявка позволяет участнику торгов совершить сделку на более выгодных условиях, чем доступны сейчас. Например, выставить рыночную заявку на продажу инструмента, когда цена достигнет желаемого значения при росте рынка.
Стоп-лосс (Stop loss) — цена в заявке менее выгодная, чем текущая рыночная. Такая заявка позволяет участнику торгов совершить сделку с теми потерями, с которыми он готов согласиться. Например, выставить рыночную заявку на продажу инструмента при падении рынка по той цене, по которой потери будут минимальными.
В API других торговых систем для создания тейк-профит и стоп-лосс заявок могут использоваться запросы к разным ресурсам. В АЛОР Брокер API оба типа заявок создаются одной и той же командой, тип заявки при этом определяется направлением сделки и условием срабатывания.
Условные заявки могут «вынести».
При выставлении цены срабатывания участники торгов опираются на текущую динамику торгов, в связи с чем отклонение цены срабатывания от текущей рыночной цены зачастую довольно мало. Этим могут воспользоваться крупные игроки, способные спровоцировать ложный «пробой» ценового уровня, при котором рыночная цена совершает кратковременный, но всё же существенный скачок. Это приведёт к срабатыванию всех стоп-заявок, попавших в ценовой диапазон скачка. Ложный «пробой» имеет кратковременный характер и цена достаточно быстро возвращается в прежнее положение, но последствия от такого скачка могут быть достаточно серьёзными в зависимости от выбранного для выставления типа биржевой заявки. Если лимитные заявки при должной сноровке и своевременном обнаружении скачка можно успеть отменить до исполнения, рыночные заявки будут незамедлительно выполнены по невыгодной цене, зачастую превышая те потери, на которые трейдер был готов.
При этом стоит отметить, что универсального способа вести исключительно прибыльную торговлю с помощью стоп-заявок не существует: выставляя стоп-заявками только рыночные заявки, трейдер рискует совершить сделку по невыгодной цене при ложном «пробое» без возможности сразу компенсировать потери по той же цене, а при выставлении только лимитных — не совершить сделку вовсе, когда «пробой» будет играть ему на руку.
Уменьшить потери от срабатывания условных заявок при ложных пробоях можно, объединяя заявки в группу для цепного срабатывания.
Условные заявки не требуют обеспечения, тогда как выставляемые при срабатывании рыночные и лимитные заявки должны быть обеспечены. Таким образом, на момент срабатывания условной заявки в портфеле должно быть достаточно средств для исполнения контракта, иначе биржевая заявка будет отклонена торговой системой.
Убедиться в достаточности средств можно с помощью запроса на оценку заявки. Ознакомиться со ставками риска при немаржинальной торговле можно здесь.
Условные заявки стоит рассматривать как способ автоматизации процесса торгов, позволяющий заранее выставить верхнюю и нижнюю границы цены на инструмент, по которым требуется заключить сделку.
Условия выполнения
Срок действия
Благодаря тому, что условные заявки существуют только на серверах Брокера, их срок действия не ограничен биржей и может составлять несколько часов, дней, недель, месяцев или лет. В торговой системе АЛОР Брокер для указания срока действия используется параметр stopEndUnixTime
, передаваемый в теле запроса. В качестве значения указывается дата завершения заявки в формате Unix-времени, тип данных int64.
{
"stopEndUnixTime": 1735689599 // 31.12.2024 23:59:59 UTC
}
Цена срабатывания
Чтобы условная заявка сработала, цена на инструмент должна достигнуть определённого значения. В торговой системе АЛОР Брокер для указания значения цены используется параметр triggerPrice
, передаваемый в теле запроса. В качестве значения указывается желаемая цена за лот в валюте расчётов, тип данных decimal. Если значение дробное, в качестве делителя указывается точка («.»).
Так, если условная заявка должна сработать при достижении цены лота значения 350 рублей 86 копеек, значение параметра должно быть следующим:
{
"triggerPrice": 350.86
}
Условие срабатывания
Чтобы определить тип заявки (тейк-профит или стоп-лосс), помимо цены срабатывания также должно быть задано условие срабатывания относительно этой цены. В торговой системе АЛОР Брокер для этого используется параметр condition
, передаваемый в теле запроса. В качестве значения указывается один из четырёх строковых вариантов, поддерживаемых системой:
More
— Больше указанной ценыMoreOrEqual
— Больше или равно указанной ценыLessOrEqual
— Меньше или равно указанной ценыLess
— Меньше указанной цены
Так, если условная заявка должна сработать, когда цена опустится до значения 350 рублей 86 копеек или ниже, значение параметра должно быть следующим:
{
"triggerPrice": 350.86,
"condition": "LessOrEqual"
}
Примеры запросов
Общие требования
Заявку через API можно выставить на исполнение, изменить и снять с исполнения, если она не была выполнена ранее. При этом, независимо от выбранного действия и протокола взаимодействия, все запросы должны:
- Быть авторизованными
- Быть идентифицируемыми
- Содержать сообщение со всеми необходимыми характеристиками заявки
От протокола взаимодействия же зависит, как эти условия соблюсти.
- HTTP API
- WebSocket API
Авторизация
Авторизация нужна для подтверждения у отправителя наличия прав на использование запрошенного ресурса. Для авторизации запросов используется JWT токен, выполняющий роль Access токена. Полное описание доступных способов авторизации представлено в разделе Авторизация.
В HTTP API для передачи токена используется параметр заголовка Authorization
. Заголовок должен передаваться с каждым выполняемым запросом.
Передаётся этот токен как Bearer-токен, в связи с чем заголовок должен содержать префикс Bearer
перед передаваемым значением. Выглядит корректно заполненный заголовок Authorization
так:
Authorization: Bearer eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCIsImN0eSI6IkpXVCJ9.eyJzdWIiOiJMb2dpblNhbXBsZSIsImVudCI6ImNsaWVudCIsImVpbiI6IjAxMjM0IiwiY2xpZW50aWQiOiIwMTIzNDU2IiwiYXpwIjoiMDEyMzQ1Njc4OWFiY2RlZjAxMjMiLCJhZ3JlZW1lbnRzIjoiQWdyZWVtZW50U2FtcGxlMSBBZ3JlZW1lbnRTYW1wbGUyIEFncmVlbWVudFNhbXBsZTMiLCJwb3J0Zm9saW9zIjoiUG9ydGZvbGlvU2FtcGxlMSBQb3J0Zm9saW9TYW1wbGUyIFBvcnRmb2xpb1NhbXBsZTMiLCJzY29wZSI6Ik9yZGVyc1JlYWQgT3JkZXJzQ3JlYXRlIFRyYWRlcyBQZXJzb25hbCBTdGF0cyIsImV4cCI6Mjg3MTc2MzE5OSwiaWF0IjowLCJpc3MiOiJBbG9yLklkZW50aXR5IiwiYXVkIjoiQ2xpZW50IFdBUlAgV2FycEFUQ29ubmVjdG9yIHN1YnNjcmlwdGlvbnNBcGkgQ29tbWFuZEFwaSBJbnN0cnVtZW50QXBpIFRyYWRpbmdWaWV3UGxhdGZvcm0ifQ.QOQVMIAoZ6SnF5urnIzJ0EvtQd9P5Sx355069kXoID207wHOTW0wkKNMcrIKXmENEQQ_0yDjqH_kjeqWLBJuqA
Идентификация
Идентификация запроса нужна для разделения десятка однотипных запросов на уникальные. Идентификатор задаётся со стороны пользователя и передаётся в виде значения параметра заголовка X-REQID
, в связи с чем рекомендуем предусмотреть механизм его генерации в используемом ПО.
В качестве идентификатора запроса можно использовать любую символьную комбинацию, включая специальные символы !@№;%:?*()-_=+/|"'
. На идентификатор действуют два ограничения:
Значение идентификатора должно быть уникальным для торговой системы. Если значение ранее уже использовалось для другого запроса, вместо повторного выполнения будет возвращена копия ответа на первый запрос с этим идентификатором
Спец.символы, нарушающие целостность JSON объекта, должны быть экранированы
Таким образом, в качестве идентификатора запроса система готова принять как Dxxxxx-Order-Market-No-812643-@-MOEX
, так и d3c886f1-ea1e-4634-aff4-119c902ad926
при условии, что эти значения не передавались ни одним из пользователей API ранее.
Корректно заполненный заголовок X-REQID
не требует дополнительных префиксов и выглядит следующим образом:
X-REQID: d3c886f1-ea1e-4634-aff4-119c902ad926
Соединение
Все запросы на управление заявками через WebSocket API, независимо от типа заявки и запрашиваемой операции, выполняются через интерфейс /cws
. Перед отправкой запроса установите WebSocket-соединение с этим интерфейсом.
Полный URL интерфейса:
https://api.alor.ru/cws
https://apidev.alor.ru/cws
Авторизация
Авторизация нужна для подтверждения у отправителя наличия прав на использование запрошенного ресурса. Для авторизации запросов используется JWT токен, выполняющий роль Access токена. Полное описание доступных способов авторизации представлено в разделе Авторизация.
В WebSocket API для передачи токена используется отдельный запрос к интерфейсу /cws с кодом операции authorize
. Запрос достаточно выполнять раз в 15-20 минут для авторизации всех последующих запросов в рамках того же WebSocket-соединения.
Установите соединение с нужным контуром системы и отправьте сообщение с кодом операции authorize
и действительным Access токеном в качестве значения параметра token
:
{
"opcode": "authorize",
"guid": "c328fcf1-e495-408a-a0ed-e20f95d6b813",
"token": "eyJhbGciOiJ..."
}
Если запрос сформирован корректно, в ответ вернётся сообщение с кодом 200, подтверждающее авторизацию соединения:
{
"requestGuid": "c328fcf1-e495-408a-a0ed-e20f95d6b813",
"httpCode": 200,
"message": "The connection has been initialized."
}
Параметр guid
отвечает за идентификацию сообщения и описан ниже.
Идентификация
Идентификация запроса нужна для разделения десятка однотипных запросов на уникальные. Идентификатор задаётся со стороны пользователя и передаётся в виде значения параметра guid
в теле сообщения, в связи с чем рекомендуем предусмотреть механизм его генерации в используемом ПО.
В качестве идентификатора запроса можно использовать любую символьную комбинацию, включая специальные символы !@№;%:?*()-_=+/|"'
. На идентификатор действуют два ограничения:
Значение идентификатора должно быть уникальным для торговой системы. Если значение ранее уже использовалось для другого запроса, вместо повторного выполнения будет возвращена копия ответа на первый запрос с этим идентификатором
Спец.символы, нарушающие целостность JSON объекта, должны быть экранированы
Таким образом, в качестве идентификатора запроса система готова принять как Dxxxxx-Order-Market-No-812643-@-MOEX
, так и d3c886f1-ea1e-4634-aff4-119c902ad926
при условии, что эти значения не передавались ни одним из пользователей API ранее.
Корректно заполненный параметр guid
не требует дополнительных префиксов и выглядит следующим образом:
{
"guid": "d3c886f1-ea1e-4634-aff4-119c902ad926"
}
Управление заявками
Способы создания заявок взаимозаменяемы. Например, заявку, выставленную через HTTP API, можно изменить или снять через WebSocket API, и наоборот.
- Рыночная стоп-заявка
- Лимитная стоп-заявка
- HTTP API
- WebSocket API
Выставление заявки
Интерактивное описание запроса доступно на странице Создание рыночной стоп-заявки
Для создания стоп-заявки с последующим выставлением на биржу рыночной заявки через HTTP API используется POST-запрос к конечной точке /commandapi/warptrans/TRADE/v2/client/orders/actions/stop
.
Полный URL конечной точки выглядит так:
https://api.alor.ru/commandapi/warptrans/TRADE/v2/client/orders/actions/stop
https://apidev.alor.ru/commandapi/warptrans/TRADE/v2/client/orders/actions/stop
В теле сообщения необходимо указать характеристики как стоп-заявки, так и рыночной заявки:
{
// Параметры стоп-заявки:
"condition": "MoreOrEqual",
"triggerPrice": 350.86,
"stopEndUnixTime": 1735678799,
"activate": true,
// Параметры рыночной заявки
"side": "sell",
"quantity": 100,
"instrument": {
"symbol": "SBER",
"exchange": "MOEX",
"instrumentGroup": "TQBR"
},
"user": {
"portfolio": "D39004"
}
}
Создана стоп-заявка, в результате срабатывания которой должна быть выставлена на биржу рыночная заявка на продажу 100 лотов инструмента SBER на Московской Бирже (MOEX) в режиме T+2 (TQBR) по той цене, которая является лучшей ценой лота в момент исполнения.
Стоп-заявка сработает, если рыночная цена лота будет равна или превысит значение 350 рублей 86 копеек, или отменится, если условие не будет выполнено до 31 декабря 2024 года 23:59:59 UTC.
В случае успешного выполнения запроса API вернёт сообщение с кодом ответа 200, содержащее в себе биржевой номер заявки:
{
"message": "success",
"orderNumber": "189...559"
}
Если обработка запроса завершилась ошибкой, API вернёт информацию о причинах этой ошибки.
Полный список всех параметров и возможных ответов доступен на странице описания запроса.
Изменение заявки
Интерактивное описание запроса доступно на странице Изменение рыночной стоп-заявки
Для изменения ранее выставленной рыночной стоп-заявки через HTTP API используется PUT-запрос к той же конечной точке с добавлением Path-параметра {stopOrderId}
, заменяемого при выполнении запроса номером заявки.
Изменение происходит через отмену ранее выставленной заявки и публикацию новой. Изменение исполненной или отменённой заявки невозможно.
Полный URL конечной точки выглядит так:
https://api.alor.ru/commandapi/warptrans/TRADE/v2/client/orders/actions/stop/189...559
https://apidev.alor.ru/commandapi/warptrans/TRADE/v2/client/orders/actions/stop/189...559
Где 189...559
— фактическое значение параметра {stopOrderId}
.
При изменении существующей заявки используется сообщение, идентичное запросу на выставление заявки. Отличие заключается в других значениях параметров.
{
// Параметры стоп-заявки:
"condition": "MoreOrEqual",
"triggerPrice": 330.15,
"stopEndUnixTime": 1719781199,
"activate": true,
// Параметры рыночной заявки
"side": "sell",
"quantity": 50,
"instrument": {
"symbol": "SBER",
"exchange": "MOEX",
"instrumentGroup": "TQBR"
},
"user": {
"portfolio": "D39004"
}
}
Заявка с номером 189...559
отменена. Создана новая стоп-заявка, в результате срабатывания которой должна быть выставлена на биржу рыночная заявка на продажу 50 лотов инструмента SBER на Московской Бирже (MOEX) в режиме T+2 (TQBR) по той цене, которая является лучшей ценой лота в момент исполнения.
Изменённая стоп-заявка сработает, если рыночная цена лота будет равна или превысит значение 330 рублей 15 копеек, или отменится, если условие не будет выполнено до 30 июня 2024 года 23:59:59 UTC.
В случае успешного выполнения запроса прежняя заявка будет отменена и API вернёт сообщение с кодом ответа 200, содержащее в себе биржевой номер новой заявки:
{
"message": "success",
"orderNumber": "189...560"
}
Если обработка запроса завершилась ошибкой, API вернёт информацию о причинах этой ошибки.
Полный список всех параметров и возможных ответов доступен на странице описания запроса.
Снятие заявки
Интерактивное описание запроса доступно на странице Снятие заявки
Отменить можно только ожидающую исполнения заявку. Отмена исполненной заявки невозможна.
Для снятия ранее выставленной стоп-заявки через HTTP API используется DELETE-запрос к конечной точке /commandapi/warptrans/TRADE/v2/client/orders/{orderId}
, где {orderId}
— Path-параметр, в котором передаётся номер заявки.
Помимо номера заявки необходимо также указать следующие атрибуты заявки:
Query-параметры
Идентификатор клиентского портфеля
Possible values: [MOEX
]
Биржа
Является стоп-заявкой?
Для снятия стоп-заявок используется тот же запрос, что и для снятия биржевых заявок. Отличие заключается в значении параметра stop
: для биржевых заявок значение должно быть false
, для стоп-заявок — true
.
Полный URL запроса для снятия заявки выглядит так:
https://api.alor.ru/commandapi/warptrans/TRADE/v2/client/orders/189...560?portfolio=D39004&exchange=MOEX&stop=true
https://apidev.alor.ru/commandapi/warptrans/TRADE/v2/client/orders/189...560?portfolio=D39004&exchange=MOEX&stop=true
Заявка с номером 189...560
отменена.
В случае успешного выполнения запроса прежняя заявка будет отменена и API вернёт сообщение с кодом ответа 200:
success
Если обработка запроса завершилась ошибкой, API вернёт информацию о причинах этой ошибки.
Полный список всех параметров и возможных ответов доступен на странице описания запроса.
Выставление заявки
Полное описание запроса доступно на странице Создание стоп-заявки
Для создания рыночной стоп-заявки через WebSocket API отправьте в авторизованное соединение сообщение со значением "opcode": "create:stop"
, содержащее все характеристики как стоп-заявки, так и рыночной заявки:
{
// Код операции для создания рыночной стоп-заявки:
"opcode": "create:stop",
// Идентификатор запроса:
"guid": "c328fcf1-e495-408a-a0ed-e20f95d6b813",
// Параметры стоп-заявки:
"condition": "MoreOrEqual",
"triggerPrice": 350.86,
"stopEndUnixTime": 1735678799,
"activate": true,
// Параметры рыночной заявки:
"side": "sell",
"quantity": 100,
"instrument": {
"symbol": "SBER",
"exchange": "MOEX"
},
"board": "TQBR",
"user": {
"portfolio": "D39004"
},
"checkDuplicates": true
}
Создана стоп-заявка, в результате срабатывания которой должна быть выставлена на биржу рыночная заявка на продажу 100 лотов инструмента SBER на Московской Бирже (MOEX) в режиме T+2 (TQBR) по той цене, которая является лучшей ценой лота в момент исполнения.
Стоп-заявка сработает, если рыночная цена лота будет равна или превысит значение 350 рублей 86 копеек, или отменится, если условие не будет выполнено до 31 декабря 2024 года 23:59:59 UTC.
В случае успешного выполнения запроса API вернёт сообщение с кодом ответа 200, содержащее в себе биржевой номер заявки:
{
"requestGuid": "c328fcf1-e495-408a-a0ed-e20f95d6b813",
"httpCode": 200,
"message": "An order '189...559' has been created.",
"orderNumber": 189...559
}
Если обработка запроса завершилась ошибкой, API вернёт информацию о причинах этой ошибки.
Полный список всех параметров и возможных ответов доступен на странице описания запроса.
Изменение заявки
Полное описание запроса доступно на странице Изменение стоп-заявки
Для изменения ранее выставленной стоп-заявки через WebSocket API отправьте в авторизованное соединение сообщение, схожее с тем, которое было отправлено при выставлении предыдущей заявки.
Отличие заключается в добавлении параметра orderId
, в котором указывается номер изменяемой заявки, и значении update:stop
параметра opcode
.
Изменение происходит через отмену ранее выставленной заявки и публикацию новой. Изменение исполненной или отменённой заявки невозможно.
{
// Код операции для изменения рыночной стоп-заявки:
"opcode": "update:stop",
// Идентификатор запроса:
"guid": "c328fcf1-e495-408a-a0ed-e20f95d6b813",
// Номер изменяемой заявки:
"orderId": "189...559",
// Параметры стоп-заявки:
"condition": "MoreOrEqual",
"triggerPrice": 330.15,
"stopEndUnixTime": 1719781199,
"activate": true,
// Параметры рыночной заявки:
"side": "sell",
"quantity": 50,
"instrument": {
"symbol": "SBER",
"exchange": "MOEX"
},
"board": "TQBR",
"user": {
"portfolio": "D39004"
},
"checkDuplicates": true
}
Заявка с номером 189...559
отменена. Создана новая стоп-заявка, в результате срабатывания которой должна быть выставлена на биржу рыночная заявка на продажу 50 лотов инструмента SBER на Московской Бирже (MOEX) в режиме T+2 (TQBR) по той цене, которая является лучшей ценой лота в момент исполнения.
Изменённая стоп-заявка сработает, если рыночная цена лота будет равна или превысит значение 330 рублей 15 копеек, или отменится, если условие не будет выполнено до 30 июня 2024 года 23:59:59 UTC.
В случае успешного выполнения запроса API вернёт сообщение с кодом ответа 200, содержащее в себе биржевой номер заявки:
{
"requestGuid": "c328fcf1-e495-408a-a0ed-e20f95d6b813",
"httpCode": 200,
"message": "An order has been updated. New order Id is '189...560'.",
"orderNumber": "189...560"
}
Если обработка запроса завершилась ошибкой, API вернёт информацию о причинах этой ошибки.
Полный список всех параметров и возможных ответов доступен на странице описания запроса.
Снятие заявки
Полное описание запроса доступно на странице Снятие стоп-заявки
Отменить можно только ожидающую исполнения заявку. Отмена исполненной заявки невозможна.
Для снятия стоп-заявки через WebSocket API отправьте в авторизованное соединение сообщение, содержащее код операции delete:stop
, номер заявки, код биржи и идентификатор портфеля, от имени которого была выставлена заявка. Как и любой другой, запрос на снятие заявки должен содержать уникальный идентификатор в параметре guid
.
{
// Код операции для снятия рыночной стоп-заявки:
"opcode": "delete:stop",
// Идентификатор запроса:
"guid": "c328fcf1-e495-408a-a0ed-e20f95d6b813",
// Номер и принадлежность снимаемой заявки:
"orderId": "189...560",
"exchange": "MOEX",
"user": {
"portfolio": "D39004"
},
"checkDuplicates": true
}
Заявка с номером 189...560
отменена.
В случае успешного выполнения запроса API вернёт сообщение с кодом ответа 200, содержащее в себе биржевой номер заявки:
{
"requestGuid": "c328fcf1-e495-408a-a0ed-e20f95d6b813",
"httpCode": 200,
"message": "An order '189...560' has been deleted.",
"orderNumber": "189...560"
}
Если обработка запроса завершилась ошибкой, API вернёт информацию о причинах этой ошибки.
В отличии от HTTP API, позволяющего одним и тем же запросом отменять заявки любого типа, в WebSocket API запрос с "opcode": "delete:stop"
позволяет отменять только рыночные стоп-заявки. Если нужно отменить лимитную стоп-заявку, воспользуйтесь HTTP-запросом или используйте соответствующий код delete:stopLimit
.
- HTTP API
- WebSocket API
Выставление заявки
Интерактивное описание запроса доступно на странице Создание лимитной стоп-заявки
Для создания стоп-заявки с последующим выставлением на биржу лимитной заявки через HTTP API используется POST-запрос к конечной точке /commandapi/warptrans/TRADE/v2/client/orders/actions/stopLimit
.
Полный URL конечной точки выглядит так:
https://api.alor.ru/commandapi/warptrans/TRADE/v2/client/orders/actions/stopLimit
https://apidev.alor.ru/commandapi/warptrans/TRADE/v2/client/orders/actions/stopLimit
В теле сообщения необходимо указать характеристики как стоп-заявки, так и лимитной заявки:
{
// Параметры стоп-заявки:
"condition": "MoreOrEqual",
"triggerPrice": 350.86,
"stopEndUnixTime": 1735678799,
"activate": true,
// Параметры лимитной заявки
"side": "sell",
"price": 350.90,
"quantity": 100,
"instrument": {
"symbol": "SBER",
"exchange": "MOEX",
"instrumentGroup": "TQBR"
},
"user": {
"portfolio": "D39004"
},
"timeInForce": "oneday"
}
Создана стоп-заявка, в результате срабатывания которой должна быть выставлена на биржу лимитная заявка на продажу 100 лотов инструмента SBER на Московской Бирже (MOEX) в режиме T+2 (TQBR) по цене 350 рублей 90 копеек.
Стоп-заявка сработает, если рыночная цена лота будет равна или превысит значение 350 рублей 86 копеек, или отменится, если условие не будет выполнено до 31 декабря 2024 года 23:59:59 UTC.
В случае успешного выполнения запроса API вернёт сообщение с кодом ответа 200, содержащее в себе биржевой номер заявки:
{
"message": "success",
"orderNumber": "189...559"
}
Если обработка запроса завершилась ошибкой, API вернёт информацию о причинах этой ошибки.
Полный список всех параметров и возможных ответов доступен на странице описания запроса.
Изменение заявки
Интерактивное описание запроса доступно на странице Изменение лимитной стоп-заявки
Для изменения ранее выставленной лимитной стоп-заявки через HTTP API используется PUT-запрос к той же конечной точке с добавлением Path-параметра {stopOrderId}
, заменяемого при выполнении запроса номером заявки.
Изменение происходит через отмену ранее выставленной заявки и публикацию новой. Изменение исполненной или отменённой заявки невозможно.
Полный URL конечной точки выглядит так:
https://api.alor.ru/commandapi/warptrans/TRADE/v2/client/orders/actions/stopLimit/189...559
https://apidev.alor.ru/commandapi/warptrans/TRADE/v2/client/orders/actions/stopLimit/189...559
Где 189...559
— фактическое значение параметра {stopOrderId}
.
При изменении существующей заявки используется сообщение, идентичное запросу на выставление заявки. Отличие заключается в других значениях параметров.
{
// Параметры стоп-заявки:
"condition": "MoreOrEqual",
"triggerPrice": 330.15,
"stopEndUnixTime": 1719781199,
"activate": true,
// Параметры рыночной заявки
"side": "sell",
"price": 330.20,
"quantity": 50,
"instrument": {
"symbol": "SBER",
"exchange": "MOEX",
"instrumentGroup": "TQBR"
},
"user": {
"portfolio": "D39004"
},
}
Заявка с номером 189...559
отменена. Создана новая стоп-заявка, в результате срабатывания которой должна быть выставлена на биржу лимитная заявка на продажу 50 лотов инструмента SBER на Московской Бирже (MOEX) в режиме T+2 (TQBR) по цене 330 рублей 20 копеек.
Изменённая стоп-заявка сработает, если рыночная цена лота будет равна или превысит значение 330 рублей 15 копеек, или отменится, если условие не будет выполнено до 30 июня 2024 года 23:59:59 UTC.
В случае успешного выполнения запроса прежняя заявка будет отменена и API вернёт сообщение с кодом ответа 200, содержащее в себе биржевой номер новой заявки:
{
"message": "success",
"orderNumber": "189...560"
}
Если обработка запроса завершилась ошибкой, API вернёт информацию о причинах этой ошибки.
Полный список всех параметров и возможных ответов доступен на странице описания запроса.
Снятие заявки
Интерактивное описание запроса доступно на странице Снятие заявки
Отменить можно только ожидающую исполнения заявку. Отмена исполненной заявки невозможна.
Для снятия ранее выставленной стоп-заявки через HTTP API используется DELETE-запрос к конечной точке /commandapi/warptrans/TRADE/v2/client/orders/{orderId}
, где {orderId}
— Path-параметр, в котором передаётся номер заявки.
Помимо номера заявки необходимо также указать следующие атрибуты заявки:
Query-параметры
Идентификатор клиентского портфеля
Possible values: [MOEX
]
Биржа
Является стоп-заявкой?
Для снятия стоп-заявок используется тот же запрос, что и для снятия биржевых заявок. Отличие заключается в значении параметра stop
: для биржевых заявок значение должно быть false
, для стоп-заявок — true
.
Полный URL запроса для снятия заявки выглядит так:
https://api.alor.ru/commandapi/warptrans/TRADE/v2/client/orders/189...560?portfolio=D39004&exchange=MOEX&stop=true
https://apidev.alor.ru/commandapi/warptrans/TRADE/v2/client/orders/189...560?portfolio=D39004&exchange=MOEX&stop=true
Заявка с номером 189...560
отменена.
В случае успешного выполнения запроса прежняя заявка будет отменена и API вернёт сообщение с кодом ответа 200:
success
Если обработка запроса завершилась ошибкой, API вернёт информацию о причинах этой ошибки.
Полный список всех параметров и возможных ответов доступен на странице описания запроса.
Выставление заявки
Полное описание запроса доступно на странице Создание лимитной стоп-заявки
Для создания лимитной стоп-заявки через WebSocket API отправьте в авторизованное соединение сообщение со значением "opcode": "create:stopLimit"
, содержащее все характеристики как стоп-заявки, так и рыночной заявки:
{
// Код операции для создания рыночной стоп-заявки:
"opcode": "create:stopLimit",
// Идентификатор запроса:
"guid": "c328fcf1-e495-408a-a0ed-e20f95d6b813",
// Параметры стоп-заявки:
"condition": "MoreOrEqual",
"triggerPrice": 350.86,
"stopEndUnixTime": 1735678799,
"activate": true,
// Параметры рыночной заявки:
"side": "sell",
"price": 350.90,
"quantity": 100,
"instrument": {
"symbol": "SBER",
"exchange": "MOEX"
},
"board": "TQBR",
"user": {
"portfolio": "D39004"
},
// Служебный флаг проверки на наличие дубликатов запроса:
"checkDuplicates": true
}
Создана стоп-заявка, в результате срабатывания которой должна быть выставлена на биржу лимитная заявка на продажу 100 лотов инструмента SBER на Московской Бирже (MOEX) в режиме T+2 (TQBR) по цене 350 рублей 90 копеек.
Стоп-заявка сработает, если рыночная цена лота будет равна или превысит значение 350 рублей 86 копеек, или отменится, если условие не будет выполнено до 31 декабря 2024 года 23:59:59 UTC.
В случае успешного выполнения запроса API вернёт сообщение с кодом ответа 200, содержащее в себе биржевой номер заявки:
{
"requestGuid": "c328fcf1-e495-408a-a0ed-e20f95d6b813",
"httpCode": 200,
"message": "An order '189...559' has been created.",
"orderNumber": 189...559
}
Если обработка запроса завершилась ошибкой, API вернёт информацию о причинах этой ошибки.
Полный список всех параметров и возможных ответов доступен на странице описания запроса.
Изменение заявки
Полное описание запроса доступно на странице Изменение лимитной стоп-заявки
Для изменения ранее выставленной стоп-заявки через WebSocket API отправьте в авторизованное соединение сообщение, схожее с тем, которое было отправлено при выставлении предыдущей заявки.
Отличие заключается в добавлении параметра orderId
, в котором указывается номер изменяемой заявки, и значении update:stop
параметра opcode
.
Изменение происходит через отмену ранее выставленной заявки и публикацию новой. Изменение исполненной или отменённой заявки невозможно.
{
// Код операции для изменения лимитной стоп-заявки:
"opcode": "update:stopLimit",
// Идентификатор запроса:
"guid": "c328fcf1-e495-408a-a0ed-e20f95d6b813",
// Номер изменяемой заявки:
"orderId": "189...559",
// Параметры стоп-заявки:
"condition": "MoreOrEqual",
"triggerPrice": 330.15,
"stopEndUnixTime": 1719781199,
"activate": true,
// Параметры рыночной заявки:
"side": "sell",
"price": 330.20,
"quantity": 50,
"instrument": {
"symbol": "SBER",
"exchange": "MOEX"
},
"board": "TQBR",
"user": {
"portfolio": "D39004"
},
// Служебный флаг проверки на наличие дубликатов запроса:
"checkDuplicates": true
}
Заявка с номером 189...559
отменена. Создана новая стоп-заявка, в результате срабатывания которой должна быть выставлена на биржу лимитная заявка на продажу 50 лотов инструмента SBER на Московской Бирже (MOEX) в режиме T+2 (TQBR) по цене 330 рублей 20 копеек.
Изменённая стоп-заявка сработает, если рыночная цена лота будет равна или превысит значение 330 рублей 15 копеек, или отменится, если условие не будет выполнено до 30 июня 2024 года 23:59:59 UTC.
В случае успешного выполнения запроса API вернёт сообщение с кодом ответа 200, содержащее в себе биржевой номер заявки:
{
"requestGuid": "c328fcf1-e495-408a-a0ed-e20f95d6b813",
"httpCode": 200,
"message": "An order has been updated. New order Id is '189...560'.",
"orderNumber": "189...560"
}
Если обработка запроса завершилась ошибкой, API вернёт информацию о причинах этой ошибки.
Полный список всех параметров и возможных ответов доступен на странице описания запроса.
Снятие заявки
Полное описание запроса доступно на странице Снятие стоп-заявки
Отменить можно только ожидающую исполнения заявку. Отмена исполненной заявки невозможна.
Для снятия стоп-заявки через WebSocket API отправьте в авторизованное соединение сообщение, содержащее код операции delete:stopLimit
, номер заявки, код биржи и идентификатор портфеля, от имени которого была выставлена заявка. Как и любой другой, запрос на снятие заявки должен содержать уникальный идентификатор в параметре guid
.
{
// Код операции для снятия лимитной стоп-заявки:
"opcode": "delete:stopLimit",
// Идентификатор запроса:
"guid": "c328fcf1-e495-408a-a0ed-e20f95d6b813",
// Номер и принадлежность снимаемой заявки:
"orderId": "189...560",
"exchange": "MOEX",
"user": {
"portfolio": "D39004"
},
// Служебный флаг проверки на наличие дубликатов запроса:
"checkDuplicates": true
}
Заявка с номером 189...560
отменена.
В случае успешного выполнения запроса API вернёт сообщение с кодом ответа 200, содержащее в себе биржевой номер заявки:
{
"requestGuid": "c328fcf1-e495-408a-a0ed-e20f95d6b813",
"httpCode": 200,
"message": "An order '189...560' has been deleted.",
"orderNumber": "189...560"
}
Если обработка запроса завершилась ошибкой, API вернёт информацию о причинах этой ошибки.
В отличии от HTTP API, позволяющего одним и тем же запросом отменять заявки любого типа, в WebSocket API запрос с "opcode": "delete:stopLimit"
позволяет отменять только лимитные стоп-заявки. Если нужно отменить лимитную стоп-заявку, воспользуйтесь HTTP-запросом или используйте соответствующий код delete:stop
.
Чтобы выставить вместо обычной лимитной заявки айсберг-заявку, добавьте в тело сообщения параметры icebergFixed
и icebergVariance
с нужными значениями.
Стоп-заявки рекомендуется объединять в группы с другими заявками для связности выполнения.
Что дальше?
- Узнайте, как получить биржевую информацию, используемую в заявках
- Ознакомьтесь с возможностями рыночных и лимитных заявок
- Ознакомьтесь с возможностями айсберг-заявок
- Изучите возможности объединения заявок в группы для упрощения торгов
- Детальнее ознакомьтесь с возможностями и требованиями HTTP API и WebSocket API для лучшего понимания выполняемых действий
- Если возникли вопросы по использованию API, воспользуйтесь списком часто задаваемых вопросов для получения ответа
Для быстрого погружения в процессы использования API можете воспользоваться руководствами по быстрому старту для тестового и боевого контуров системы.