Перейти к содержанию

FAQ

Для чего используется параметр order_id метода PostOrder?

Сейчас у нас есть два параметра с одинаковым названием:

  • order_id как входной параметр — ключ идемпотентности в формате UID. Срок хранения ключа идемпотентности — один год.
  • order_id как выходной параметр — биржевой идентификатор заявки, который в дальнейшем используется для отслеживания статуса заявки.

Если вы используете параметр как ключ идемпотентности, многократный вызов метода PostOrder с одинаковым order_id не приведёт к выставлению более одного торгового поручения.

При вызове метода проверяется уникальность связки order_id и account_id:

  • Если указанная пара не найдена, создаётся новое торговое поручение.
  • Если связка уже есть (поручение с этим order_id по данному номеру счёта было выставлено раньше) — метод PostOrder вернёт статус уже выставленного торгового поручения, то есть отработает согласно логике метода GetOrderState.

Можно ли увидеть ключ идемпотентности (order_id) в операциях, выставленных поручениях и т.п.?

Сейчас order_id используется только как ключ идемпотентности и не прокидывается в другие сущности системы. В будущем мы планируем добавить отображение переданного ключа в операциях.

Сколько хранится ключ идемпотентности (order_id) на стороне брокера?

Ключ хранится один месяц, но пока мы не может дать гарантию его сохранности. Сейчас подразумевается полная уникальность переданного order_id в разрезе номера счёта — account_id.

Что передавать в параметре quantity метода PostOrder? Количество бумаг или количество лотов?

Требуемое количество лотов.

У многих инструментов лотность не равна единице — учитывайте это при выставлении торговых поручений.

Как рассчитать полную стоимость сделки?

Полная стоимость сделки включает в себя не только сумму операции покупки или продажи биржевого инструмента, но и комиссии брокера, сервисные комиссии, гарантийное обеспечение для операций с фьючерсами и другие параметры.

Рассчитать размеры комиссий можно из описания вашего тарифа. Учитывайте, что комиссии берутся за сделки, а не за поручение — то есть одно торговое поручение может рождать несколько сделок. Процент комиссии фиксированный в зависимости от тарифа.

Размер начальной и фактической комиссии можно узнать в деталях торгового поручения через метод GetOrderState.

Подробнее про расчёт стоимости сделок с фьючерсами и облигациями

Можно ли получить список уже исполненных торговых поручений?

Пока нет. Сейчас метод GetOrders возвращает только список активных торговых поручений — то есть поручений, которые ещё не исполнены и не отменены.

Какие есть статусы торговых поручений и что они означают?

Описание статусной модели торговых поручений

Алгоритм и особенности исполнения торговых поручений

Почему лимитная заявка исполнилась по другой цене?

Лимитное торговое поручение исполняется либо цене, указанной при её выставлении, либо по «лучшей цене» для определённого направления сделки. На бирже этот механизм называется Best Execution и подразумевает исполнение торгового поручения по цене, которая выгоднее указанной в поручении.

Как перевести цену поручения в тип Quotation?

Подробнее о конвертации

Как изменить выставленную заявку?

Чтобы изменять уже выставленные поручения, используйте метод replaceOrder. Через него можно отменить существующую выставленную заявку и выставить новую с изменёнными параметрами.

Можно ли выставлять поручения по счёту Инвесткопилки?

Нет. Если попытаться выставить поручение по счёту Инвесткопилки через метод PostOrder, в ответе вернётся ошибка с кодом 40004 и сообщением Working with orders is not available with this account.

Нужно ли включать маржинальную торговлю для торгов на срочном рынке?

Да. Для выставления поручений на срочном рынке нужно включить маржинальную торговлю в приложении и терминале — иначе вернётся ошибка 30051 из cписка кодов ошибок.

Чем отличается рыночная заявка от лимитной?

Рыночная заявка Лимитная заявка
Заявка на покупку или продажу активов по цене, которая есть на бирже в данный момент. Указание брокеру, какую бумагу или валюту, сколько лотов и по какой цене вы хотите купить или продать.
Если сейчас на бирже по текущей цене торгуется меньше лотов, чем вы указали, но при этом есть другие лоты по цене, которая отличается в негативную для вас сторону — брокер купит имеющееся количество лотов по текущей цене, а оставшуюся часть заявки будет покупать по следующей по списку цене. Для сделок покупки лимитную заявку исполнят по цене равной или дешевле той, которую вы указали. Для сделок продажи лимитную заявку исполнят по цене равной или выше той, которую вы указали.
Используйте, только когда вам срочно нужно купить или продать актив по любой цене и вы готовы к тому, что она может оказаться для вас невыгодной. Используйте, чтобы не тратить время на постоянное отслеживание котировок на бирже и выполнить заявку по выгодной цене.

Помимо рыночных и лимитных заявок, в Tinkoff Invest API можно выставлять заявки типа «Лучшая цена».

Чем отличаются методы GetOrders и GetOrderState?

GetOrders GetOrderState
Предполагает получение массива активных заявок. Предполагает получение статуса конкретной заявок по order_id.
Возвращает только список активных торговых поручений, то есть поручений, которые ещё не исполнены и не отменены. Возвращает торговое поручение конкретного инструмента в любом статусе, в том числе после исполнения.
Максимальный срок получения частично исполненной заявки через метод — до конца торгового дня, когда все неисполненные заявки отменяются и требуют повторного выставления. Метод не предусмотрен для получения глубокой истории и может не возвращать информацию по поручениям, которым больше одного дня.

Существуют ли ограничения на стоимость заявки?

Да, на данный момент такие ограничения есть. Сейчас в Tinkoff Invest API нельзя выставить заявку со стоимостью выше установленных значений для каждой из валют — её будет нужно подтверждать по СМС. Поэтому разбивайте такие заявки на заявки меньшего размера.

Если вы превысите лимит, вернётся ошибка 90003. Все коды ошибок.

Лимиты на стоимость заявки для разных валют

Валюта Полное название валюты Лимит
RUB Рубль 30 000 000
USD Доллар США 500 000
EUR Евро 500 000
GBP Фунт стерлингов 5 000
CHF Швейцарский франк 5 000
CNY Юань 50 000
JPY Иена 500 000
HKD Гонконгский доллар 50 000
TRY Турецкая лира 50 000
KZT Казахстанский тенге 500 000
BYN Белорусский рубль 50 000
AMD Армянский драм 500 000
UZS Узбекский сум 5 000 000
KGS Киргизский сом 50 000
TJS Таджикский сомони 50 000
XAU Золото 50 000
XAG Серебро 50 000