Kraken WebSocket API – Часті запитання

Останнє оновлення: 31 бер. 2025 р.

Чи є у Kraken WebSocket API? Як до нього підключитися?

Kraken має як REST API, так і WebSocket API. Наш WebSocket API доступний за такими захищеними URL-адресами:

Загальнодоступні (неавтентифіковані) канали ринкових даних: wss://ws.kraken.com/

Приватні (автентифіковані) канали даних облікового запису та торгові кінцеві точки: wss://ws-auth.kraken.com/

Автентифікація не потрібна для підключення до загальнодоступних каналів ринкових даних, але для приватних каналів потрібен дійсний токен автентифікації.

Усі повідомлення, що надсилаються та отримуються через WebSocket API, є звичайним текстом, закодованим у форматі JSON. Деталі кожного типу повідомлень надаються в нашій документації WebSocket API.

Чи є у вас доступні бібліотеки WebSocket?

У нас є різноманітний приклад коду WebSocket API, який можна використовувати безпосередньо або як відправну точку для власної реалізації:

  • клієнт командного рядка WebSocket API (на Python),

  • набір тестів WebSocket API (на JavaScript),

  • приклади використання нашого рекомендованого модуля Python WebSocket (websocket-client),

  • та бібліотека WebSocket API (Github).

Наш WebSocket API може бути реалізований будь-якою мовою програмування, яку ви віддаєте перевагу, і наша команда підтримки API буде рада допомогти вам або надати приклад коду додатковими мовами, якщо це необхідно.

Які канали/кінцеві точки підтримуються?

Наш WebSocket API надає різноманітні канали ринкових даних у реальному часі, канали даних облікового запису та торгові кінцеві точки. Повний список доступних каналів/кінцевих точок, а також деталі реалізації для кожного каналу/кінцевої точки можна знайти в нашій документації WebSocket API.

Як дізнатися, що я успішно підключився? Як дізнатися, що я все ще підключений?

При підписці на канал повідомлення {u'event': u'heartbeat'} буде надходити з частотою 1 серцебиття на секунду.

Серцебиття не надходитимуть, якщо замість них надходять інші повідомлення (ринкові дані, дані облікового запису тощо). Коли і чому надходять ринкові дані або дані облікового запису, залежить від каналу, на який ви підписані.

Якщо ви підписуєтеся на канал валютної пари з низьким обсягом торгів, ви можете отримувати серцебиття лише протягом тривалих періодів.

Якщо ви відпишетеся від каналу, ви більше не отримуватимете серцебиття або торгові дані, і після того, як ви не будете підписані на жоден канал протягом 1 хвилини, ви будете відключені від каналу WebSockets.

Коли і чому WebSocket надсилає оновлені дані?

Коли і чому надходять ринкові дані або дані облікового запису, залежить від каналу, на який ви підписані. Наприклад:

Тікер: Коли відбувається угода або партія угод для валютної пари, публікується повідомлення тікера для цієї пари. Ви отримаєте це повідомлення лише, якщо ви підписані на канал тікера для цієї пари.

Угода: Аналогічно, коли відбувається угода або партія угод для валютної пари, також публікується повідомлення про угоду для цієї пари. Ви отримаєте це повідомлення лише, якщо ви підписані на канал угод для цієї пари.

OHLC: Оновлений інтервал OHLC публікується для кожного інтервалу, коли виконується угода або партія угод для валютної пари. Ви отримуватимете оновлення лише для тих інтервалів, на які ви підписані. Після перетину межі інтервалу повідомлення не надсилається до наступної угоди.

Книга: Початковий знімок книги ордерів з обраною глибиною публікується при першій підписці на канал книги.

Коли нові ордери додаються до книги ордерів або виконуються угоди, які впливають на глибину книги ордерів, на яку ви підписані, публікується повідомлення, що містить оновлення книги ордерів для будь-яких зачеплених цінових рівнів та обсягів. Ці оновлення можуть містити лише пропозиції на купівлю, лише пропозиції на продаж або обидва. Дивіться розділ «Як створити книгу ордерів» нижче для отримання детальної інформації.

Спред: Коли розміщується новий найвищий ордер на купівлю або найнижчий ордер на продаж, або виконується угода, яка змінює найкращу ціну купівлі або продажу, публікується повідомлення про спред з оновленими цінами купівлі та продажу.

Чи надають канали WebSocket історичні дані чи лише поточні дані?

Канали ринкових даних WebSocket надають лише поточні дані, однак можна одночасно підключитися до WebSocket API для поточних даних та REST API для історичних даних.

Використання параметра reqid.

Запити на підписку можуть включати наданий клієнтом параметр reqid, який згодом може бути використаний для зіставлення бажаного запиту на підписку WebSocket з ідентифікатором каналу для цієї підписки.

Зауважте, що якщо ви робите кілька підписок WebSocket одночасно, їм усім буде присвоєно одне й те саме значення reqid. Щоб призначити інше значення reqid, кожен канал має бути підписаний окремо.

Я хочу більше деталей, де я можу їх знайти?

Повна специфікація WebSocket API доступна в документації WebSocket API.

Відмінності між символами валютних пар у REST та WebSocket API.

WebSocket API приймає символи валютних пар лише у форматі ISO 4217-A3, наприклад XBT/USD.

Кінцева точка REST API AssetPairs може бути використана для перетворення символів між версіями REST API (такими як XBTUSD або XXBTZUSD) та версією WebSocket API (такими як XBT/USD).

https://api.kraken.com/0/public/AssetPairs

Поле wsname надає символ WebSocket API.

Як створити книгу ордерів

Канал книги WebSocket API є найскладнішим з усіх каналів WebSocket, але якщо повідомлення каналу книги інтерпретуються правильно, можна підтримувати локальну копію книги ордерів лише кількома рядками коду.

Наші сторінки підтримки WebSocket API надають детальні інструкції щодо інтерпретації повідомлень каналу книги, а також приклад транскрипції каналу книги та приклад коду (на Python) для підтримки дійсної локальної копії книги ордерів.

Які обмеження на підключення до WebSocket API?

WebSocket API обмежує максимальну кількість одночасних підключень для захисту від зловживань (наприклад, DDoS-атак). Якщо ваш клієнт WebSocket здійснює занадто багато підключень одночасно, буде отримано таке повідомлення про помилку:

{“error”: {“message”: “You have reached maximum capacity for WebSocket connections. Please reach out to Kraken support team for any questions.“, “hint”: “Your code may be reconnecting too often or when it has no need to.“, “name”: “WebSocket connection rate error”}}

WebSocket API дозволяє кілька підписок на канали через одне з’єднання WebSocket (наприклад, підписка на всі доступні ринкові дані для валютної пари XBT/USD через одне з’єднання), тому можна передавати всі доступні ринкові дані для всіх валютних пар, не досягаючи обмежень на підключення WebSocket.

Які обмеження швидкості WebSocket API?

Ті самі обмеження швидкості торгівлі застосовуються до всіх інтерфейсів введення ордерів (вебсайт, Kraken Terminal, REST та WebSocket API) і детально пояснюються на нашій сторінці підтримки обмежень швидкості.

Обмеження швидкості повідомлень одного з’єднання WebSocket API буде змінюватися залежно від навантаження на систему. Клієнти WebSocket API отримають повідомлення про помилку {"Error": "Exceeded msg rate"}, коли буде перевищено обмеження швидкості повідомлень.

Торгівля (розміщення/скасування ордерів) через WebSocket API.

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

Торгові кінцеві точки WebSocket доступні через те саме приватне з’єднання WebSocket (wss://ws-auth.kraken.com/), що й приватні канали управління обліковим записом (openOrders та ownTrades).

Повна інформація щодо торгових кінцевих точок доступна в документації WebSocket API, а наші сторінки підтримки WebSocket API надають додаткову інформацію та приклади використання торгових кінцевих точок у вашому власному коді.

Чому я отримую помилку 403 при підключенні до WebSocket API?

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

Cloudflare вимагає використання Server Name Indication (SNI) для всіх TLS-з’єднань, інакше з’єднання WebSocket не вдасться, і замість цього буде повернуто помилку HTTP 403 Forbidden. Сторінки підтримки Cloudflare надають додаткову інформацію щодо їхньої вимоги TLS SNI.

Наша офіційна бібліотека Python WebSocket API була оновлена для підтримки TLS SNI, але деякі сторонні бібліотеки WebSocket API все ще можуть бути зачеплені. Будь ласка, зверніться до нашої команди підтримки API, якщо вам потрібна допомога в оновленні вашого коду WebSocket API для підтримки TLS SNI.

Допомога з WebSocket API.

Будь ласка, зверніться до нашої команди підтримки API, якщо вам потрібна допомога в реалізації вашого клієнта WebSocket API.

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