Innhenting av historiske og sanntids kryptodata med svært enkel webprogrammering PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Å skaffe historiske og sanntids kryptodata med veldig enkel webprogrammering

Luciano Abriata

Mens jeg lærte om kryptovalutaer, trengte jeg desperat data som jeg kunne manipulere selv for å gjøre mine egne plott og analyser. Her viser jeg deg hvordan du enkelt får sanntids og historiske kryptodata rett i nettleseren din med minimale programmeringskunnskaper. Kildekode, lenker og noen grunnleggende plott og analyser inkludert.

Ansvarsfraskrivelse: Du finner ingen økonomisk rådce her og jeg er ingen ekspert på kryptovaluta, kryptoart, NFT-er, deres handel osv. Jeg gir bare bort gratis HTML+JavaScript-kode for å få data gjennom API-kall til CryptoCompare.com; og jeg viser noen plott avledet fra disse dataene med noen av mine egne subjektive meninger.

Jeg har nylig blitt interessert i kryptovalutaer, kryptoart, NFT-er, osv. Naturligvis, som en forsker som jobber med data hele tiden, var noe av det første jeg ønsket å gjøre å leke med kryptovalutadata selv. Jeg så plott overalt på nettsteder, nyheter og apper; men hvordan kunne jeg få tak i faktiske data for å leke med dem og gjøre mine egne plott og undersøkelser? Og spesielt, hvordan kunne jeg være sikker på at den var oppdatert hver gang jeg ba om den?

Nærmere bestemt, det første jeg ønsket å legge hendene på var valutakursene mellom ulike krypto- og Fiat-valutaer. Jeg fant ut at nettstedet CryptoCompare.com tilbyr en fin API, gratis for et lite antall samtaler, som gir programmatisk tilgang til data fra basen. Jeg fant også på nettet forskjellige deler av JavaScript-kode som jeg satte sammen til to veldig enkle nettapper: en for å få oppdateringer av BTC-USD valutakurser hvert 10. sekund; og en annen for å hente historiske BTC-USD valutakurser hvert minutt, time eller dag gjennom hele Bitcoins historie. Kopier gjerne koden jeg presenterer og tilpass den til dine egne mål.

Nettapp 1: få utveksling i sanntid

Selvfølgelig kan du åpne et hvilket som helst nettsted eller app for kryptovaluta og få dette nummeret derfra, men anta at du alltid vil ha det for hånden og oppdateres automatisk, eller kanskje du vil ha det matet automatisk til et beregningssystem du utvikler.

Enkel tilgang til denne lenken på CryptoCompares API returnerer valutakursen til Bitcoin (BTC) i USD akkurat i det øyeblikket du ringer:

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

På samme måte gir dette andre eksemplet deg valutakursen til Ethereum (ETH) i EUR i øyeblikket for samtalen:

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

Lett, ikke sant? Vel, basert på det, returnerer følgende kode hvilken konvertering du ber om (i dette eksempelet BTC i USD) hvert 10. sekund, på en liten nettside som du kan gjøre privat for å følge favorittprisene dine på ditt eget nettsted:

Du kan kopiere og lime inn denne koden i en .html-fil og deretter laste den inn med nettleseren din for å se at den kjører. Eller hvis du føler deg lat, bare åpne dette demoeksemplet på nettstedet mitt:

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

Du kan enkelt utvikle det videre til en nettapp som hele tiden holder styr på eventuelle valutakurser, til og med lagre den i et plott for visualisering mens du er på farten eller i en variabel for nedlasting.

Nettapp 2: få historiske data

Men hva om du ønsker å få data før nettsiden startes? Vel, du kan gå til spesialiserte nettsteder og laste ned disse dataene; Jeg fant imidlertid ut at nettsteder som er enkle å bruke, bare gir delvise data. For eksempel starter BTC-data hos Yahoo Finances 17. september 2014, og dens registreringer er månedlige, ukentlige eller daglige, men ikke si time eller per minutt. Dessuten, hvis du utvikler et system som må oppdateres automatisk, er manuell datanedlasting ute av diskusjon ... du trenger programmatisk tilgang.

Heldigvis inkluderer CryptoCompares API måter å hente historiske data tidsbestemt i minutter, timer eller dager. Ikke bare valutakurser, men også andre beregninger som valutavolum. For å vite mer om API se dokumentasjonen og les følgende.

Et API-kall som i dette eksemplet vil gi deg data for de siste 20 timene, time for time:

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

Utdataene kan parseres i JSON-format. Det ser slik ut:

Punkter å legge merke til i URL-en for API-kallet (som vi neste gang skal bruke i en fetch()-javascript-funksjon):

  1. toTs=-1 betyr at du vil ha data frem til det øyeblikket samtalen utføres.
  2. begrense er antall linjer du ønsker.
  3. Du må oppgi en API-nøkkel.

Med den gratis API-nøkkelen (hent den på dokumentasjonsside; og ja, du kan kjøpe nøkler med mer avanserte funksjoner) du er begrenset i det totale antallet samtaler du kan gjøre, og hver samtale vil gi deg bare opptil 2000 oppføringer. Så hvis du for eksempel ber om timekursene for BTC i USD, er det maksimale du vil få 2000 minutter bakover fra det anmodede tidspunktet, som betyr rundt 33 timer, dvs. litt over en dag. Eller ber du om timedata, får du på det meste data for 83.33 sammenhengende dager, i underkant av 3 måneder. Dette er imidlertid egentlig ikke et stort problem, fordi du kan gjenta API-en bakover i tid så mange ganger du trenger for å dekke tidsgapet du er interessert i. For å få daglige BTC-data tilbake til opprinnelsen trenger du for eksempel litt over 4000 poeng (dager) i august 2021 da denne historien ble skrevet. Dette betyr at du bare trenger 3 anrop på rad. Og ønsker du timedata for samme periode er du ute etter rundt 98400 poeng, som dekkes av 50 påfølgende samtaler.

La meg vise deg denne nettappen, med hvilken du kan be om daglige historiske data for enhver valutakurs til USD:

Koden kan se litt komplisert ut, men den kan være mye enklere. Saken her er at jeg opprettet et helt grensesnitt for å la brukeren velge i hvilket tidsrom for å hente dataene, og deretter sette sammen resultatene fra påfølgende anrop i en tekstboks for enkel kopiering:

Merk at du må kalle API-en to ganger: én gang inne i funksjonen som krever en liste over dataoppføringer frem til utførelsesøyeblikket (getBtcData, kjør når brukeren klikker på "Få siste data" og også automatisk ved lasting) og en annen for funksjonen som returnerer data før et gitt tidspunkt (getBtcDataPrevious). Legg også merke til at funksjonene automatisk oppdaterer Fra- og Til-tidene, som vises i råserieformat og også konverteres til lesbar form av funksjonen serialDateToNiceDate.

Etter å ha lastet inn siden, eller klikket på "Få siste data" blir tekstboksen til høyre fylt med de siste 2000 timeoppføringene, og Fra- og Til-tidene oppdateres. Du kan deretter be om 2000 linjeblokker med data fra de foregående periodene ved å klikke på "Hent forrige periode". De innkommende linjene vil bli lagt til tekstboksen, og beholde den historiske rekkefølgen.

Ser på noen historiske data

Som jeg sa i introduksjonen, var jeg veldig ivrig etter å få data om tidsutviklingen til BTC:USD-børser siden etableringen av Bitcoin. Med en liten redigering av nettappen vist ovenfor (bare endre "histohour" med "histoday"), får du en app som returnerer daglige poster. Så med tre klikk på "Få forrige periode" får du hele daglige data for Bitcoin, fra og med juli 2010 og frem til nå.

La oss lage noen plott av disse dataene. Først bare valutakursen over tid, et plot som du ser i de fleste apper, nettsteder og nyheter:

Plottet viser fem viktige oppetider: en rundt slutten av 2013, en sterkere rundt slutten av 2017 – begynnelsen av 2018 fulgt av en annen i 2019, og deretter en sterkere i løpet av første halvdel av 2021 etterfulgt av en ny rask økning akkurat nå.

Det er interessant hvordan maksima observert i det plottet omtrent samsvarer med interessen over tid målt av Google Trender:

Et annet plott av våre hentede BTC:USD-utvekslingsdata, mer interessant enn det vi gjorde ovenfor, er dette hvor prisen behandles i logaritmisk (logg inn base 10 her):

Denne loggtransformasjonen oppdager opp-fasene tydeligere. Sjekk at de relative topphøydene fra base til topp er ganske forskjellige, og ser ut til å dempe sakte: den første hovedtoppen innebærer en gevinst på omtrent 1.5 størrelsesordener (rundt 30X); den andre, tredje og fjerde er rundt 1 størrelsesorden (rundt 10X), og den siste rundt bare 0.5 størrelsesorden (rundt 3.2X). Til tross for at de historiske maksima blir svært høye, reduseres sjansene for store fortjenester gradvis for folk som investerer senere. Selv om det da er for sent å bli rik med Bitcoin, ser den generelle trenden i BTC:USD-kursen ut til å indikere at den fortsatt kan vokse i en stund (ikke forteller deg å kjøpe her, bare naivt ekstrapolert fra plottet):

Disse loggplottene inneholder mye mer data, som andre har analysert i de følgende bloggartiklene. Ikke som ekspert kan jeg ikke bedømme dem, men de er absolutt veldig interessante:

Konklusjon og valgt videre lesning

Jeg håper du vil ha det gøy å bruke disse og avledede skriptene for å få og leke med kryptodata. Hele dette feltet er veldig interessant, og når jeg undersøkte kryptovalutaer de siste to årene, har jeg lest tonnevis av artikler, historier og innlegg, hvorav jeg har destillert disse for deg å fortsette herfra, hovedsakelig fra Medium og tilhørende publikasjoner:

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

Tidstempel:

Mer fra Medium