Перейти к основному содержимому

Размещение ордеров

Отправляйте ордера на рынки типа orderbook с помощью эндпоинта POST /api/v1/market/orders. Это основной способ торговли, когда рынок использует пиринговое сопоставление ордеров.

Эндпоинт​

POST /api/v1/market/orders
Authorization: Bearer <token>
Content-Type: application/json

Тело запроса​

ПолеТипОбязательноОписание
market_idintegerДаРынок для торговли.
typestringДа"buy" или "sell".
kindstringДа"limit" или "market".
token_typestringДа"YES" или "NO".
priceintegerТолько для limitЦена в копейках, диапазон 0–10000 (0–100%). Обязательна для лимитных ордеров, игнорируется для рыночных.
amountintegerДаДля ордеров покупки: бюджет в копейках (сколько хотите потратить). Для ордеров продажи: количество акций в копейках (сколько акций продать).
use_bonusbooleanНетЕсли true, списывается с бонусного баланса пользователя. По умолчанию false.

Ключевые правила​

  • Диапазон цен: Должен быть между 0 и 10000 (включительно). Цена 5000 означает 50%.
  • Сумма покупки = бюджет: При покупке amount — это общая сумма, которую вы готовы потратить (в копейках). Количество полученных акций зависит от цены исполнения.
  • Сумма продажи = акции: При продаже amount — это количество акций-копеек, которые вы хотите продать.
  • Лимитные ордера требуют цену: Поле price обязательно для лимитных ордеров и определяет максимальную цену (для покупок) или минимальную цену (для продаж).
  • Рыночные ордера без цены: Рыночные ордера исполняются немедленно по лучшей доступной цене в книге ордеров.

Пример: Размещение лимитного ордера на покупку​

Купить токены YES на рынке по максимальной цене 6500 (65%), потратив до 100000 копеек (1000 единиц валюты):

curl -X POST https://yoyo.market/api/v1/market/orders \
-H "Authorization: Bearer eyJhbG..." \
-H "Content-Type: application/json" \
-d '{
"market_id": 100,
"type": "buy",
"kind": "limit",
"token_type": "YES",
"price": 6500,
"amount": 100000
}'

Пример: Размещение рыночного ордера на продажу​

Продать 5000 акций-копеек токенов NO по текущему лучшему bid:

curl -X POST https://yoyo.market/api/v1/market/orders \
-H "Authorization: Bearer eyJhbG..." \
-H "Content-Type: application/json" \
-d '{
"market_id": 100,
"type": "sell",
"kind": "market",
"token_type": "NO",
"amount": 5000
}'

Ответ​

Успешный ответ возвращает объект созданного ордера с его id, текущим status и временными метками. Ордер начинает сопоставление немедленно, если это рыночный ордер, или попадает в книгу ордеров, если это лимитный ордер.

Отмена ордера​

Для отмены ожидающего или частично исполненного лимитного ордера:

DELETE /api/v1/market/orders/{order_id}
Authorization: Bearer <token>

Только ордера со статусом pending или partial могут быть отменены. Неисполненная часть возвращается на ваш баланс.

Случаи ошибок​

СценарийОписание
Недостаточный балансВаш баланс (или бонусный баланс при use_bonus true) не покрывает сумму ордера.
Недействительный рынокmarket_id не существует или рынок не активен.
Недопустимый диапазон ценЦена вне диапазона 0–10000 для лимитного ордера.
Отсутствует цена для limitЛимитный ордер отправлен без поля price.
Рынок закрытРынок больше не принимает ордера (событие разрешено или приостановлено).

См. также​