Kraken WebSocket API - 常見問題

上次更新時間: 2025年3月31日

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 文件

我如何知道我已成功連接?我如何知道我仍然連接?

當訂閱數據源時,將以每秒 1 次心跳的頻率收到一條 {u'event': u'heartbeat'} 訊息。

如果收到其他訊息(市場數據、帳戶數據等),則不會收到心跳。何時以及為何收到市場或帳戶數據取決於您訂閱的數據源。

如果您訂閱交易量較低的貨幣對數據源,您可能長時間只會收到心跳。

如果您取消訂閱數據源,您將不再收到心跳或交易數據,並且在未訂閱任何數據源 1 分鐘後,您將從 WebSocket 數據源斷開連接。

WebSocket 何時以及為何傳送更新數據?

何時以及為何收到市場數據或帳戶數據,取決於您訂閱的數據源。例如:

Ticker:當貨幣對有交易或一批交易時,會發布該貨幣對的 ticker 訊息。您只有在訂閱該貨幣對的 ticker 數據源時才會收到此訊息。

Trade:同樣,當貨幣對有交易或一批交易時,也會發布該貨幣對的 trade 訊息。您只有在訂閱該貨幣對的 trade 數據源時才會收到此訊息。

OHLC:當貨幣對的交易或一批交易執行時,每個時間間隔都會發布更新的 OHLC 時間間隔。您只會收到您訂閱的時間間隔的更新。跨越時間間隔邊界後,在下一次交易發生之前不會傳送訊息。

Book:當首次訂閱 book 數據源時,會發布所選深度的訂單簿初始快照。

當新的訂單添加到訂單簿或執行影響您訂閱的訂單簿深度的交易時,會發布一條訊息,其中包含任何受影響價格水平和數量的訂單簿更新。這些更新可能只包含買盤、只包含賣盤,或同時包含買盤和賣盤。有關詳細資訊,請參閱下方的「如何建立訂單簿」。

Spread:當新的最高買價或最低賣價訂單被下達,或執行改變最佳買價或最佳賣價的交易時,會發布一條包含更新買價和賣價的 spread 訊息。

WebSocket 數據源提供歷史數據還是僅提供當前數據?

WebSocket 市場數據源僅提供當前數據,但可以同時連接 WebSocket API 以獲取當前數據和 REST API 以獲取歷史數據。

reqid 參數的使用。

訂閱請求可以包含客戶端提供的 reqid 參數,該參數隨後可用於將所需的 WebSocket 訂閱請求與該訂閱的通道 ID 進行匹配。

請注意,如果您同時進行多個 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 book 數據源是所有 WebSocket 數據源中最複雜的,但只要正確解釋 book 數據源訊息,就可以用幾行程式碼維護本地訂單簿副本。

我們的 WebSocket API 支援頁面提供解釋 book 數據源訊息的詳細說明,以及範例 book 數據源記錄,以及維護有效本地訂單簿副本的範例程式碼(以 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 交易端點可透過與私人帳戶管理數據源(openOrders 和 ownTrades)相同的私人 WebSocket 連接 (wss://ws-auth.kraken.com/) 取得。

有關交易端點的完整詳細資訊可在 WebSocket API 文件中找到,我們的 WebSocket API 支援頁面提供有關在您自己的程式碼中使用交易端點的更多資訊和範例。

為什麼連接到 WebSocket API 時會收到 403 錯誤?

WebSocket API 連接透過 Cloudflare 進行中介,因此 Cloudflare 實施的任何安全設定都可能影響與公開 (wss://ws.kraken.com) 和私人 (wss://ws-auth.kraken.com) URL 的連接。

Cloudflare 要求所有 TLS 連接都使用伺服器名稱指示 (SNI),否則 WebSocket 連接將失敗,並會返回 HTTP 403 Forbidden 錯誤。Cloudflare 的支援頁面提供有關其 TLS SNI 要求的更多詳細資訊。

我們的官方 Python WebSocket API 程式庫已更新以支援 TLS SNI,但一些第三方 WebSocket API 程式庫可能仍然受到影響。如果您需要任何協助更新您的 WebSocket API 程式碼以支援 TLS SNI,請聯繫我們的 API 支援團隊。

WebSocket API 協助。

如果您在實作 WebSocket API 客戶端時需要任何協助,請聯繫我們的 API 支援團隊

需要更多幫助?