Kraken WebSocket API - 자주 묻는 질문

최종 업데이트: More than 3 months ago

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은 언제, 왜 업데이트된 데이터를 보냅니까?

시장 데이터 또는 계정 데이터가 수신되는 시기와 이유는 구독하는 피드에 따라 달라집니다. 예를 들어:

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는 XBT/USD와 같은 ISO 4217-A3 형식의 통화쌍 심볼만 허용합니다.

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(Server Name Indication)를 사용해야 하며, 그렇지 않으면 WebSocket 연결이 실패하고 대신 HTTP 403 Forbidden 오류가 반환됩니다. Cloudflare의 지원 페이지는 TLS SNI 요구 사항에 대한 추가 세부 정보를 제공합니다.

당사의 공식 Python WebSocket API 라이브러리는 TLS SNI를 지원하도록 업데이트되었지만, 일부 타사 WebSocket API 라이브러리는 여전히 영향을 받을 수 있습니다. WebSocket API 코드를 TLS SNI를 지원하도록 업데이트하는 데 도움이 필요한 경우 당사의 API 지원팀에 문의하십시오.

WebSocket API 지원.

WebSocket API 클라이언트를 구현하는 데 도움이 필요한 경우 API 지원팀에 문의하십시오.

더 많은 도움이 필요하신가요?