Типы заявок и их исполнение
Last updated
Last updated
При выставлении из программы лимитной заявки или заявки по рынку, брокером сначала посылается запрос на биржу - Запрос на транзакцию, где клиринговая компания проверяет лимиты Вашего счета:
В случае превышения лимитов приходит ответ "Нехватка средств по лимитам клиента".
В случае успешной постановки заявки, в программу приходят Номер заявки (с биржи) и Номер транзакции (от брокера).
Из программы выполняется Запрос на транзакцию, в результате которого в программу поступает Номер заявки и Номер транзакции.
Порядок исполнения Запросов на транзакции определяет брокер, и как правило, он не отличается от биржевого.
Порядок исполнения заявок определяет биржа и это правило одинаково для всех. Все в очереди заявок.
В программе TSLab вводится понятие «Портфельная заявка». Оно обобщает стадии жизни заявки. Например, при постановке и срабатывании условной заявки, портфельная будет содержать брокерскую условную заявку и биржевую лимитную, созданную при срабатывании условия.
Также при операции изменении цены заявки, портфельная остается той же, но внутри будет содержаться старая отмененная заявка и новая активная по новой цене.
Портфельная заявка получает уникальный "Портфельный номер" при создании. Также портфельная заявка содержит комментарий с номером агента и сигналом. При поступлении ответов от брокера, к портфельной заявке привязывается номер транзакции и заявки.
Таким образом портфельная заявка в программе является "носителем" всей информации о движении транзакции как у брокера, так и на бирже и внутри TSLab.
И если Вы используете функцию переноса заявки (в таблице Свои заявки, кнопка "Перенести"), вместе с портфельным номером переносится всё и заявке присваивается новый комментарий ИмяАгента.Сигнал.
Портфельный номер заявки можно посмотреть, если непосредственно на графике Агента навести на бар сигнала входа в позицию (или выхода).
Номер заявки будет указан в круглых скобках. Также, номер можно посмотреть в таблицах "Свои заявки" и "Свои сделки" в колонке Номер заявки.
В программе нет отображения номера транзакции (Transaction ID). Данный номер можно посмотреть только в лог файле программы.
Лимитная заявка - Выставляется непосредственно в очередь заявок биржи.
Пример
В качестве примера возьмем инструмент с шагом, равным 5.
цена лучшей покупки равна 100
цена лучшей продажи равна 110 (лучшее предложение в очереди заявок на продажу)
Вы выставили заявку "Купить по цене 105". Теперь Ваша заявка является предложением с лучшей покупкой. Биржа регистрирует сделку, если кто-то совершает противоположную операцию по цене 105 или ниже (выставляет заявку в противоположную сторону).
Если Вы выставили лимитную заявку в противоположную очередь, например, цена ближайшей лучшей продажи равна 110 и Вы выставляете заявку "купить по цене 120", то таким образом биржа "Сведет" Вашу заявку с заявкой лучшей продажи.
Для выставления Лимитной заявки можно использовать блоки:
"Открытие лимитной ценой"
"Закрытие лимитной ценой"
"Открытие позиции если больше" с флагом "Открытие лимитными заявками" в торговых настройках Агента.
"Открытие позиции если меньше" с флагом "Открытие лимитными заявками" в торговых настройках Агента.
"Изменить лимитной ценой"
"Закрытие позиции по тейк-профит" с флагом "Тейк-профит без проскальзывания" в торговых настройках Агента.
Все блоки открытия и закрытия позиции "По рынку" с флагом "По рынку с фикс. ценой"
Подробную информацию о доступных настройках можно посмотреть в статье Торговые настройки агента.
Обратите внимание! Если торговля ведется Агентом, то Дата действия лимитной заявки в программе автоматически выставляется всегда на день. Изменить параметр нельзя.
Выставление срока действия заявки можно только в ручном режиме выставления заявок (Торговля - Менеджер заявок).
Есть особенность на бирже MOEX: во время вечернего клиринга все заявки снимаются. На каждом пересчете программа проверяет статус заявок, если заявка не найдена, программа выставит новую заявку.
У брокеров вид такой заявки называется Лимитная. Одним из видов может являться takeprofit.
У некоторых криптовалютных бирж есть особая настройка для лимитных заявок: Post-Only. Данная настройка доступна в настройках поставщика данных. Из программы: Данные - Поставщики - Выделить поставщика данных (выключить расписание, если включено) - Настройки.
В программе настройка Post-Only работает только для лимитных заявок. При использовании настройки лимитная заявка никогда не попадет в противоположную очередь заявок.
Пример
В качестве примера возьмем инструмент с шагом, равным 5.
цена лучшей покупки 100
цена лучшей продажи 105
Вы выставили лимитную заявку, купить по цене 110. Заявка выставится по цене 100, это не точное число, о правилах таких заявок читайте в документации биржи. Если кратко - это режим выставления лимитных заявок только в очередь своего направления.
У брокеров такой вид заявки называется Рыночный или Маркет заявка.
Некоторые биржи могут принимать и рыночные заявки, например рынок акций на MOEX.
А на рынке фьючерсов и деривативов ФОРТС рыночными заявками считаются лимитные заявки на верхний или нижний лимит рынка (планки рынка).
Например заявка "Купить". Для того чтобы совершить такую операцию, брокер выставляет такую заявку на верхний лимит инструмента. Биржа "сводит" Вашу заявку с заявками, которые стоят в Очереди заявок (в стакане) на продажу, пока не реализует весь объем вашей заявки.
Планки определяются биржей и являются максимальной и минимальной ценой, по которой можно выставить заявку между двумя клирингами. Эти данные можно увидеть в программе в окне Котировки (Вид - Котировки).
При подключении через брокера, как правило, используется одноименный тип заявки и брокер сам выполняет такие заявки. По каким-либо причинам, реализация может быть такой (например, при прямом подключении Plaza2):
Если на момент выставления заявки, котировки не известны, т.е. планок еще нет, например, это возможно до начала торгов (на классических биржах), когда еще не совершено на рынке ни одной сделки, программа выставит Лимитную заявку по цене равной Последняя известная цена в очереди заявок +-4%.
"+-" - зависит от направления. Купить по цене + 4%, Продать по цене -4%. Результатом редко, но может стать сообщение "Цена сделки вне лимита". Как только пойдет первая котировка, заявка выставится на пересчете.
Не касается рынка акций, где используется одноименный тип заявки самой биржи.
Для выставления заявки по рынку можно использовать блоки:
"Открытие позиции по рынку"
"Закрытие позиции по рынку"
"Изменить по рынку"
При использовании указанных выше блоков следует учесть, что в торговых настройках агента не должен использоваться флаг "По рынку с фикс.ценой", иначе любая заявка будет выставляться лимитной.
Более того, данный флаг используется для настроек Автооткрытия и Автозакрытия. Но у них, при этом есть свои собственные настройки, отключающие данный режим.("Блокировать настройку "по рынку с фикс ценой", для автооткрытия/автозакрытия"). Подробнее в статье Торговые настройки агента.
Под условной заявкой понимается несколько разнообразных "Видов" (как это называется у брокеров) заявок. Самое распространенное использование, это выставление стоп-лосс - заявка ограничивающая убыток позиции.
В качестве примера возьмем инструмент с шагом, равным 5.
цена лучшей покупки 100
цена лучшей продажи 110
Вы вошли в позицию Лонг (купили) по цене 105 и выставили стоп-лосс по цене 100 с проскальзыванием 2 шага.
Когда на рынке кто-либо произведет сделку по цене 100 (или очередь заявок будет ниже этой цены), сработает условие, которое выставит лимитную заявку Продать по цене 90.
Полное наименование транзакции в данном случае звучит так:
"Продать по цене = Цена Условия Минус Проскальзывание, если на рынке произошла сделка по цене Условия"
Точно такой же смысл несет в себе и заявка стоп-лосс для ограничения позиции Шорт, "Купить по цене = Цена Условия Плюс Проскальзывание, если на рынке произошла сделка по цене Условия (или очередь заявок выше цены условия)"
Как правило, брокеры рассчитывают все условные заявки на своей стороне. Исключение составляет подключение PlazaII и криптовалютные подключения. При этих подключениях программа ведет условные заявки на стороне клиента (на машине, внутри TSLab и отправляет лимитную заявку, когда условие сработало). Для некоторых криптовалютных подключений в настройках поставщика данных есть параметр "Усл.заявки средствами TSLab", который и определяет, кто следит за условной заявкой - программа или биржа. Если выключен, то биржа.
Например, "Проскальзывание = 0" означает: "Выставить лимитную заявку по цене Условия".
У брокеров такой вид может называться stoploss-limit.
Здесь нужно учесть, что в очереди заявок должна быть заявка с такой ценой, т.е. должен быть контрагент по этой цене, иначе заявка не исполнится и будет пропуск сигнала, программа выдаст сообщение "Агент Имя, требуется ручное вмешательство, пропущен сигнал входа/выхода из позиции номер".
Несколько слов о проскальзывании: Проскальзывание.
Проскальзывание это параметр условной заявки, отражающий отклонение от цены условия, в худшую для Вас сторону.
Если брокер видит, что заданного проскальзывания не хватает на выполнение данной операции, то он такую заявку отклоняет:
"Заявка номер может не исполнится, так как цена заявки такая-то, а на рынке цена такая-то"
Это предупреждение от программы, и в любой момент можем получить от брокера "Заявка номер Отклонена".
В лучшую (в Вашу сторону) проскальзывание не работает, и может быть исполнена даже по рынку, если цена уже убежала.
В массе брокеры это делают автоматически, такое исполнение является стандартным. В торговых настройках агнта есть параметр "Плохие заявки по рынку", по идее это касается брокера Финам и всех криптобирж, это именно включение такого режима, для тех, кто его не поддерживает. Тоесть вы говорите Купить по цене 100, а лучшая продажа в очереди заявок уже с ценой 90.
У некоторых брокеров существует параметр "Условные по рынку". Параметр доступен в программе в настройках поставщика данных. Если параметра нет, значит при данном подключении такой вид заявки не доступен.
Для выставления условной заявки, можно использовать следующие блоки:
"Открытие позиции, если больше". В торговых настройках агента должен быть ВЫключен флаг "Открытие лимитными заявками"
"Открытие позиции, если меньше". В торговых настройках агента должен быть ВЫключен флаг "Открытие лимитными заявками"
"Закрытие по стоп-лосс" с указанным проскальзыванием Проскальзывание
Закрытие по Тейк-профит" с указанным проскальзыванием Проскальзывание и без флага "Тейк-профит без проскальзывания" в торговых настройках управления агентами.
"Изменить по стоп-лосс"
"Изменить по тейк-профит"
Если торговля выполняется Агентами, то Дата действия условной заявки, в программе, автоматически выставляется на 2 дня, изменить параметр можно в торговых настройках агента.
Выставить срок действия заявки также можно в ручном режиме в окне Менеджер заявок (Торговля - Менеджер заявок). На каждом пересчете программа проверяет статус заявок. Если заявка не найдена, программа выставит новую заявку.
По умолчанию выставить одновременно две заявки на закрытие одной позиции нельзя. В программе это сделано намеренно и является защитой от двойного исполнения. Таким образом, если Вы выставляете две заявки с сигналами "Закрыть по стоп-лосс" и "Закрыть по тейк-профит" (с флагом "тейк-профит без проскальзывания"), программа выставит на пересчете только одну заявку, цена которой будет ближе к текущей цене на рынке. Но, в свойствах скрипта есть параметр "Множество сигналов выхода". Данный параметр позволяет отключить режим выставления только одной заявки на закрытие позиции. Работает и в лаборатории на истории и в при торговле.
При выключенном "Множество сигналов выхода" есть особенность очередности исполнения стопа и профита в самом редакторе (в лаборатории), если обе заявки попадают на один бар. В этом случае в лаборатории внутри одного бара исполняться будет тот сигнал, блок которого в редактор попал первым. Дополнительно по теме прочитайте статью Показывать номер блока.
У брокеров условные заявки могут называться:
stoploss - обычная условная заявка. Цена условия +- проскальзывание = Цене лимитной заявки.
stoploss-limit (не смотря на название, необходимо наличие контрагента, поэтому все же правильнее отнести к условным заявкам, а не лимитным) - условная заявка с Ценой условия = Цене лимитной заявки. То есть условная заявка с проскальзыванием 0.
stoploss-market - условная заявка при которой меняется тип заявки на заявку по рынку. По факту равноценна Условной заявке +- большое проскальзывание. Доступна у некоторых поставщиков.
takeprofit - изначально Закрытие позиции по тейк-профит это условная заявка, то есть только при достижении цены условия выставляется лимитная заявка с ценой ЦенаУсловия +- Проскальзывание.
Особый режим условных заявок. Дополнительно прочитайте статью Связанные заявки С некоторой особенностью работает в поставщике данных Transaq, без дополнительных тестов малым лотом не рекомендуется использовать настройку в этом поставщике. Связанная заявка - это способ выставления двух условных заявок одновременно на Закрытие одной позиции. Связанной заявкой становятся две заявки на закрытие одной позиции, когда одна из заявок "Закрытие позиции по тейк-профит" без установленной настройки "Тейк-профит без проскальзывания" в торговых настройках агента и одна заявка "Закрытие позиции по стоп-лосс".
В случае если опция выключена или недоступна (если брокер не поддерживает данный тип, например Алор) будет выставляться та заявка, цена которой ближе к текущей цене инструмента.
Опция Связанных заявок включается автоматически на следующих поставщиках данных:
При прямом подключении (Плаза2)
При работе на серверах через Quik (QuikLua и QuikDDE)
Криптовалютные биржи
ITinvest - SmartCOM
В некоторых случаях, по-мимо использования условных заявок, требуется включить настройку поддержки связанных заявок, в поставщике данных, справедливо для Transaq(Финам). В программе Данные - Подключения - Выделить поставщика данных - Настройки.
Важная особенность исполнения Связанных заявок
Название выхода из позиции в таблице сделок агента, при использовании данного типа заявки может не совпадать с лабораторией. Не рекомендуется использовать Имена выхода из позиции в редакторе, при создании скриптов, если используются связанные заявки.
В лаборатории, на истории, выход из позиции будет показан относительно того блока, который был добавлен редактор лаборатории первым, так как невозможно сказать, что сработало первым внутри бара (если были задеты обе цены от двух заявок на одном баре). При реальной торговле может браться любой комментарий или стопа или тейка, после исполнения заявки.
Чтобы отключить режим, достаточно поставить "Тейк-профит без проскальзывания" или выключить настройку в поставщике данных (для Transaq). Брокер воспринимает такую заявку как одну с двумя ценами. (За исключением, тех случаев, когда программа ведет связанную заявку самостоятельно и посылает только конечную лимитную заявку брокеру или на биржу) Если одно из условий цены срабатывает, происходят сделки, второе условие связанной заявки опускается и связанная заявка считается исполненной.