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.

Нужна дополнительная помощь?