Kraken WebSocket API - Usein kysytyt kysymykset

Viimeksi päivitetty: 31.3.2025

Onko Krakenilla WebSocket-rajapintaa (API)? Miten voin yhdistää siihen?

Krakenilla on sekä REST-rajapinta että WebSocket-rajapinta. WebSocket-rajapintamme on saatavilla seuraavissa suojatuissa URL-osoitteissa:

Julkiset (todentamattomat) markkinatietosyötteet: wss://ws.kraken.com/

Yksityiset (todennetut) tilitietosyötteet ja kaupankäynnin päätepisteet: wss://ws-auth.kraken.com/

Todennusta ei vaadita julkisiin markkinatietosyötteisiin yhdistämiseen, mutta yksityisiin syötteisiin vaaditaan voimassa oleva todennustunnus (token).

Kaikki WebSocket-rajapinnan kautta lähetetyt ja vastaanotetut viestit ovat JSON-muotoon koodattua pelkkää tekstiä. Kunkin viestityypin yksityiskohdat löytyvät WebSocket-rajapintamme dokumentaatiosta.

Onko teillä saatavilla WebSocket-kirjastoja?

Meillä on saatavilla useita WebSocket-rajapinnan esimerkkikoodeja, joita voidaan käyttää joko suoraan tai lähtökohtana omalle toteutuksellesi:

  • WebSocket-rajapinnan komentoriviasiakas (Pythonilla),

  • WebSocket-rajapinnan testiohjelmisto (JavaScriptillä),

  • esimerkkejä suosittelemamme Python WebSocket -moduulin (websocket-client) käytöstä,

  • sekä WebSocket-rajapinnan kirjasto (Github).

WebSocket-rajapintamme voidaan toteuttaa millä tahansa haluamallasi ohjelmointikielellä, ja API-tukitiimimme auttaa mielellään tai tarjoaa esimerkkikoodia muilla kielillä tarvittaessa.

Mitä syötteitä/päätepisteitä tuetaan?

WebSocket-rajapintamme tarjoaa erilaisia reaaliaikaisia markkinatietosyötteitä, tilitietosyötteitä ja kaupankäynnin päätepisteitä. Täydellinen luettelo saatavilla olevista syötteistä/päätepisteistä sekä kunkin syötteen/päätepisteen toteutustiedot löytyvät WebSocket-rajapinnan dokumentaatiostamme.

Mistä tiedän, että yhteys on muodostettu onnistuneesti? Mistä tiedän, että yhteys on edelleen auki?

Kun olet tilannut syötteen, vastaanotat {u'event': u'heartbeat'} -viestin kerran sekunnissa.

Heartbeat-viestejä ei vastaanoteta, jos niiden sijaan vastaanotetaan muita viestejä (markkinatietoja, tilitietoja jne.). Se, milloin ja miksi markkina- tai tilitietoja vastaanotetaan, riippuu tilaamastasi syötteestä.

Jos tilaat sellaisen valuuttaparin syötteen, jonka kaupankäyntivolyymi on pieni, saatat vastaanottaa vain heartbeat-viestejä pitkiä aikoja.

Jos peruutat syötteen tilauksen, et enää vastaanota heartbeat-viestejä tai kaupankäyntitietoja, ja jos et ole tilannut mitään syötettä 1 minuuttiin, yhteys WebSocket-syötteeseen katkaistaan.

Milloin ja miksi WebSocket lähettää päivitettyjä tietoja?

Se, milloin ja miksi markkina- tai tilitietoja vastaanotetaan, riippuu tilaamastasi syötteestä. Esimerkiksi:

Ticker: Kun valuuttaparilla tehdään kauppa tai erä kauppoja, kyseiselle parille julkaistaan ticker-viesti. Vastaanotat tämän viestin vain, jos olet tilannut kyseisen parin ticker-syötteen.

Trade: Vastaavasti, kun valuuttaparilla tehdään kauppa tai erä kauppoja, kyseiselle parille julkaistaan myös trade-viesti. Vastaanotat tämän viestin vain, jos olet tilannut kyseisen parin trade-syötteen.

OHLC: Päivitetty OHLC-intervalli julkaistaan jokaiselle intervallille, kun valuuttaparilla toteutetaan kauppa tai erä kauppoja. Vastaanotat päivityksiä vain niille intervalleille, jotka olet tilannut. Intervallirajan ylittämisen jälkeen viestiä ei lähetetä ennen kuin seuraava kauppa tapahtuu.

Book: Tilauskirjan alkutilanne valitulla syvyydellä julkaistaan, kun book-syöte tilataan ensimmäisen kerran.

Kun tilauskirjaan lisätään uusia toimeksiantoja tai toteutetaan kauppoja, jotka vaikuttavat tilaamaasi tilauskirjan syvyyteen, julkaistaan viesti, joka sisältää tilauskirjan päivitykset kaikille vaikuttaville hintatasoille ja volyymeille. Nämä päivitykset voivat sisältää vain ostoja (bids), vain myyntejä (asks) tai molempia. Katso lisätietoja kohdasta Miten tilauskirja rakennetaan alta.

Spread: Kun asetetaan uusi korkein osto- tai alin myyntitoimeksianto tai toteutetaan kauppa, joka muuttaa parasta osto- tai myyntihintaa, julkaistaan spread-viesti päivitetyillä osto- ja myyntihinnoilla.

Tarjoavatko WebSocket-syötteet historiatietoja vai vain nykyisiä tietoja?

WebSocket-markkinatietosyötteet tarjoavat vain nykyisiä tietoja, mutta on mahdollista yhdistää samanaikaisesti WebSocket-rajapintaan nykyisiä tietoja varten ja REST-rajapintaan historiatietoja varten.

reqid-parametrin käyttö.

Tilauspyynnöt voivat sisältää asiakkaan toimittaman reqid-parametrin, jota voidaan myöhemmin käyttää vastaamaan haluttua WebSocket-tilauspyyntöä kyseisen tilauksen kanavatunnukseen (channel ID).

Huomaa, että jos teet useita WebSocket-tilauksia samanaikaisesti, niille kaikille määritetään sama reqid-arvo. Jos haluat määrittää eri reqid-arvon, jokainen syöte on tilattava erikseen.

Haluan lisätietoja, mistä löydän niitä?

Täydellinen WebSocket-rajapinnan määrittely on saatavilla WebSocket-rajapinnan dokumentaatiossa.

Erot valuuttaparien symboleissa REST- ja WebSocket-rajapinnoissa.

WebSocket-rajapinta hyväksyy vain ISO 4217-A3 -muotoisia valuuttaparisymboleita, kuten XBT/USD.

REST-rajapinnan AssetPairs-päätepistettä voidaan käyttää symbolien kääntämiseen REST-rajapintaversioiden (kuten XBTUSD tai XXBTZUSD) ja WebSocket-rajapintaversion (kuten XBT/USD) välillä.

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

wsname-kenttä ilmoittaa WebSocket-rajapinnan symbolin.

Miten tilauskirja rakennetaan

WebSocket-rajapinnan book-syöte on monimutkaisin kaikista WebSocket-syötteistä, mutta niin kauan kuin book-syötteen viestit tulkitaan oikein, on mahdollista ylläpitää paikallista kopiota tilauskirjasta vain muutamalla koodirivillä.

WebSocket-rajapinnan tukisivumme tarjoavat yksityiskohtaiset ohjeet book-syötteen viestien tulkitsemiseen sekä esimerkin book-syötteen lokista ja esimerkkikoodin (Pythonilla) voimassa olevan paikallisen tilauskirjan kopion ylläpitämiseen.

Mitkä ovat WebSocket-rajapinnan yhteysrajoitukset?

WebSocket-rajapinta rajoittaa samanaikaisten yhteyksien enimmäismäärää suojautuakseen väärinkäytöksiltä (kuten esimerkiksi DDoS-hyökkäyksiltä). Jos WebSocket-asiakkaasi muodostaa liian monta yhteyttä samanaikaisesti, saat seuraavan virheilmoituksen:

{“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-rajapinta sallii useita syötetilauksia yhden WebSocket-yhteyden kautta (kuten kaikkien saatavilla olevien markkinatietojen tilaaminen XBT/USD-valuuttaparille yhden yhteyden kautta), joten on mahdollista striimata kaikki saatavilla olevat markkinatiedot kaikille valuuttapareille saavuttamatta WebSocket-yhteysrajoituksia.

Mitkä ovat WebSocket-rajapinnan nopeusrajoitukset?

Samat kaupankäynnin nopeusrajoitukset pätevät kaikissa toimeksiantojen syöttöliittymissä (verkkosivusto, Kraken Terminal, REST- ja WebSocket-rajapinnat), ja ne on selitetty yksityiskohtaisesti nopeusrajoitusten tukisivullamme.

Yhden WebSocket-rajapintayhteyden viestien nopeusrajoitus vaihtelee järjestelmän kuormituksen mukaan. WebSocket-rajapinnan asiakkaat saavat virheilmoituksen {"Error": "Exceeded msg rate"} kun viestien nopeusrajoitus ylittyy.

Kaupankäynti (toimeksiantojen tekeminen/peruuttaminen) WebSocket-rajapinnan kautta.

Kaupankäynti WebSocket-rajapinnan kautta on mahdollista addOrder- ja cancelOrder-päätepisteiden kautta, joita käytetään uusien toimeksiantojen tekemiseen ja olemassa olevien (avoimien) toimeksiantojen peruuttamiseen.

WebSocket-kaupankäynnin päätepisteet ovat saatavilla saman yksityisen WebSocket-yhteyden (wss://ws-auth.kraken.com/) kautta kuin yksityiset tilinhallintasyötteet (openOrders ja ownTrades).

Täydelliset tiedot kaupankäynnin päätepisteistä ovat saatavilla WebSocket-rajapinnan dokumentaatiossa, ja WebSocket-rajapinnan tukisivumme tarjoavat lisätietoja ja esimerkkejä kaupankäynnin päätepisteiden käytöstä omassa koodissasi.

Miksi saan 403-virheen yhdistäessäni WebSocket-rajapintaan?

WebSocket-rajapintayhteydet välitetään Cloudflaren kautta, joten kaikki Cloudflaren toteuttamat suojausasetukset voivat vaikuttaa yhteyksiin sekä julkisiin (wss://ws.kraken.com) että yksityisiin (wss://ws-auth.kraken.com) URL-osoitteisiin.

Cloudflare vaatii, että Server Name Indication (SNI) -tunnistetta käytetään kaikissa TLS-yhteyksissä, muuten WebSocket-yhteys epäonnistuu ja sen sijaan palautetaan HTTP 403 Forbidden -virhe. Cloudflaren tukisivut tarjoavat lisätietoja heidän TLS SNI -vaatimuksestaan.

Virallinen Python WebSocket -rajapintakirjastomme on päivitetty tukemaan TLS SNI:tä, mutta jotkut kolmannen osapuolen WebSocket-rajapintakirjastot saattavat edelleen kärsiä tästä. Ota yhteyttä API-tukitiimiimme, jos tarvitset apua WebSocket-rajapintakoodisi päivittämisessä tukemaan TLS SNI:tä.

WebSocket-rajapinnan tuki.

Ota yhteyttä API-tukitiimiimme, jos tarvitset apua WebSocket-rajapinta-asiakkaasi toteuttamisessa.

Tarvitsetko lisää apua?