Διαρκή Ερωτήματα & Σελιδοποίηση
Perpetual Queries & Pagination: Agent Java SDK ενσωμάτωση v0.3.0, παραδείγματα, παράμετροι και σημασιολογία απόκρισης.
Αυτός ο οδηγός στοχεύει Agent Java SDK v0.3.0, Java 8+ και τη δημόσια σύμβαση με ετικέτα. Τα παραδείγματα εκτελούνται σε ένα backend συνεργάτη μετά την προετοιμασία του client στο Γρήγορη εκκίνηση.
Παράδειγμα προαπαιτούμενα
Τα αποσπάσματα Java μοιράζονται αυτές τις εισαγωγές. Αρχικοποιήστε το client χρησιμοποιώντας Γρήγορη εκκίνηση και αποκτήστε platformUserId από την αποθηκευμένη δέσμευση. Παραδείγματα αναγνωριστικών χρήστη/παραγγελιών πρέπει να αντικατασταθούν με τις δικές σας σταθερές τιμές.
Ερώτηση δεδομένων αορίστου συμβολαίου
Έξι τύποι διεπαφών και Java μέθοδοι
Όλα τα αιτήματα υπογράφονται POST με κοινό πρόθεμα /v1/agent/perpetual.
Το platformUserIds είναι ένας πίνακας συμβολοσειρών αναγνωριστικών δημόσιας πλατφόρμας. Όταν καθορίζεται, απαιτούνται 1 έως 100 μοναδικοί παίκτες που έχουν πρόσβαση. στα τελικά σημεία που επιτρέπουν την παράλειψη, ερωτάται μόνο το εύρος των απευθείας παικτών στα οποία έχει πρόσβαση ο τρέχων έμπορος. Τα ερωτήματα πλήρωσης συναλλαγών απαιτούν πάντα αυτόν τον πίνακα. Τα ερωτήματα παραγγελίας υπό όρους απαιτούν επίσης ρητά αναγνωριστικά χρήστη. Η παράλειψη δεν ισοδυναμεί με [] και οι κενές πίνακες είναι παράνομες. Το εύρος καθορίζεται από τον υπογράφοντα έμπορο και δεν είναι δυνατή η μεταβίβαση άλλων αναγνωριστικών εμπόρου για την επέκταση του εύρους.
Οι τιμές του πίνακα σειριοποιούνται ως συμπαγείς JSON πριν από την ένταξη στο ωφέλιμο φορτίο υπογραφής. Για παράδειγμα, το platformUserIds υπογράφει ως ["1188041528"], δίνοντας platformUserIds=["1188041528"] στο k=v ωφέλιμο φορτίο. Διατηρήστε τη σειρά στοιχείων του πίνακα, τα διπλά εισαγωγικά και τα αναγνωριστικά συμβολοσειρών. Μην εισάγετε κενά μορφοποίησης και μην χρησιμοποιείτε Java List.toString() (όπως [1188041528]). Το SDK χειρίζεται αυτόματα αυτήν τη σειριοποίηση.
Το ερώτημα παραγγελίας πρέπει να περάσει orderCategory=NORMAL ή CONDITIONAL. Χρησιμοποιήστε το orderId για τις συνηθισμένες παραγγελίες και το conditionId για τις εντολές υπό όρους. Δεν μπορούν να αναμειχθούν σε κατηγορίες. Οι εντολές υπό όρους και οι συνήθεις εντολές που δημιουργούνται με την ενεργοποίησή τους υποβάλλονται σε επεξεργασία ξεχωριστά ως οντότητες.
Συνθήκες φίλτρου
Ο χρόνος του ιστορικού ερωτήματος είναι Unix χιλιοστά του δευτερολέπτου και το διάστημα είναι [startTime, endTime). ο χρόνος αίτησης υπογραφής είναι timestamp είναι Unix δευτερόλεπτα. Συνιστάται η διόρθωση του χρονικού παραθύρου και του ερωτήματος UTC σε τμήματα. χρησιμοποιήστε το UTC για καθημερινή συμφωνία. Η κατάσταση και ο τύπος χρησιμοποιούν απαρίθμηση συμβολαίων πλατφόρμας και δεν μεταφράζονται από μόνες τους σε κινεζικές συμβολοσειρές.
limit Η προεπιλογή είναι 500, το εύρος είναι 1~1000. το μέγεθος της σελίδας δεν εγγυάται ότι ο ίδιος αριθμός θα επιστρέφεται κάθε φορά. Οι έξι διεπαφές μοιράζονται αυτήν τη στιγμή ένα όριο ερωτήματος 2 φορές ανά δευτερόλεπτο και 4 ριπές ανά έμπορο και το μέγιστο όριο ταυτόχρονης χρήσης για κάθε έμπορο εντός της παρουσίας είναι 2. Η πλευρά του εμπόρου χρησιμοποιεί μια ενοποιημένη ουρά και συνιστάται η έναρξη με διαδοχική σελιδοποίηση και μικρότερο παράθυρο ιστορικού.
Java παραδείγματα ερωτημάτων
Ερώτηση για την τρέχουσα συνηθισμένη παραγγελία ενός παίκτη:
Ζητήστε ερωτήσεις για τις αλλαγές του συμβολαίου την τελευταία ώρα και επεξεργαστείτε τον κέρσορα. Το ακόλουθο παράδειγμα δεν επαναλαμβάνει αυτόματα. όταν η πραγματική εφαρμογή αντιμετωπίζει τρέχοντα περιορισμό ή προσωρινή αποτυχία, ακολουθήστε τον συνδεδεμένο σχετικό οδηγό για να επαναφέρετε την ίδια σελίδα.
Δομή επιστροφής και κανόνες αποθήκευσης
Βλέπω Κοινή απάντηση και σελιδοποίηση για κοινόχρηστα πεδία. Τα πεδία πόρων τεκμηριώνονται σε Παραγγελίες, Εμπορικά γεμίσματα, Θέσεις και Καθολικό συμβολαίου.
Οι έξι διεπαφές επιστρέφουν ομοιόμορφα PerpetualResponse:
Κάθε items περιέχει platformUserId, entityType, entityId, data. Οι τύποι οντοτήτων περιλαμβάνουν ORDER, CONDITION_ORDER, TRADE_FILL, POSITION, ACCOUNT_LEDGER. Χρησιμοποιήστε αυτά τα τρία πεδία ταυτότητας για να δημιουργήσετε ένα αδύναμο κλειδί. μην αντιμετωπίζετε το αναγνωριστικό παραγγελίας υπό όρους, το αναγνωριστικό παραγγελίας και το αναγνωριστικό συμπλήρωσης ως τον ίδιο αριθμό.
data Παρέχει πεδία όπως τιμή, ποσότητα, κατάσταση, έξοδο, κέρδος και ζημία ή αλλαγή υπολοίπου ανά πόρο. Το ποσό, η τιμή, η ποσότητα και το αναγνωριστικό οντότητας αντιμετωπίζονται ως συμβολοσειρές. Ο χρόνος εργασίας είναι σε χιλιοστά του δευτερολέπτου. Τα πεδία που λείπουν δεν συμπληρώνονται στο 0 και δεν συνάγονται από άλλες οντότητες.
Ο δρομέας είναι η θέση σελιδοποίησης ενός ερωτήματος, όχι μια αξιόπιστη στοιχειώδης συνδρομή, ούτε ένα εγγυημένο ατομικό στιγμιότυπο διασέλιδων. Ο τρέχων δρομέας είναι έγκυρος για 24 ώρες από τον πρώτο κύκλο παραγωγής. Η επόμενη σελιδοποίηση διατηρεί τους ίδιους εμπόρους, πόρους, συλλογές παικτών και συνθήκες φίλτρου. Το σταθερό παράθυρο για την ιστορική έλξη είναι ανίσχυρο όταν τραβιέται επανειλημμένα. η κατάσταση της τρέχουσας παραγγελίας/θέσης ανανεώνεται μετά από εκ νέου ερώτημα. Όταν χρειάζεται μια διεπαφή σε πραγματικό χρόνο, χρησιμοποιείται ο μηχανισμός δεδομένων του front-end της πλατφόρμας και η διεπαφή polling six δεν μπορεί να θεωρηθεί ως διεπαφή αγοράς υψηλής συχνότητας.
Σφάλματα και ανάκτηση
HTTP επιτυχία δεν σημαίνει επιχειρηματική επιτυχία, πρέπει να ελέγξετε το code. Java SDK θα εμφανίσει ένα επαγγελματικό σφάλμα ως AgentApiException.
Το cursor και όλες οι συνθήκες φίλτρου της αρχικής αποτυχημένης σελίδας θα διατηρηθούν μετά τον τρέχοντα περιορισμό, το χρονικό όριο ή την προσωρινή αποτυχία. κάθε φορά που καλείται ξανά το SDK, θα δημιουργούνται νέα timestamp, nonce, sign. Δεν μπορείτε να μεταβείτε απευθείας στην επόμενη σελίδα και δεν μπορείτε να αντιμετωπίζετε τις αποτυχίες ως κενά αποτελέσματα. Ο SDK δεν είναι υπεύθυνος για την αυτόματη επανάληψη των συναλλαγών κεφαλαίων.
Κοινή απάντηση και σελιδοποίηση
Η δομή κάθε data.items[]:
Το ίδιο ledgerId μπορεί να διαχωρίσει πολλαπλές λεπτομέρειες, όπως αμοιβές χειρισμού, κέρδη και ζημίες κ.λπ. πατώντας το ledgerId για να αφαιρέσετε τα διπλότυπα θα προκαλέσει απώλεια δεδομένων. Τα αναγνωριστικά από διαφορετικούς πόρους δεν μπορούν να αναμειχθούν. Ανατρέξτε στον συνδεδεμένο σχετικό οδηγό του Οδηγού πρόσβασης για κανόνες σελιδοποίησης και αποθήκευσης πεδίου.
Τύποι, μονάδες και πεδία που παραλείφθηκαν
- Συμβολοσειρά χρήσης ποσού, τιμής, ποσότητας και αναγνωριστικού οντότητας. χρήση δεκαδικών για την επεξεργασία ποσών και δεν μπορείτε να χρησιμοποιήσετε αριθμούς κινητής υποδιαστολής ή να μετατρέψετε μεγάλα αναγνωριστικά σε Αριθμούς JavaScript. Το νόμισμα ποσού και η μονάδα ποσότητας εξηγούνται σύμφωνα με τις προδιαγραφές του ζεύγους συναλλαγών/συμβολαίου.
- Ο επιχειρηματικός χρόνος χρησιμοποιεί ακέραιο αριθμό (int64), και τα δύο είναι Unix χιλιοστά του δευτερολέπτου. Τα διαπιστευτήρια χρονικής σφραγίδας ελέγχου ταυτότητας αιτήματος expireAt χρησιμοποιούν δευτερόλεπτα και δεν μπορούν να συγχέονται.
- Τα επιχειρηματικά πεδία συμβολοσειράς συνήθως δεν εξάγονται όταν είναι άδεια και ορισμένα θα παραληφθούν όταν τα αριθμητικά πεδία είναι 0. Το πεδίο που λείπει δεν σημαίνει ότι η τιμή της επιχείρησης είναι 0.
- Τα
reduceOnly,closeOnly,makerOnlyστο μοντέλο γενικής εγγραφής δεν παραλείπουν το false, επομένως αυτά τα τρία false μπορεί επίσης να εμφανίζονται σε συναλλαγές ή θέσεις. Επεξηγούνται μόνο στους πόρους παραγγελίας. δεν μπορεί να θεωρηθεί ότι η συναλλαγή/θέση εκτέλεσε τους αντίστοιχους κανόνες εντολής. - Το
closePositionείναι ένα προαιρετικό boolean: παρέχεται από εντολές υπό όρους, που συνήθως παραλείπεται για άλλους πόρους. Το λείπει έχει διαφορετικό νόημα από το ψεύτικο. - Ο παρακάτω πίνακας “παρέχεται αυτήν τη στιγμή” σημαίνει ότι η λογική ανάγνωσης έχει μια πηγή πεδίου. Τα προαιρετικά πεδία ενδέχεται να εξακολουθούν να παραλείπονται επειδή δεν έχουν αξία. Τα πεδία που υπάρχουν στο μοντέλο δεν είναι εγγυημένα ότι θα συμπληρωθούν σε κάθε διεπαφή.
Η διαφορά μεταξύ κατάστασης και λειτουργίας περιθωρίου
Η ορθογραφία του CANCELED για μια συνηθισμένη σειρά είναι διαφορετική από εκείνη του CANCELLED για μια υπό όρους σειρά. Η ενεργοποίηση μιας εντολής υπό όρους δεν σημαίνει ότι έχει εκπληρωθεί η παραγόμενη συνηθισμένη εντολή. Μην επαναχρησιμοποιείτε το ίδιο σύνολο πινάκων μετάφρασης κατάστασης για όλους τους πόρους.
Η παραγγελία υπό όρους marginMode επιστρέφει CROSS / ISOLATED; Οι ιστορικές συνήθεις εντολές και θέσεις επιστρέφουν επί του παρόντος “1” / “2”, οι οποίες είναι σταυρωτό/απομονωμένο περιθώριο αντίστοιχα. Το marginMode δεν είναι προς το παρόν διαθέσιμο για συνηθισμένες παραγγελίες. Οι έμποροι μπορούν να κάνουν κανονικοποίηση ανά πόρο στο δικό τους επίπεδο εμφάνισης και οι αρχικές τιμές πρέπει ακόμα να αποθηκευτούν.
Πεδία που δηλώθηκαν στο μοντέλο αλλά δεν παρέχονται σε αυτό το ερώτημα
Generic RecordData / Java Το μοντέλο PerpetualData δηλώνει επίσης τα ακόλουθα πεδία, αλλά η τρέχουσα λογική ανάγνωσης παραγωγής έξι κατηγοριών δεν τα συμπληρώνει. **Δεν θα πρέπει να αναφέρονται ως διαθέσιμα επιχειρηματικά δεδομένα, ούτε θα πρέπει να αντικαθιστούν τα πραγματικά αποτελέσματα οι προεπιλογές πεδίων. **
Το πραγματικό πεδίο εφαρμογής πεδίου υπόκειται στους παραπάνω πίνακες πόρων. όταν η πλατφόρμα ενημερώνει πεδία ή απαριθμήσεις, θα προσαρμόζεται σύμφωνα με τη νέα περιγραφή διεπαφής και την έκδοση SDK.