Tenir un carnet d’ordres en temps réel avec des mises à jour WebSocket
Résumé
Cet exemple décrit un client WebSocket qui se connecte à une plateforme d’échange de produits dérivés, s’authentifie, s’abonne aux flux publics du carnet d’ordres et demande des flux privés liés au compte après authentification. Sa boucle de travail reçoit les messages, appelle les gestionnaires d’événements et se reconnecte en cas de défaillance de la socket ; un autre fil envoie périodiquement des trames ping. L’exemple conserve les niveaux acheteur et vendeur dans des dictionnaires indexés par identifiant d’ordre et les met à jour à partir de snapshots partiels, d’insertions, de modifications et de suppressions.
Après chaque message du carnet d’ordres, il trie les offres acheteur de la plus élevée à la plus basse et les offres vendeur de la plus basse à la plus élevée, puis copie jusqu’à cinq niveaux de prix et de taille dans une structure de type tick. Cela illustre une approche élémentaire pour maintenir et présenter un carnet en temps réel. L’exemple ne contient aucune mesure de latence, aucun signal de trading ni résultat d’exécution, et l’extrait ne décrit ni gestion de l’ordre des mises à jour ni mécanisme de reprise en cas de données manquantes. Les valeurs d’authentification étant codées en dur, l’exemple ne convient pas à un déploiement direct.
Idées clés
- Le client s’authentifie par WebSocket avant de s’abonner aux flux privés.
- Un fil de travail reçoit les messages et se reconnecte après les erreurs de socket, tandis qu’un autre envoie périodiquement des pings.
- Les snapshots et messages incrémentiels du carnet mettent à jour des tableaux d’offres acheteur et vendeur indexés par identifiant d’ordre.
- Les cinq meilleurs niveaux sont sélectionnés en triant les offres acheteur par prix décroissant et les offres vendeur par prix croissant.
- L’exemple ne fournit aucune preuve de performance et n’aborde ni la reprise après des mises à jour manquantes ni la protection des identifiants.
Étiquettes
Issu d’une collection de cours privée ; l’original n’est pas publié.