WebSocket API v1 - Πώς να διατηρήσετε ένα έγκυρο βιβλίο εντολών

Τελευταία ενημέρωση: 1 Απριλίου 2025

Η ροή βιβλίου εντολών του WebSocket API v1 παρέχει όλα τα δεδομένα αγοράς που απαιτούνται για τη διατήρηση ενός τοπικού αντιγράφου ενός βιβλίου εντολών της Kraken.

Για παράδειγμα, η ροή βιβλίου εντολών για XBT/USD θα μπορούσε να χρησιμοποιηθεί για την ανάκτηση και διατήρηση του βιβλίου εντολών για το ζεύγος νομισμάτων Bitcoin/US Dollar, ακριβώς όπως εμφανίζεται το βιβλίο εντολών στην πλατφόρμα συναλλαγών μας.

Η ροή βιβλίου εντολών παρέχει ένα αρχικό στιγμιότυπο του τρέχοντος βιβλίου εντολών και στη συνέχεια μεταδίδει ενημερώσεις στο βιβλίο εντολών σε πραγματικό χρόνο, έτσι ώστε ένα βιβλίο εντολών που διατηρείται μέσω της ροής βιβλίου εντολών να είναι πάντα ενημερωμένο.

Πλήρεις λεπτομέρειες της μορφής JSON για τη ροή βιβλίου εντολών είναι διαθέσιμες στην τεκμηρίωση του WebSocket API v1.

Στιγμιότυπο Βιβλίου Εντολών

Αφού εγγραφείτε στη ροή βιβλίου εντολών, το πρώτο μήνυμα δεδομένων αγοράς θα είναι ένα στιγμιότυπο του τρέχοντος βιβλίου εντολών.

Το στιγμιότυπο του βιβλίου εντολών περιλαμβάνει ολόκληρο το βιβλίο εντολών μέχρι το ζητούμενο (εγγεγραμμένο) βάθος, όπως το ακόλουθο παράδειγμα του βιβλίου εντολών XBT/USD σε βάθος 10:

[0,{"as":[["5290.80000","1.00000000","1556724667.748660"],["5290.90000","4.49956524","1556724664.331028"],["5291.70000","1.00000000","1556724653.480504"],["5292.00000","0.95388940","1556724619.682690"],["5292.20000","1.51300000","1556724494.497326"],["5293.10000","0.69800000","1556724667.635414"],["5293.20000","2.00000000","1556724656.022756"],["5293.90000","2.83200000","1556724668.057687"],["5294.10000","0.99600000","1556724666.340462"],["5294.50000","5.00000000","1556724661.980996"]],"bs":[["5290.10000","1.43195600","1556724666.594179"],["5289.80000","2.00000000","1556724663.082526"],["5289.40000","0.49400000","1556724665.274827"],["5289.20000","0.89533312","1556724640.520134"],["5287.40000","3.23600000","1556724660.997516"],["5287.30000","3.33000000","1556724659.999108"],["5287.00000","10.20000000","1556724635.850932"],["5286.00000","3.86378703","1556724662.757360"],["5285.70000","6.40000000","1556724488.785281"],["5283.90000","0.50000000","1556723616.006805"]]},"book-10","XBT/USD"]

Το στιγμιότυπο περιλαμβάνει τις τρέχουσες καλύτερες τιμές bid/ask, με τους διαθέσιμους όγκους τους, και την ημερομηνία/ώρα που ενημερώθηκε πιο πρόσφατα το επίπεδο τιμής (ως UNIX timestamp σε δευτερόλεπτα με 6 δεκαδικά ψηφία).

Αλλαγές Επιπέδου Τιμής

Μετά το αρχικό στιγμιότυπο, τα επίπεδα τιμών του βιβλίου εντολών τροποποιούνται σε πραγματικό χρόνο μέσω μηνυμάτων ενημέρωσης, εισαγωγής και διαγραφής.

Μηνύματα Ενημέρωσης

Ένα μήνυμα ενημέρωσης ενημερώνει ένα επίπεδο τιμής που υπάρχει ήδη στο βιβλίο εντολών παρέχοντας έναν νέο όγκο και χρονική σήμανση, όπως η ακόλουθη ενημέρωση για το επίπεδο τιμής 5293.1 στην πλευρά ask του βιβλίου εντολών:

[0,{"a":[["5293.10000","0.39800000","1556724673.104421"]], "c":"408163318"},"book-10","XBT/USD"]

Ενώ η τιμή παραμένει η ίδια (5293.1), ο διαθέσιμος όγκος σε αυτήν την τιμή αλλάζει από 0.69800000 (όπως παρέχεται από το αρχικό στιγμιότυπο) σε 0.39800000, και η νέα χρονική σήμανση για το επίπεδο τιμής αντικατοπτρίζει την ημερομηνία/ώρα που συνέβη η αλλαγή.

Τα μηνύματα ενημέρωσης αλλάζουν μόνο επίπεδα τιμών που υπάρχουν ήδη στο βιβλίο εντολών· δεν προσθέτουν ή αφαιρούν επίπεδα τιμών από το βιβλίο εντολών.

Μηνύματα Εισαγωγής

Ένα μήνυμα εισαγωγής προσθέτει ένα νέο επίπεδο τιμής στο βιβλίο εντολών, όπως η ακόλουθη εισαγωγή για το επίπεδο τιμής 5294.4 στην πλευρά ask του βιβλίου εντολών:

[0,{"a":[["5294.40000","0.99600000","1556724672.663220"]], "c":"393966308"},"book-10","XBT/USD"]

Κάθε μήνυμα εισαγωγής περιλαμβάνει το νέο επίπεδο τιμής (5294.4), τον διαθέσιμο όγκο σε αυτήν την τιμή (0.99600000) και τη χρονική σήμανση που ενημερώθηκε πιο πρόσφατα το επίπεδο τιμής.

Τα μηνύματα εισαγωγής αλλάζουν τα επίπεδα τιμών εντός του βιβλίου εντολών δημιουργώντας ένα νέο επίπεδο τιμής, μετακινώντας όλα τα επόμενα επίπεδα τιμών (χαμηλότερες τιμές bid ή υψηλότερες τιμές ask) προς τα έξω και ωθώντας το εξώτατο επίπεδο τιμής εκτός του πεδίου εφαρμογής του βιβλίου εντολών.

Για παράδειγμα, από το αρχικό στιγμιότυπο παραπάνω, το μήνυμα εισαγωγής:

[0,{"a":[["5294.40000","0.99600000","1556724672.663220"]], "c":"393966308"},"book-10","XBT/USD"]

Θα πρόσθετε το επίπεδο τιμής 5294.4 στο βιβλίο εντολών στο επίπεδο 10 (την υψηλότερη τιμή ask) και θα μετακινούσε το επίπεδο τιμής 5294.5 εκτός του πεδίου εφαρμογής του βιβλίου εντολών (μετακινώντας ουσιαστικά το 5294.5 στο επίπεδο 11).

Μηνύματα Διαγραφής

Ένα μήνυμα διαγραφής αφαιρεί ένα επίπεδο τιμής από το βιβλίο εντολών, όπως το ακόλουθο μερικό μήνυμα διαγραφής για το επίπεδο τιμής 5294.1 στην πλευρά ask του βιβλίου εντολών:

[0,{"a":[["5294.10000","0.00000000","1556724670.010241"]] ... },"book-10","XBT/USD"]

Τα μηνύματα διαγραφής περιλαμβάνουν το επίπεδο τιμής που δεν υπάρχει πλέον, καθορίζουν πάντα διαθέσιμο όγκο 0.0 και περιλαμβάνουν μια χρονική σήμανση που υποδεικνύει την ημερομηνία/ώρα που αφαιρέθηκε το επίπεδο τιμής από το βιβλίο εντολών.

Τα μηνύματα διαγραφής αλλάζουν τα επίπεδα τιμών εντός του βιβλίου εντολών αφαιρώντας το επηρεαζόμενο επίπεδο τιμής (από ολόκληρο το βιβλίο εντολών, όχι μόνο από το εγγεγραμμένο βάθος), μετακινώντας όλα τα επόμενα επίπεδα τιμών (χαμηλότερες τιμές bid ή υψηλότερες τιμές ask) προς τα μέσα και φέρνοντας ένα νέο επίπεδο τιμής στο πεδίο εφαρμογής του βιβλίου εντολών.

Σημειώστε ότι μια διαγραφή ακολουθείται πάντα αμέσως από μια εισαγωγή που φέρνει ένα νέο επίπεδο τιμής στο πεδίο εφαρμογής στο εξώτατο επίπεδο (όπως το επίπεδο 10 για ένα εγγεγραμμένο βάθος 10).

Για παράδειγμα, από το αρχικό στιγμιότυπο παραπάνω, το μήνυμα διαγραφής/εισαγωγής:

[0,{"a":[["5294.10000","0.00000000","1556724670.010241"],["5294.70000","3.34000000","1556724653.951982","r"]], "c":"3679121060"},"book-10","XBT/USD"]

Αυτό θα διέγραφε το επίπεδο τιμής 5294.1 από το επίπεδο 9 του βιβλίου εντολών, θα μετακινούσε το επίπεδο τιμής 5294.5 από το επίπεδο 10 στο επίπεδο 9 και θα πρόσθετε αμέσως το νέο επίπεδο τιμής 5294.7 στο επίπεδο 10 του βιβλίου εντολών (το εξώτατο επίπεδο και την υψηλότερη τιμή ask για βάθος 10).

Πρόσθετοι Πόροι

Περισσότερες λεπτομέρειες για τη λογική του βιβλίου εντολών είναι διαθέσιμες μέσω ενός δείγματος απομαγνητοφώνησης βιβλίου εντολών και παραδειγματικού κώδικα που υλοποιεί ασύγχρονους (πολυνηματικούς) και σύγχρονους (μονονηματικούς) πελάτες γραμμής εντολών.

Οι δεκαδικοί και χιλιάδες διαχωριστές που εμφανίζονται σε αυτό το άρθρο ενδέχεται να διαφέρουν από τις μορφές που εμφανίζονται στις πλατφόρμες συναλλαγών μας. Ανατρέξτε στο άρθρο μας σχετικά με τον τρόπο χρήσης τελειών και κομμάτων για περισσότερες πληροφορίες.

Χρειάζεστε περισσότερη βοήθεια;