Kraken WebSocket API – Vanliga frågor

Senast uppdaterad: 31 mars 2025

Har Kraken ett WebSocket API? Hur ansluter jag till det?

Kraken har både ett REST API och ett WebSocket API. Vårt WebSocket API är tillgängligt via följande säkra URL:er:

Offentliga (oautentiserade) marknadsdataflöden: wss://ws.kraken.com/

Privata (autentiserade) kontodataflöden och handels-endpoints: wss://ws-auth.kraken.com/

Autentisering krävs inte för att ansluta till de offentliga marknadsdataflödena, men en giltig autentiseringstoken krävs för de privata flödena.

Alla meddelanden som skickas och tas emot via WebSocket API är oformaterad text kodad i JSON-format. Detaljerna för varje meddelandetyp finns i vår WebSocket API-dokumentation.

Finns det WebSocket-bibliotek tillgängliga?

Vi har en mängd exempelkod för WebSocket API tillgänglig, som antingen kan användas direkt eller som en utgångspunkt för din egen implementering:

  • en WebSocket API kommandoradsklient (i Python),

  • en WebSocket API testsvit (i JavaScript),

  • exempel på hur man använder vår rekommenderade Python WebSocket-modul (websocket-client),

  • och ett WebSocket API-bibliotek (Github).

Vårt WebSocket API kan implementeras i vilket programmeringsspråk du än föredrar, och vårt API-supportteam hjälper dig gärna eller tillhandahåller exempelkod på ytterligare språk vid behov.

Vilka flöden/endpoints stöds?

Vårt WebSocket API tillhandahåller en mängd realtidsmarknadsdataflöden, kontodataflöden och handels-endpoints. En komplett lista över tillgängliga flöden/endpoints, tillsammans med implementeringsdetaljerna för varje flöde/endpoint, finns i vår WebSocket API-dokumentation.

Hur vet jag att jag är ansluten? Hur vet jag att jag fortfarande är ansluten?

När du prenumererar på ett flöde kommer ett {u'event': u'heartbeat'}-meddelande att tas emot med en frekvens av 1 heartbeat per sekund.

Heartbeats kommer inte att tas emot om andra meddelanden (marknadsdata, kontodata, etc.) tas emot istället. När och varför marknads- eller kontodata tas emot beror på vilket flöde du prenumererar på.

Om du prenumererar på flödet för ett valutapar med låg handelsvolym, kan du endast få heartbeats under långa perioder.

Om du avprenumererar på ett flöde kommer du inte längre att få heartbeats eller handelsdata, och efter att inte ha prenumererat på något flöde under 1 minut kommer du att kopplas bort från WebSockets-flödet.

När och varför skickar WebSocket uppdaterad data?

När och varför marknadsdata eller kontodata tas emot beror på vilket flöde du prenumererar på. Till exempel:

Ticker: När det finns en handel eller en grupp av affärer för ett valutapar, publiceras ett tickermeddelande för det paret. Du kommer endast att få detta meddelande om du prenumererar på tickerflödet för detta par.

Trade: På liknande sätt, när det finns en handel eller en grupp av affärer för ett valutapar, publiceras även ett handelsmeddelande för det paret. Du kommer endast att få detta meddelande om du prenumererar på handelsflödet för detta par.

OHLC: Ett uppdaterat OHLC-intervall publiceras för varje intervall när en handel eller en grupp av affärer för ett valutapar utförs. Du kommer endast att få uppdateringar för de intervall du prenumererar på. Efter att ha passerat en intervallgräns skickas inget meddelande förrän nästa handel sker.

Book: En initial ögonblicksbild av orderboken med det valda djupet publiceras när du först prenumererar på bokflödet.

När nya order läggs till orderboken eller affärer utförs som påverkar orderbokens djup som du prenumererar på, publiceras ett meddelande som innehåller orderboksuppdateringar för alla berörda prisnivåer och volymer. Dessa uppdateringar kan innehålla endast köpbud, endast säljbud, eller både köp- och säljbud. Se Hur man bygger en orderbok nedan för detaljer.

Spread: När en ny högsta köpbud eller lägsta säljbud läggs, eller en handel utförs som ändrar det bästa köp- eller säljpriset, publiceras ett spread-meddelande med de uppdaterade köp- och säljpriserna.

Tillhandahåller WebSocket-flöden historisk data eller endast aktuell data?

WebSocket-marknadsdataflödena tillhandahåller endast aktuell data, men det är möjligt att samtidigt ansluta till WebSocket API för aktuell data och REST API för historisk data.

Användning av parametern reqid.

Prenumerationsförfrågningar kan inkludera en klienttillhandahållen reqid-parameter som sedan kan användas för att matcha den önskade WebSocket-prenumerationsförfrågan med kanal-ID:t för den prenumerationen.

Observera att om du gör flera WebSocket-prenumerationer samtidigt, kommer de alla att tilldelas samma reqid-värde. För att tilldela ett annat reqid-värde måste varje flöde prenumereras på individuellt.

Jag vill ha mer information, var hittar jag den?

Den fullständiga WebSocket API-specifikationen finns i WebSocket API-dokumentationen.

Skillnader mellan valutaparssymboler i REST och WebSocket API:er.

WebSocket API accepterar endast valutaparssymboler i ISO 4217-A3-format, såsom XBT/USD.

REST API AssetPairs-endpointen kan användas för att översätta symboler mellan REST API-versionerna (såsom XBTUSD eller XXBTZUSD) och WebSocket API-versionen (såsom XBT/USD).

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

Fältet wsname tillhandahåller WebSocket API-symbolen.

Hur man bygger en orderbok

WebSocket API:s bokflöde är det mest komplexa av alla WebSocket-flöden, men så länge bokflödesmeddelandena tolkas korrekt är det möjligt att upprätthålla en lokal kopia av en orderbok med bara några rader kod.

Våra supportsidor för WebSocket API tillhandahåller detaljerade instruktioner för att tolka bokflödesmeddelandena, tillsammans med ett exempel på bokflödestranskript, och exempelkod (i Python) för att upprätthålla en giltig lokal kopia av en orderbok.

Vilka är anslutningsgränserna för WebSocket API?

WebSocket API begränsar det maximala antalet samtidiga anslutningar för att ge skydd mot missbruk (som till exempel DDoS-attacker). Om din WebSocket-klient gör för många anslutningar samtidigt, kommer följande felmeddelande att tas emot:

{“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 tillåter flera flödesprenumerationer via en enda WebSocket-anslutning (som att prenumerera på all tillgänglig marknadsdata för valutaparet XBT/USD via en enda anslutning), så det är möjligt att strömma all tillgänglig marknadsdata för alla valutapar utan att nå WebSocket-anslutningsgränserna.

Vilka är hastighetsgränserna för WebSocket API?

Samma handels-hastighetsgränser gäller för alla orderinmatningsgränssnitt (webbplats, Kraken Terminal, REST och WebSocket API:er), och förklaras i detalj på vår supportsida för hastighetsgränser.

Meddelandehastighetsgränsen för en enskild WebSocket API-anslutning kommer att variera beroende på systemets belastning. WebSocket API-klienter kommer att få felmeddelandet {"Error": "Exceeded msg rate"} när meddelandehastighetsgränsen överskrids.

Handel (placering/annullering av order) via WebSocket API.

Handel via WebSocket API är tillgänglig via addOrder- och cancelOrder-endpoints, som används för att placera nya order respektive annullera befintliga (öppna) order.

WebSocket-handels-endpoints är tillgängliga via samma privata WebSocket-anslutning (wss://ws-auth.kraken.com/) som de privata kontohanteringsflödena (openOrders och ownTrades).

Fullständiga detaljer angående handels-endpoints finns tillgängliga via WebSocket API-dokumentationen, och våra supportsidor för WebSocket API tillhandahåller ytterligare information och exempel för att använda handels-endpoints i din egen kod.

Varför får jag ett 403-fel när jag ansluter till WebSocket API?

WebSocket API-anslutningar förmedlas via Cloudflare, varför alla säkerhetsinställningar som implementeras av Cloudflare kan påverka anslutningar till både de offentliga (wss://ws.kraken.com) och privata (wss://ws-auth.kraken.com) URL:erna.

Cloudflare kräver att Server Name Indication (SNI) används för alla TLS-anslutningar, annars skulle WebSocket-anslutningen misslyckas, och ett HTTP 403 Forbidden-fel skulle returneras istället. Cloudflares supportsidor ger ytterligare detaljer angående deras TLS SNI-krav.

Vårt officiella Python WebSocket API-bibliotek har uppdaterats för att stödja TLS SNI, men vissa tredjeparts WebSocket API-bibliotek kan fortfarande påverkas. Vänligen kontakta vårt API-supportteam om du behöver hjälp med att uppdatera din WebSocket API-kod för att stödja TLS SNI.

WebSocket API-assistans.

Vänligen kontakta vårt API-supportteam om du behöver hjälp med att implementera din WebSocket API-klient.

Behöver du mer hjälp?