Το WebSocket API μας μπορεί να υλοποιηθεί σε οποιαδήποτε γλώσσα προγραμματισμού προτιμάτε, και η ομάδα υποστήριξης API θα χαρεί να σας βοηθήσει ή να σας παράσχει παραδείγματα κώδικα σε επιπλέον γλώσσες, εάν χρειαστεί.
Ποιες ροές/σημεία πρόσβασης υποστηρίζονται;
Το WebSocket API μας παρέχει μια ποικιλία ροών δεδομένων αγοράς σε πραγματικό χρόνο, ροών δεδομένων λογαριασμού και σημείων πρόσβασης συναλλαγών. Μια πλήρης λίστα των διαθέσιμων ροών/σημείων πρόσβασης, μαζί με τις λεπτομέρειες υλοποίησης για κάθε ροή/σημείο πρόσβασης, μπορεί να βρεθεί στην τεκμηρίωση του WebSocket API.
Πώς ξέρω ότι έχω συνδεθεί επιτυχώς; Πώς ξέρω ότι είμαι ακόμα συνδεδεμένος;
Όταν είστε συνδεδεμένοι σε μια ροή, ένα μήνυμα {u'event': u'heartbeat'} θα λαμβάνεται με συχνότητα 1 heartbeat ανά δευτερόλεπτο.
Τα heartbeats δεν θα λαμβάνονται εάν λαμβάνονται άλλα μηνύματα (δεδομένα αγοράς, δεδομένα λογαριασμού κ.λπ.) αντ' αυτών. Το πότε και γιατί λαμβάνονται δεδομένα αγοράς ή λογαριασμού εξαρτάται από τη ροή στην οποία είστε συνδεδεμένοι.
Εάν εγγράφεστε στη ροή ενός ζεύγους νομισμάτων με χαμηλό όγκο συναλλαγών, ενδέχεται να λαμβάνετε μόνο heartbeats για μεγάλα χρονικά διαστήματα.
Εάν καταργήσετε την εγγραφή σας από μια ροή, δεν θα λαμβάνετε πλέον heartbeats ή δεδομένα συναλλαγών και αφού δεν είστε συνδεδεμένοι σε καμία ροή για 1 λεπτό, θα αποσυνδεθείτε από τη ροή WebSockets.
Πότε και γιατί στέλνει το WebSocket ενημερωμένα δεδομένα;
Το πότε και γιατί λαμβάνονται δεδομένα αγοράς ή δεδομένα λογαριασμού εξαρτάται από τη ροή στην οποία είστε συνδεδεμένοι. Για παράδειγμα:
Ticker: Όταν υπάρχει μια συναλλαγή ή μια παρτίδα συναλλαγών για ένα ζεύγος νομισμάτων, δημοσιεύεται ένα μήνυμα ticker για αυτό το ζεύγος. Θα λάβετε αυτό το μήνυμα μόνο εάν είστε συνδεδεμένοι στη ροή ticker για αυτό το ζεύγος.
Trade: Ομοίως, όταν υπάρχει μια συναλλαγή ή μια παρτίδα συναλλαγών για ένα ζεύγος νομισμάτων, δημοσιεύεται επίσης ένα μήνυμα trade για αυτό το ζεύγος. Θα λάβετε αυτό το μήνυμα μόνο εάν είστε συνδεδεμένοι στη ροή trade για αυτό το ζεύγος.
OHLC: Ένα ενημερωμένο διάστημα OHLC δημοσιεύεται για κάθε διάστημα όταν εκτελείται μια συναλλαγή ή μια παρτίδα συναλλαγών για ένα ζεύγος νομισμάτων. Θα λαμβάνετε ενημερώσεις μόνο για τα διαστήματα στα οποία είστε συνδεδεμένοι. Μετά τη διέλευση ενός ορίου διαστήματος, δεν αποστέλλεται μήνυμα μέχρι να πραγματοποιηθεί η επόμενη συναλλαγή.
Book: Ένα αρχικό στιγμιότυπο του βιβλίου εντολών με το επιλεγμένο βάθος δημοσιεύεται όταν εγγράφεστε για πρώτη φορά στη ροή βιβλίου.
Καθώς προστίθενται νέες εντολές στο βιβλίο εντολών ή εκτελούνται συναλλαγές που επηρεάζουν το βάθος του βιβλίου εντολών στο οποίο είστε συνδεδεμένοι, δημοσιεύεται ένα μήνυμα που περιέχει ενημερώσεις βιβλίου εντολών για τυχόν επηρεαζόμενα επίπεδα τιμών και όγκους. Αυτές οι ενημερώσεις μπορούν να περιέχουν μόνο bids, μόνο asks, ή και bids και asks. Δείτε το Πώς να δημιουργήσετε ένα βιβλίο εντολών παρακάτω για λεπτομέρειες.
Spread: Όταν τοποθετείται μια νέα υψηλότερη bid ή χαμηλότερη ask εντολή, ή εκτελείται μια συναλλαγή που αλλάζει την καλύτερη bid ή καλύτερη ask τιμή, δημοσιεύεται ένα μήνυμα spread με τις ενημερωμένες τιμές bid και ask.
Παρέχουν οι ροές WebSocket ιστορικά δεδομένα ή μόνο τρέχοντα δεδομένα;
Οι ροές δεδομένων αγοράς WebSocket παρέχουν μόνο τρέχοντα δεδομένα, ωστόσο είναι δυνατόν να συνδεθείτε ταυτόχρονα στο WebSocket API για τρέχοντα δεδομένα και στο REST API για ιστορικά δεδομένα.
Χρήση της παραμέτρου reqid.
Οι αιτήσεις εγγραφής μπορούν να περιλαμβάνουν μια παράμετρο reqid που παρέχεται από τον πελάτη, η οποία μπορεί στη συνέχεια να χρησιμοποιηθεί για την αντιστοίχιση της επιθυμητής αίτησης εγγραφής WebSocket με το αναγνωριστικό καναλιού για αυτήν την εγγραφή.
Σημειώστε ότι εάν κάνετε πολλαπλές εγγραφές WebSocket ταυτόχρονα, όλες θα λάβουν την ίδια τιμή reqid. Για να εκχωρήσετε μια διαφορετική τιμή reqid, κάθε ροή πρέπει να εγγραφεί ξεχωριστά.
Θέλω περισσότερες λεπτομέρειες, πού μπορώ να τις βρω;
Η πλήρης προδιαγραφή του WebSocket API είναι διαθέσιμη στην τεκμηρίωση του WebSocket API.
Διαφορές μεταξύ των συμβόλων ζευγών νομισμάτων στα REST και WebSocket APIs.
Το WebSocket API δέχεται μόνο σύμβολα ζευγών νομισμάτων σε μορφή ISO 4217-A3, όπως XBT/USD.
Το σημείο πρόσβασης AssetPairs του REST API μπορεί να χρησιμοποιηθεί για τη μετάφραση συμβόλων μεταξύ των εκδόσεων REST API (όπως XBTUSD ή XXBTZUSD) και της έκδοσης WebSocket API (όπως XBT/USD).
https://api.kraken.com/0/public/AssetPairs
Το πεδίο wsname παρέχει το σύμβολο του WebSocket API.
Πώς να δημιουργήσετε ένα βιβλίο εντολών
Η ροή βιβλίου του WebSocket API είναι η πιο πολύπλοκη από όλες τις ροές WebSocket, αλλά εφόσον τα μηνύματα της ροής βιβλίου ερμηνεύονται σωστά, είναι δυνατόν να διατηρηθεί ένα τοπικό αντίγραφο ενός βιβλίου εντολών με λίγες μόνο γραμμές κώδικα.
Οι σελίδες υποστήριξης του WebSocket API μας παρέχουν λεπτομερείς οδηγίες για την ερμηνεία των μηνυμάτων ροής βιβλίου, μαζί με ένα παράδειγμα μεταγραφής ροής βιβλίου, και παράδειγμα κώδικα (σε Python) για τη διατήρηση ενός έγκυρου τοπικού αντιγράφου ενός βιβλίου εντολών.
Ποια είναι τα όρια σύνδεσης του WebSocket API;
Το WebSocket API περιορίζει τον μέγιστο αριθμό ταυτόχρονων συνδέσεων για την παροχή προστασίας έναντι κακής χρήσης (όπως επιθέσεις DDoS, για παράδειγμα). Εάν ο πελάτης WebSocket σας πραγματοποιήσει πάρα πολλές συνδέσεις ταυτόχρονα, θα λάβει το ακόλουθο μήνυμα σφάλματος:
{“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 επιτρέπει πολλαπλές εγγραφές ροών μέσω μιας ενιαίας σύνδεσης WebSocket (όπως η εγγραφή σε όλα τα διαθέσιμα δεδομένα αγοράς για το ζεύγος νομισμάτων XBT/USD μέσω μιας ενιαίας σύνδεσης), οπότε είναι δυνατόν να μεταδοθούν όλα τα διαθέσιμα δεδομένα αγοράς για όλα τα ζεύγη νομισμάτων χωρίς να φτάσετε τα όρια σύνδεσης του WebSocket.
Ποια είναι τα όρια ρυθμού του WebSocket API;
Τα ίδια όρια ρυθμού συναλλαγών ισχύουν σε όλες τις διεπαφές εισαγωγής εντολών (ιστοσελίδα, Kraken Terminal, REST και WebSocket APIs), και εξηγούνται λεπτομερώς στη σελίδα υποστήριξης ορίων ρυθμού.
Το όριο ρυθμού μηνυμάτων μιας ενιαίας σύνδεσης WebSocket API θα ποικίλλει ανάλογα με το φορτίο στο σύστημα. Οι πελάτες WebSocket API θα λάβουν το μήνυμα σφάλματος {"Error": "Exceeded msg rate"} όταν ξεπεραστεί το όριο ρυθμού μηνυμάτων.
Συναλλαγές (τοποθέτηση/ακύρωση εντολών) μέσω του WebSocket API.
Οι συναλλαγές μέσω του WebSocket API είναι διαθέσιμες μέσω των σημείων πρόσβασης addOrder και cancelOrder, τα οποία χρησιμοποιούνται για την τοποθέτηση νέων εντολών και την ακύρωση υφιστάμενων (ανοιχτών) εντολών αντίστοιχα.
Τα σημεία πρόσβασης συναλλαγών WebSocket είναι διαθέσιμα μέσω της ίδιας ιδιωτικής σύνδεσης WebSocket (wss://ws-auth.kraken.com/) με τις ιδιωτικές ροές διαχείρισης λογαριασμού (openOrders και ownTrades).
Πλήρεις λεπτομέρειες σχετικά με τα σημεία πρόσβασης συναλλαγών είναι διαθέσιμες μέσω της τεκμηρίωσης του WebSocket API, και οι σελίδες υποστήριξης του WebSocket API μας παρέχουν περαιτέρω πληροφορίες και παραδείγματα για τη χρήση των σημείων πρόσβασης συναλλαγών στον δικό σας κώδικα.
Γιατί λαμβάνω σφάλμα 403 κατά τη σύνδεση στο WebSocket API;
Οι συνδέσεις WebSocket API διαμεσολαβούνται μέσω του Cloudflare, επομένως τυχόν ρυθμίσεις ασφαλείας που εφαρμόζονται από το Cloudflare μπορούν να επηρεάσουν τις συνδέσεις τόσο στις δημόσιες (wss://ws.kraken.com) όσο και στις ιδιωτικές (wss://ws-auth.kraken.com) διευθύνσεις URL.
Το Cloudflare απαιτεί να χρησιμοποιείται το Server Name Indication (SNI) για όλες τις συνδέσεις TLS, διαφορετικά η σύνδεση WebSocket θα αποτύγχανε και θα επιστρεφόταν ένα σφάλμα HTTP 403 Forbidden. Οι σελίδες υποστήριξης του Cloudflare παρέχουν περαιτέρω λεπτομέρειες σχετικά με την απαίτηση TLS SNI.
Η επίσημη βιβλιοθήκη Python WebSocket API μας έχει ενημερωθεί για να υποστηρίζει TLS SNI, αλλά ορισμένες βιβλιοθήκες WebSocket API τρίτων ενδέχεται να εξακολουθούν να επηρεάζονται. Παρακαλούμε επικοινωνήστε με την ομάδα υποστήριξης API εάν χρειάζεστε βοήθεια για την ενημέρωση του κώδικα WebSocket API σας ώστε να υποστηρίζει TLS SNI.
Βοήθεια για το WebSocket API.
Παρακαλούμε επικοινωνήστε με την ομάδα υποστήριξης API εάν χρειάζεστε βοήθεια για την υλοποίηση του πελάτη WebSocket API σας.