Λήψη ιστορικών και κρυπτογραφικών δεδομένων σε πραγματικό χρόνο με πολύ απλό προγραμματισμό Ιστού PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Λήψη ιστορικών και κρυπτογραφικών δεδομένων σε πραγματικό χρόνο με πολύ απλό προγραμματισμό Ιστού

Λουτσιάνο Αμπριάτα

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

Αποποίηση ευθύνης: Δεν θα βρείτε καμία οικονομική συμβουλήcΕδώ και δεν είμαι ειδικός σε κρυπτονομίσματα, κρυπτονομίσματα, NFT, τις συναλλαγές τους κ.λπ. Δίνω μόνο δωρεάν κώδικα HTML+JavaScript για να λαμβάνω δεδομένα μέσω κλήσεων API στο CryptoCompare.com. και εμφανίζω κάποιες πλοκές που προέρχονται από αυτά τα δεδομένα με κάποιες από τις δικές μου υποκειμενικές απόψεις.

Πρόσφατα με ενδιέφεραν τα κρυπτονομίσματα, τα κρυπτονομίσματα, τα NFT κ.λπ. Φυσικά, ως επιστήμονας που εργάζομαι συνεχώς με δεδομένα, ένα από τα πρώτα πράγματα που ήθελα να κάνω ήταν να παίξω με δεδομένα κρυπτονομισμάτων. Είδα πλοκές παντού σε ιστότοπους, ειδήσεις και εφαρμογές. αλλά πώς θα μπορούσα να πάρω στα χέρια μου πραγματικά δεδομένα για να παίξω με αυτά και να κάνω τις δικές μου πλοκές και έρευνες; Και ειδικά, πώς θα μπορούσα να είμαι σίγουρος ότι ήταν ενημερωμένο κάθε φορά που το ζήτησα;

Συγκεκριμένα, το πρώτο πράγμα που ήθελα να βάλω στα χέρια μου ήταν οι συναλλαγματικές ισοτιμίες μεταξύ διαφόρων νομισμάτων κρυπτογράφησης και νομισμάτων Fiat. Διαπίστωσα ότι ο ιστότοπος CryptoCompare.com προσφέρει ένα ωραίο API, δωρεάν για μικρούς αριθμούς κλήσεων, που επιτρέπει την πρόσβαση μέσω προγραμματισμού σε δεδομένα από τη βάση του. Βρήκα επίσης στο Διαδίκτυο διάφορα κομμάτια κώδικα JavaScript που τα έβαλα μαζί σε δύο πολύ απλές εφαρμογές Ιστού: μία για να λαμβάνω ενημερώσεις για τις συναλλαγματικές ισοτιμίες BTC-USD κάθε 10 δευτερόλεπτα. και ένα άλλο για την ανάκτηση ιστορικών συναλλαγματικών ισοτιμιών BTC-USD κάθε λεπτό, ώρα ή ημέρα σε όλη την ιστορία του Bitcoin. Μη διστάσετε να αντιγράψετε τον κώδικα που παρουσιάζω και να τον προσαρμόσετε στους δικούς σας στόχους.

Εφαρμογή Ιστού 1: λάβετε οποιαδήποτε ανταλλαγή σε πραγματικό χρόνο

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

Η απλή πρόσβαση σε αυτόν τον σύνδεσμο στο API του CryptoCompare επιστρέφει τη συναλλαγματική ισοτιμία του Bitcoin (BTC) σε USD ακριβώς τη στιγμή που πραγματοποιείτε την κλήση:

https://min-api.cryptocompare.com/data/price?fsym=BTC&tsyms=USD

Ομοίως, αυτό το άλλο παράδειγμα σας δίνει τη συναλλαγματική ισοτιμία του Ethereum (ETH) σε ευρώ τη στιγμή της κλήσης:

https://min-api.cryptocompare.com/data/price?fsym=ETH&tsyms=EUR

Εύκολο, έτσι δεν είναι; Λοιπόν, βασιζόμενος σε αυτό, ο παρακάτω κώδικας επιστρέφει οποιαδήποτε μετατροπή ζητήσετε (σε αυτό το παράδειγμα BTC σε USD) κάθε 10 δευτερόλεπτα, σε μια μικρή ιστοσελίδα που μπορείτε να κάνετε ιδιωτική για να ακολουθήσετε τις αγαπημένες σας τιμές στον δικό σας ιστότοπο:

Μπορείτε να αντιγράψετε και να επικολλήσετε αυτόν τον κώδικα σε ένα αρχείο .html και στη συνέχεια να τον φορτώσετε με το πρόγραμμα περιήγησής σας, για να τον δείτε να εκτελείται. Ή αν αισθάνεστε τεμπέλης, απλώς ανοίξτε αυτό το παράδειγμα επίδειξης στον ιστότοπό μου:

https://lucianoabriata.altervista.org/tests/cryptogames/getBTC-realtime.html

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

Εφαρμογή Ιστού 2: λήψη ιστορικών δεδομένων

Τι γίνεται όμως αν θέλετε να λάβετε δεδομένα πριν ξεκινήσει η ιστοσελίδα; Λοιπόν, θα μπορούσατε να μεταβείτε σε εξειδικευμένους ιστότοπους και να κάνετε λήψη αυτών των δεδομένων. Ωστόσο, διαπίστωσα ότι οι εύχρηστοι ιστότοποι παρέχουν μόνο μερικά δεδομένα. Για παράδειγμα, τα δεδομένα BTC στο Yahoo Finances ξεκινούν στις 17 Σεπτεμβρίου 2014 και τα αρχεία τους είναι μηνιαία, εβδομαδιαία ή ημερήσια, αλλά όχι ωριαία ή ανά λεπτό. Επιπλέον, εάν αναπτύσσετε ένα σύστημα που πρέπει να ενημερώνεται αυτόματα, η μη αυτόματη λήψη δεδομένων είναι εκτός συζήτησης… χρειάζεστε πρόσβαση μέσω προγραμματισμού.

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

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

https://min-api.cryptocompare.com/data/v2/histohour?fsym=ETH&tsym=USD&limit=20&toTs=-1&api_key=YOURKEYHERE

Η έξοδος είναι αναλύσιμη σε μορφή JSON. Μοιάζει με αυτό:

Σημεία που πρέπει να προσέξετε στη διεύθυνση URL για την κλήση API (τα οποία θα χρησιμοποιήσουμε στη συνέχεια μέσα σε μια συνάρτηση javascript fetch():

  1. toTs=-1 σημαίνει ότι θέλετε δεδομένα μέχρι τη στιγμή που εκτελείται η κλήση.
  2. περιορίσει είναι ο αριθμός των γραμμών που θέλετε.
  3. Πρέπει να δώσετε ένα κλειδί API.

Με το δωρεάν κλειδί API (πάρτε το στο σελίδα τεκμηρίωσης; και ναι, μπορείτε να αγοράσετε κλειδιά με πιο προηγμένες λειτουργίες) έχετε περιορισμένο αριθμό κλήσεων που μπορείτε να κάνετε και κάθε κλήση θα σας δίνει μόνο έως 2000 καταχωρήσεις. Έτσι, για παράδειγμα, εάν ζητήσετε, ας πούμε, τις ωριαίες ισοτιμίες για BTC σε USD, το μέγιστο που θα λάβετε είναι 2000 λεπτά προς τα πίσω από τον χρόνο που ζητήθηκε, που σημαίνει περίπου 33 ώρες, δηλαδή λίγο περισσότερο από μία ημέρα. Ή αν ζητήσετε ωριαία δεδομένα, θα λάβετε το πολύ δεδομένα για 83.33 συνεχόμενες ημέρες, λίγο λιγότερο από 3 μήνες. Ωστόσο, αυτό δεν είναι πραγματικά μεγάλο πρόβλημα, επειδή μπορείτε να επαναλάβετε το API προς τα πίσω στον χρόνο όσες φορές χρειάζεστε για να καλύψετε το χρονικό διάστημα που σας ενδιαφέρει. Για παράδειγμα, για να λάβετε τα καθημερινά δεδομένα BTC μέχρι την αρχή, χρειάζεστε λίγο πάνω από 4000 πόντους (ημέρες) από τον Αύγουστο του 2021 όταν γράφτηκε αυτή η ιστορία. Αυτό σημαίνει ότι χρειάζεστε μόνο 3 συνεχόμενες κλήσεις. Και αν θέλετε ωριαία δεδομένα για την ίδια περίοδο, είστε μετά από περίπου 98400 πόντους, που καλύπτονται από 50 συνεχόμενες κλήσεις.

Επιτρέψτε μου να σας δείξω αυτήν την εφαρμογή ιστού, με την οποία μπορείτε να ζητάτε ημερήσια ιστορικά δεδομένα για οποιαδήποτε συναλλαγματική ισοτιμία σε USD:

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

Σημειώστε ότι πρέπει να καλέσετε το API δύο φορές: μία φορά μέσα στη συνάρτηση που ζητά μια λίστα με καταχωρήσεις δεδομένων μέχρι τη στιγμή της εκτέλεσης (getBtcData, εκτελείται όταν ο χρήστης κάνει κλικ στο "Λήψη πιο πρόσφατων δεδομένων" και επίσης αυτόματα κατά τη φόρτωση) και άλλη μία για η συνάρτηση που επιστρέφει δεδομένα πριν από μια δεδομένη ώρα (getBtcDataPrevious). Σημειώστε επίσης ότι οι συναρτήσεις ενημερώνουν αυτόματα τους χρόνους Από και Προς, οι οποίοι εμφανίζονται σε ακατέργαστη σειριακή μορφή και επίσης μετατρέπονται σε μορφή αναγνώσιμη από τον άνθρωπο από τη συνάρτηση serialDateToNiceDate.

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

Βλέποντας κάποια ιστορικά στοιχεία

Όπως είπα στην εισαγωγή, ήμουν πολύ πρόθυμος να πάρω δεδομένα σχετικά με τη χρονική εξέλιξη των ανταλλαγών BTC:USD από τη δημιουργία του Bitcoin. Με μια μικρή επεξεργασία στην εφαρμογή Ιστού που εμφανίζεται παραπάνω (απλά αλλάζοντας το "histohour" με "histoday"), λαμβάνετε μια εφαρμογή που επιστρέφει καθημερινά αρχεία. Στη συνέχεια, με τρία κλικ στο «Λήψη προηγούμενης περιόδου» λαμβάνετε όλα τα ημερήσια δεδομένα για το Bitcoin, από τον Ιούλιο του 2010 μέχρι τώρα.

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

Η πλοκή δείχνει πέντε βασικούς χρόνους ανόδου: έναν στα τέλη του 2013, έναν ισχυρότερο στα τέλη του 2017 – αρχές του 2018 που ακολουθείται από έναν άλλο το 2019 και, στη συνέχεια, έναν ισχυρότερο κατά το πρώτο εξάμηνο του 2021 που ακολουθείται από μια νέα ταχεία αύξηση που συμβαίνει αυτή τη στιγμή.

Είναι ενδιαφέρον πώς τα μέγιστα που παρατηρούνται σε αυτήν την γραφική παράσταση αντιστοιχούν κατά προσέγγιση με το ενδιαφέρον με την πάροδο του χρόνου, όπως μετράται από το Google Trends:

Μια άλλη γραφική παράσταση των ανακτημένων δεδομένων ανταλλαγής BTC:USD, πιο ενδιαφέρουσα από αυτή που κάναμε παραπάνω, είναι αυτή όπου η τιμή αντιμετωπίζεται σε λογαριθμική μορφή (εδώ συνδεθείτε στη βάση 10):

Αυτός ο μετασχηματισμός του ημερολογίου εντοπίζει πιο καθαρά τις ανοδικές φάσεις. Ελέγξτε ότι τα σχετικά ύψη κορυφής από τη βάση προς την κορυφή είναι αρκετά διαφορετικά και φαίνεται να μειώνονται αργά: η πρώτη κύρια κορυφή συνεπάγεται κέρδος περίπου 1.5 τάξεων μεγέθους (περίπου 30Χ). το δεύτερο, το τρίτο και το τέταρτο είναι περίπου 1 τάξη μεγέθους (περίπου 10Χ) και το τελευταίο περίπου μόνο 0.5 τάξεις μεγέθους (περίπου 3.2Χ). Έτσι, παρά το γεγονός ότι τα ιστορικά μέγιστα είναι πολύ υψηλά, οι πιθανότητες τεράστιων κερδών μειώνονται σταδιακά για τους ανθρώπους που επενδύουν αργότερα. Αν και είναι πολύ αργά για να γίνετε πλούσιοι με Bitcoin, η συνολική τάση της συναλλαγματικής ισοτιμίας BTC:USD φαίνεται να δείχνει ότι μπορεί να συνεχίσει να αυξάνεται για κάποιο χρονικό διάστημα (δεν σας λέμε να αγοράσετε εδώ, απλώς προβάλλοντας αφελώς την πλοκή):

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

Συμπέρασμα και επιλεγμένη περαιτέρω ανάγνωση

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

Πηγή: https://towardsdatascience.com/obtaining-historical-and-real-time-crypto-data-with-very-simple-web-programming-7b481f153630?source=rss——-8—————–cryptocurrency

Σφραγίδα ώρας:

Περισσότερα από Μέτριας Δυσκολίας