WebSocket API v1 – Як підтримувати дійсну книгу замовлень

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

Стрічка книги замовлень WebSocket API v1 надає всі ринкові дані, необхідні для підтримки локальної копії книги замовлень Kraken.

Наприклад, стрічку книги замовлень для XBT/USD можна використовувати для отримання та підтримки книги замовлень для нашої валютної пари Bitcoin/долар США, точно так, як книга замовлень відображається на нашій торговій платформі.

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

Повні відомості про формат JSON для стрічки книги замовлень доступні в нашій документації WebSocket API v1.

Знімок книги замовлень

Після підписки на стрічку книги замовлень перше повідомлення з ринковими даними буде знімком поточної книги замовлень.

Знімок книги замовлень включає всю книгу замовлень до запитуваної (підписаної) глибини, наприклад, наступний приклад книги замовлень XBT/USD до глибини 10:

[0,{"as":[["5290.80000","1.00000000","1556724667.748660"],["5290.90000","4.49956524","1556724664.331028"],["5291.70000","1.00000000","1556724653.480504"],["5292.00000","0.95388940","1556724619.682690"],["5292.20000","1.51300000","1556724494.497326"],["5293.10000","0.69800000","1556724667.635414"],["5293.20000","2.00000000","1556724656.022756"],["5293.90000","2.83200000","1556724668.057687"],["5294.10000","0.99600000","1556724666.340462"],["5294.50000","5.00000000","1556724661.980996"]],"bs":[["5290.10000","1.43195600","1556724666.594179"],["5289.80000","2.00000000","1556724663.082526"],["5289.40000","0.49400000","1556724665.274827"],["5289.20000","0.89533312","1556724640.520134"],["5287.40000","3.23600000","1556724660.997516"],["5287.30000","3.33000000","1556724659.999108"],["5287.00000","10.20000000","1556724635.850932"],["5286.00000","3.86378703","1556724662.757360"],["5285.70000","6.40000000","1556724488.785281"],["5283.90000","0.50000000","1556723616.006805"]]},"book-10","XBT/USD"]

Знімок включає поточні найкращі ціни купівлі/продажу, з їх доступними обсягами, а також дату/час останнього оновлення рівня ціни (як UNIX-мітка часу в секундах до 6 знаків після коми).

Зміни рівня цін

Після початкового знімка рівні цін книги замовлень змінюються в реальному часі за допомогою повідомлень про оновлення, вставлення та видалення.

Повідомлення про оновлення

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

[0,{"a":[["5293.10000","0.39800000","1556724673.104421"]], "c":"408163318"},"book-10","XBT/USD"]

Хоча ціна залишається незмінною (5293.1), доступний обсяг за цією ціною змінюється з 0.69800000 (як було надано початковим знімком) на 0.39800000, а нова мітка часу для рівня ціни відображає дату/час, коли відбулася зміна.

Повідомлення про оновлення змінюють лише ті рівні цін, які вже існують у книзі замовлень; вони не додають і не видаляють рівні цін до/з книги замовлень.

Повідомлення про вставлення

Повідомлення про вставлення додає новий рівень ціни до книги замовлень, наприклад, наступне вставлення для рівня ціни 5294.4 на стороні пропозиції книги замовлень:

[0,{"a":[["5294.40000","0.99600000","1556724672.663220"]], "c":"393966308"},"book-10","XBT/USD"]

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

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

Наприклад, з початкового знімка вище, повідомлення про вставлення:

[0,{"a":[["5294.40000","0.99600000","1556724672.663220"]], "c":"393966308"},"book-10","XBT/USD"]

Додало б рівень ціни 5294.4 до книги замовлень на рівні 10 (найвища ціна пропозиції) і перемістило б рівень ціни 5294.5 за межі книги замовлень (фактично перемістивши 5294.5 на рівень 11).

Повідомлення про видалення

Повідомлення про видалення видаляє рівень ціни з книги замовлень, наприклад, наступне часткове повідомлення про видалення для рівня ціни 5294.1 на стороні пропозиції книги замовлень:

[0,{"a":[["5294.10000","0.00000000","1556724670.010241"]] ... },"book-10","XBT/USD"]

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

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

Зауважте, що за видаленням завжди негайно слідує вставлення, яке вводить новий рівень ціни в межі на найвіддаленішому рівні (наприклад, рівень 10 для підписаної глибини 10).

Наприклад, з початкового знімка вище, повідомлення про видалення/вставлення:

[0,{"a":[["5294.10000","0.00000000","1556724670.010241"],["5294.70000","3.34000000","1556724653.951982","r"]], "c":"3679121060"},"book-10","XBT/USD"]

Це видалило б рівень ціни 5294.1 з рівня 9 книги замовлень, перемістило б рівень ціни 5294.5 з рівня 10 на рівень 9 і негайно додало б новий рівень ціни 5294.7 на рівень 10 книги замовлень (найвіддаленіший рівень і найвища ціна пропозиції для глибини 10).

Додаткові ресурси

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

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

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