WebSocket API v1 — розміщення та скасування ордерів

Останнє оновлення: 1 квіт. 2025 р.

Наш WebSocket API v1 підтримує торгівлю через ендпоінти addOrder та cancelOrder. Ендпоінт addOrder використовується для розміщення нових ордерів, а ендпоінт cancelOrder — для скасування існуючих (відкритих) ордерів.

Обидва ендпоінти addOrder та cancelOrder є приватними, що означає, що доступ до них можна отримати лише через автентифіковане з'єднання WebSocket.

Початкове з'єднання має бути встановлене з автентифікованим URL-адресою WebSocket wss://ws-auth.kraken.com/ , яку потім можна тримати відкритою необмежений час, поки розміщуються та скасовуються ордери. Одне з'єднання WebSocket розраховане на підтримку декількох запитів, тому немає необхідності (або не рекомендується) підключатися/відключатися для кожного виклику торгових ендпоінтів.

WebSocket автентифікація

Токен автентифікації WebSocket можна отримати через ендпоінт REST API GetWebSocketsToken.

Після того, як токен буде отримано, можна встановити з'єднання з приватним URL-адресою WebSocket wss://ws-auth.kraken.com/ і тоді ендпоінти addOrder та cancelOrder можна буде використовувати необмежений час (термін дії токена не закінчиться, поки він використовується для розміщення та скасування ордерів).

Зверніть увагу, що API-ключ, який використовується для отримання токена, повинен мати дозволи Modify Orders та Cancel/Close Orders, інакше від WebSocket API буде отримано помилку про відмову в доступі.

Розміщення ордера

Після встановлення автентифікованого з'єднання WebSocket можна розмістити ордер, надіславши повідомлення, подібне до наступного:

  • {"event":"addOrder", "token":"nT9n23/7oLdq+bNHNMNJ4VvF1hiHhjTnPOaCMiB1GJ0", "pair":"XBT/USD", "type":"buy", "ordertype":"limit", "price":"9857", "volume":"0.002", "leverage":"5", "userref":"8874657"}

Потім буде отримана відповідь із зазначенням статусу запиту (чи був ордер прийнятий чи відхилений). Для ордера, який був прийнятий і успішно розміщений, відповідь міститиме статус ok і буде схожою на наступну:

  • {"descr":"buy 0.00200000 XBTUSD @ limit 9857.0 with 5:1 leverage","event":"addOrderStatus","status":"ok","txid":"OPOUJF-BWKCL-FG5DQL"}

Для ордера, який був відхилений і не розміщений, відповідь міститиме статус error разом із повідомленням про помилку із зазначенням причини відхилення (недійсні аргументи, недостатньо коштів тощо), наприклад, наступне відхилення для ордера, розмір якого не відповідав мінімальному:

  • {"errorMessage":"EOrder:Order minimum not met","event":"addOrderStatus","status":"error"}

Скасування ордера

Після встановлення автентифікованого з'єднання WebSocket (або, бажано, повторного використання існуючого з'єднання), ордер можна скасувати, надіславши повідомлення, подібне до наступного:

  • {"event":"cancelOrder", "token":"s74Ajl83it0dNNKcF072NJ5wDmLTGIceaCbV96eWbFg", "txid":["OJZ3DI-IU6QC-ME7TVE"]}

Потім буде отримана відповідь із зазначенням статусу запиту (чи було скасування прийнято чи відхилено). Для ордера, який був успішно скасований, відповідь міститиме статус ok і буде схожою на наступну:

  • {"event":"cancelOrderStatus","status":"ok"}

Для запиту на скасування, який був відхилений, відповідь міститиме статус error разом із повідомленням про помилку із зазначенням причини відхилення (недійсний ID ордера тощо), наприклад, наступне відхилення для запиту на скасування ордера, який уже був скасований:

  • {"errorMessage":"EOrder:Unknown order","event":"cancelOrderStatus","status":"error"}

Зверніть увагу, що на відміну від кінцевої точки REST API CancelOrder, у одному повідомленні про скасування через WebSocket можна вказати кілька ідентифікаторів ордерів. Ідентифікатори ордерів, які потрібно скасувати, мають бути включені як окремі записи в масив txid наступним чином:

  • {"event":"cancelOrder", "token":"c4JjTNHSurKmWDsnrGaCxIuCOa4FurCZK2ppktvT2Yo", "txid":["OLVCRZ-DNKJI-VRTZKY","O67X6E-PBGSR-GU23R5","OECCDC-T2R4V-52CR7T"]}

Потрібна додаткова допомога?