Алгоритм и особенности исполнения торговых поручений
Выставить торговое поручение
Лимитное
Чтобы не тратить время на постоянное отслеживание котировок на бирже, вы можете выставить лимитную заявку — это указание брокеру, какую бумагу или валюту, сколько лотов и по какой цене вы хотите купить или продать.
Биржа ограничивает цену, которую можно указать в лимитной заявке, крайними предложениями в биржевом
стакане — параметры limit_up
и limit_down
.
Важно
ИногдаlimitDown
может быть большеlimitUp
. Это нормально, потому чтоlimitUp
ограничивает покупку, аlimitDown
— продажу.
Выставить лимитное торговое поручение (заявку) можно через unary-метод postOrder.
Подробнее о лимитном торговом поручении
Рыночное
Это заявка на покупку или продажу активов по цене, которая есть на бирже в данный момент.
У заявки есть важная особенность — при её исполнении может оказаться, что в данный момент на бирже по текущей цене торгуется меньше лотов, чем вы указали, при этом другие лоты есть, но их цена отличается в негативную для вас сторону.
В этом случае брокер купит имеющееся количество лотов по текущей цене, а оставшуюся часть заявки будет покупать по следующей по списку цене. Если на бирже низкая ликвидность — например, торги рано утром или до открытия американской биржи, — оставшаяся часть заявки может быть исполнена по невыгодной для вас цене. Проверить текущую ликвидность можно в биржевом стакане.
Выставить рыночное торговое поручение можно через unary-метод postOrder.
Подробнее о рыночном торговом поручении
«Лучшая цена» (Best price)
Это заявка на покупку или продажу активов по цене, которая есть на бирже в данный момент, но с защитным механизмом.
Цена на бирже меняется ежесекундно, и брокер дополнительно блокирует на вашем счёте примерно 0.3% от суммы заявки, чтобы не отменять сделку при каждом таком изменении. Если цена актива изменится больше, чем на 0.3% в худшую для вас сторону, сделка автоматически отменится, а заблокированная сумма вернётся обратно на брокерский счёт.
Заявка «Лучшая цена» — это лимитная заявка, цена которой на 0.3% выше, чем цена Last Price. Но она исполняется сразу и не добавляется в стакан, как обычная лимитная заявка.
Выставить торговое поручение по «Лучшей цене» можно через unary-метод postOrder.
Особенности исполнения заявок на Санкт-Петербургской бирже
Все операции с иностранными ценными бумагами в Т-Инвестициях проводятся на Санкт-Петербургской бирже, которая имеет ряд особенностей исполнения заявок.
У биржи есть два пула ликвидности — США и собственный. Пул США подключается в 14:30 мск по летнему американскому времени. Ранее выставленные заявки остаются на СПБ.
В момент выставления торгового поручения механизм best execution проверяет, в каком пуле условия лучше, и выставляет заявку туда. После выставления заявка уже не переносится между пулами, поэтому может быть ситуация, когда пул, в котором выставлена заявка, не достиг лимитной цены, а в другом пуле нужная цена достигалась.
Вся биржевая информация (свечи, стаканы) транслируется, агрегируя информацию со всех пулов ликвидности. Поэтому может быть такое, что выставленное торговое поручение не исполняется, хотя в стакане есть подходящие цены или предложения. В таком случае мы рекомендуем отменить и выставить заявки заново, чтобы механизм выбора пула ликвидности разместил заявку в более подходящем пуле.
Неисполненные заявки могут сниматься в разное время по описанным выше причинам. Время жизни заявки в каждом пуле ликвидности соответствует времени работы соответствующей сессии пула.
Определить доступность выставления
Чтобы успешно разместить заявки на бирже, убедитесь, что:
- Счёт доступен для совершения операции.
-
У вас достаточно активов для совершения операции или есть необходимое количество активов для совершения маржинальной сделки.
Чтобы посмотреть текущее состояния портфеля, используйте метод getPositions. Для получения маржинальных показателей счёта — метод getMarginAttributes.
-
Инструмент доступен для торгов.
Большая часть инструментов доступна для торговли в течение всего времени работы торговой площадки, но торги по определённым бумагам могут прерывать и останавливаться.
Чтобы посмотреть расписания торгов, используйте метод getTradingSchedules.
Для получения актуального статуса торговли по инструменту используйте методы сервиса инструментов или стрим информации по инструменту.