API WebSocket de Kraken - Foire aux questions

Dernière mise à jour : 31 mars 2025

Kraken dispose-t-il d'une API WebSocket ? Comment puis-je m'y connecter ?

Kraken dispose à la fois d'une API REST et d'une API WebSocket. Notre API WebSocket est disponible aux URL sécurisées suivantes :

Flux de données de marché publics (non authentifiés) : wss://ws.kraken.com/

Flux de données de compte privés (authentifiés) et points de terminaison de trading : wss://ws-auth.kraken.com/

L'authentification n'est pas requise pour se connecter aux flux de données de marché publics, mais un jeton d'authentification valide est nécessaire pour les flux privés.

Tous les messages envoyés et reçus via l'API WebSocket sont du texte brut encodé au format JSON. Les détails de chaque type de message sont fournis dans notre documentation de l'API WebSocket.

Avez-vous des bibliothèques WebSocket disponibles ?

Nous disposons d'une variété d'exemples de code d'API WebSocket, qui peuvent être utilisés directement ou comme point de départ pour votre propre implémentation :

  • un client en ligne de commande de l'API WebSocket (en Python),

  • une suite de tests de l'API WebSocket (en JavaScript),

  • des exemples d'utilisation de notre module Python WebSocket recommandé (websocket-client),

  • et une bibliothèque de l'API WebSocket (Github).

Notre API WebSocket peut être implémentée dans n'importe quel langage de programmation de votre choix, et notre équipe de support API se fera un plaisir de vous aider ou de vous fournir des exemples de code dans d'autres langages si nécessaire.

Quels flux/points de terminaison sont pris en charge ?

Notre API WebSocket fournit une variété de flux de données de marché en temps réel, de flux de données de compte et de points de terminaison de trading. Une liste complète des flux/points de terminaison disponibles, ainsi que les détails d'implémentation pour chacun, peuvent être trouvés dans notre documentation de l'API WebSocket.

Comment savoir si je suis connecté avec succès ? Comment savoir si je suis toujours connecté ?

Lorsque vous êtes abonné à un flux, un message {u'event': u'heartbeat'} sera reçu à une fréquence d'un battement de cœur par seconde.

Les battements de cœur ne seront pas reçus si d'autres messages (données de marché, données de compte, etc.) sont reçus à la place. Le moment et la raison de la réception des données de marché ou de compte dépendent du flux auquel vous êtes abonné.

Si vous vous abonnez au flux d'une paire de devises avec un faible volume de trading, vous ne recevrez peut-être que des battements de cœur pendant de longues périodes.

Si vous vous désabonnez d'un flux, vous ne recevrez plus de battements de cœur ni de données de trading, et après ne plus être abonné à aucun flux pendant 1 minute, vous serez déconnecté du flux WebSockets.

Quand et pourquoi le WebSocket envoie-t-il des données mises à jour ?

Le moment et la raison de la réception des données de marché ou de compte dépendent du flux auquel vous êtes abonné. Par exemple :

Ticker : Lorsqu'il y a une transaction ou un lot de transactions pour une paire de devises, un message de ticker est publié pour cette paire. Vous ne recevrez ce message que si vous êtes abonné au flux de ticker pour cette paire.

Trade : De même, lorsqu'il y a une transaction ou un lot de transactions pour une paire de devises, un message de transaction est également publié pour cette paire. Vous ne recevrez ce message que si vous êtes abonné au flux de transactions pour cette paire.

OHLC : Un intervalle OHLC mis à jour est publié pour chaque intervalle lorsqu'une transaction ou un lot de transactions pour une paire de devises est exécuté. Vous ne recevrez des mises à jour que pour les intervalles auxquels vous êtes abonné. Après avoir franchi une limite d'intervalle, aucun message n'est envoyé avant la prochaine transaction.

Carnet d'ordres : Un instantané initial du carnet d'ordres avec la profondeur choisie est publié lors de la première souscription au flux du carnet d'ordres.

Lorsque de nouveaux ordres sont ajoutés au carnet d'ordres ou que des transactions sont exécutées qui affectent la profondeur du carnet d'ordres auquel vous êtes abonné, un message est publié contenant les mises à jour du carnet d'ordres pour tous les niveaux de prix et volumes affectés. Ces mises à jour peuvent contenir uniquement des offres d'achat, uniquement des offres de vente, ou les deux. Voir Comment construire un carnet d'ordres ci-dessous pour plus de détails.

Spread : Lorsqu'un nouvel ordre d'achat le plus élevé ou d'ordre de vente le plus bas est placé, ou qu'une transaction est exécutée qui modifie le meilleur prix d'achat ou de vente, un message de spread est publié avec les prix d'achat et de vente mis à jour.

Les flux WebSocket fournissent-ils des données historiques ou uniquement des données actuelles ?

Les flux de données de marché WebSocket ne fournissent que des données actuelles, cependant il est possible de se connecter simultanément à l'API WebSocket pour les données actuelles et à l'API REST pour les données historiques.

Utilisation du paramètre reqid.

Les requêtes d'abonnement peuvent inclure un paramètre reqid fourni par le client, qui peut ensuite être utilisé pour faire correspondre la requête d'abonnement WebSocket souhaitée avec l'ID de canal pour cet abonnement.

Notez que si vous effectuez plusieurs abonnements WebSocket en même temps, ils se verront tous attribuer la même valeur reqid. Pour attribuer une valeur reqid différente, chaque flux doit être abonné individuellement.

Je veux plus de détails, où puis-je les trouver ?

La spécification complète de l'API WebSocket est disponible dans la documentation de l'API WebSocket.

Différences entre les symboles des paires de devises dans les API REST et WebSocket.

L'API WebSocket n'accepte que les symboles de paires de devises au format ISO 4217-A3, tels que XBT/USD.

Le point de terminaison AssetPairs de l'API REST peut être utilisé pour traduire les symboles entre les versions de l'API REST (telles que XBTUSD ou XXBTZUSD) et la version de l'API WebSocket (telles que XBT/USD).

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

Le champ wsname fournit le symbole de l'API WebSocket.

Comment construire un carnet d'ordres

Le flux du carnet d'ordres de l'API WebSocket est le plus complexe de tous les flux WebSocket, mais tant que les messages du flux du carnet d'ordres sont interprétés correctement, il est possible de maintenir une copie locale d'un carnet d'ordres avec seulement quelques lignes de code.

Nos pages de support de l'API WebSocket fournissent des instructions détaillées pour l'interprétation des messages du flux du carnet d'ordres, ainsi qu'un exemple de transcription du flux du carnet d'ordres, et un exemple de code (en Python) pour maintenir une copie locale valide d'un carnet d'ordres.

Quelles sont les limites de connexion de l'API WebSocket ?

L'API WebSocket limite le nombre maximum de connexions simultanées afin de se protéger contre les abus (tels que les attaques DDoS, par exemple). Si votre client WebSocket établit trop de connexions en même temps, le message d'erreur suivant sera reçu :

{“error”: {“message”: “Vous avez atteint la capacité maximale de connexions WebSocket. Veuillez contacter l'équipe de support Kraken pour toute question.“, “hint”: “Votre code se reconnecte peut-être trop souvent ou sans nécessité.“, “name”: “Erreur de taux de connexion WebSocket”}}

L'API WebSocket permet plusieurs abonnements de flux via une seule connexion WebSocket (comme l'abonnement à toutes les données de marché disponibles pour la paire de devises XBT/USD via une seule connexion), il est donc possible de diffuser toutes les données de marché disponibles pour toutes les paires de devises sans atteindre les limites de connexion WebSocket.

Quelles sont les limites de débit de l'API WebSocket ?

Les mêmes limites de débit de trading s'appliquent à toutes les interfaces de saisie d'ordres (site web, Kraken Terminal, API REST et WebSocket), et sont expliquées en détail sur notre page de support des limites de débit.

La limite de débit des messages d'une seule connexion API WebSocket variera en fonction de la charge du système. Les clients de l'API WebSocket recevront le message d'erreur {"Error": "Exceeded msg rate"} lorsque la limite de débit des messages est dépassée.

Trading (passer/annuler des ordres) via l'API WebSocket.

Le trading via l'API WebSocket est disponible via les points de terminaison addOrder et cancelOrder, qui sont utilisés respectivement pour passer de nouveaux ordres et annuler des ordres existants (ouverts).

Les points de terminaison de trading WebSocket sont disponibles via la même connexion WebSocket privée (wss://ws-auth.kraken.com/) que les flux de gestion de compte privés (openOrders et ownTrades).

Tous les détails concernant les points de terminaison de trading sont disponibles via la documentation de l'API WebSocket, et nos pages de support de l'API WebSocket fournissent des informations supplémentaires et des exemples pour l'utilisation des points de terminaison de trading dans votre propre code.

Pourquoi est-ce que je reçois une erreur 403 lors de la connexion à l'API WebSocket ?

Les connexions à l'API WebSocket sont intermédiées par Cloudflare, par conséquent, tous les paramètres de sécurité mis en œuvre par Cloudflare peuvent affecter les connexions aux URL publiques (wss://ws.kraken.com) et privées (wss://ws-auth.kraken.com).

Cloudflare exige que l'indication du nom du serveur (SNI) soit utilisée pour toutes les connexions TLS, sinon la connexion WebSocket échouerait et une erreur HTTP 403 Interdit serait renvoyée à la place. Les pages de support de Cloudflare fournissent plus de détails concernant leur exigence SNI TLS.

Notre bibliothèque officielle Python WebSocket API a été mise à jour pour prendre en charge le SNI TLS, mais certaines bibliothèques API WebSocket tierces pourraient encore être affectées. Veuillez contacter notre équipe de support API si vous avez besoin d'aide pour mettre à jour votre code API WebSocket afin de prendre en charge le SNI TLS.

Assistance API WebSocket.

Veuillez contacter notre équipe de support API si vous avez besoin d'aide pour implémenter votre client API WebSocket.

Besoin d’aide supplémentaire ?