WebSocket API v1 - τοποθέτηση και ακύρωση εντολών

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

Το WebSocket API v1 μας υποστηρίζει συναλλαγές μέσω των τελικών σημείων addOrder και cancelOrder. Το τελικό σημείο addOrder χρησιμοποιείται για την τοποθέτηση νέων εντολών και το τελικό σημείο cancelOrder χρησιμοποιείται για την ακύρωση υφιστάμενων (ανοιχτών) εντολών.

Τόσο το addOrder όσο και το cancelOrder είναι ιδιωτικά τελικά σημεία, πράγμα που σημαίνει ότι μπορούν να προσπελαστούν μόνο μέσω μιας πιστοποιημένης σύνδεσης WebSocket.

Μια αρχική σύνδεση πρέπει να γίνει στην πιστοποιημένη διεύθυνση URL WebSocket wss://ws-auth.kraken.com/ , η οποία μπορεί στη συνέχεια να παραμείνει ανοιχτή επ' αόριστον ενώ τοποθετούνται και ακυρώνονται εντολές. Μια ενιαία σύνδεση WebSocket έχει σχεδιαστεί για να υποστηρίζει πολλαπλά αιτήματα, επομένως δεν είναι απαραίτητο (ή συνιστώμενο) να συνδέεστε/αποσυνδέεστε για κάθε κλήση στα τελικά σημεία συναλλαγών.

Πιστοποίηση WebSocket

Ένα διακριτικό πιστοποίησης WebSocket μπορεί να ανακτηθεί μέσω του τελικού σημείου GetWebSocketsToken του REST API.

Μόλις ανακτηθεί ένα διακριτικό, μπορεί να γίνει σύνδεση στην ιδιωτική διεύθυνση URL WebSocket wss://ws-auth.kraken.com/ και τα τελικά σημεία addOrder και cancelOrder μπορούν στη συνέχεια να χρησιμοποιηθούν επ' αόριστον (το διακριτικό δεν θα λήξει όσο χρησιμοποιείται για την τοποθέτηση και ακύρωση εντολών).

Σημειώστε ότι το κλειδί API που χρησιμοποιείται για την ανάκτηση του διακριτικού πρέπει να έχει τόσο τα δικαιώματα Τροποποίηση εντολών όσο και Ακύρωση/Κλείσιμο εντολών, διαφορετικά θα λάβετε ένα σφάλμα άρνησης άδειας από το WebSocket API.

Τοποθέτηση εντολής

Μόλις δημιουργηθεί μια πιστοποιημένη σύνδεση WebSocket, μια εντολή μπορεί να τοποθετηθεί στέλνοντας ένα μήνυμα όπως το ακόλουθο:

  • {"event":"addOrder", "token":"nT9n23/7oLdq+bNHNMNJ4VvF1hiHhjTnPOaCMiB1GJ0", "pair":"XBT/USD", "type":"buy", "ordertype":"limit", "price":"9857", "volume":"0.002", "leverage":"5", "userref":"8874657"}

Στη συνέχεια θα ληφθεί μια απάντηση που θα υποδεικνύει την κατάσταση του αιτήματος (αν η εντολή έγινε αποδεκτή ή απορρίφθηκε). Για μια εντολή που έγινε αποδεκτή και τοποθετήθηκε επιτυχώς, η απάντηση θα υποδεικνύει κατάσταση ok και θα είναι παρόμοια με την ακόλουθη:

  • {"descr":"buy 0.00200000 XBTUSD @ limit 9857.0 with 5:1 leverage","event":"addOrderStatus","status":"ok","txid":"OPOUJF-BWKCL-FG5DQL"}

Για μια εντολή που απορρίφθηκε και δεν τοποθετήθηκε, η απάντηση θα υποδεικνύει κατάσταση σφάλματος (error), μαζί με ένα μήνυμα σφάλματος που θα αναφέρει τον λόγο της απόρριψης (μη έγκυρα ορίσματα, ανεπαρκή κεφάλαια κ.λπ.), όπως η ακόλουθη απόρριψη για μια εντολή που δεν πληρούσε το ελάχιστο μέγεθος εντολής:

  • {"errorMessage":"EOrder:Order minimum not met","event":"addOrderStatus","status":"error"}

Ακύρωση εντολής

Μόλις δημιουργηθεί μια πιστοποιημένη σύνδεση WebSocket (ή κατά προτίμηση επαναχρησιμοποιηθεί μια υπάρχουσα σύνδεση), μια εντολή μπορεί να ακυρωθεί στέλνοντας ένα μήνυμα όπως το ακόλουθο:

  • {"event":"cancelOrder", "token":"s74Ajl83it0dNNKcF072NJ5wDmLTGIceaCbV96eWbFg", "txid":["OJZ3DI-IU6QC-ME7TVE"]}

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

  • {"event":"cancelOrderStatus","status":"ok"}

Για ένα αίτημα ακύρωσης που απορρίφθηκε, η απάντηση θα υποδεικνύει κατάσταση σφάλματος (error), μαζί με ένα μήνυμα σφάλματος που θα αναφέρει τον λόγο της απόρριψης (μη έγκυρο αναγνωριστικό εντολής κ.λπ.), όπως η ακόλουθη απόρριψη για ένα αίτημα ακύρωσης εντολής που είχε ήδη ακυρωθεί:

  • {"errorMessage":"EOrder:Unknown order","event":"cancelOrderStatus","status":"error"}

Σημειώστε ότι, σε αντίθεση με το τελικό σημείο CancelOrder του REST API, είναι δυνατό να καθορίσετε πολλαπλά αναγνωριστικά εντολών σε ένα μόνο μήνυμα ακύρωσης WebSocket. Τα αναγνωριστικά εντολών που πρέπει να ακυρωθούν θα πρέπει να περιλαμβάνονται ως ξεχωριστές καταχωρήσεις εντός του πίνακα txid, ως εξής:

  • {"event":"cancelOrder", "token":"c4JjTNHSurKmWDsnrGaCxIuCOa4FurCZK2ppktvT2Yo", "txid":["OLVCRZ-DNKJI-VRTZKY","O67X6E-PBGSR-GU23R5","OECCDC-T2R4V-52CR7T"]}

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