Indhentning af historiske og realtids kryptodata med meget enkel webprogrammering PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Indhentning af historiske og realtids kryptodata med meget enkel webprogrammering

Luciano Abriata

Mens jeg lærte om kryptovalutaer, havde jeg desperat brug for data, som jeg selv kunne manipulere til at lave mine egne plots og analyser. Her viser jeg dig, hvordan du nemt får realtids- og historiske kryptodata direkte i din webbrowser med minimale programmeringsevner. Kildekode, links og nogle grundlæggende plots og analyser inkluderet.

Ansvarsfraskrivelse: Du vil ikke finde nogen økonomisk rådgivningce her, og jeg er ingen ekspert i kryptovaluta, cryptoart, NFT'er, deres handel osv. Jeg giver kun gratis HTML+JavaScript-kode væk for at få data gennem API-kald til CryptoCompare.com; og jeg viser nogle plot afledt af disse data med nogle af mine egne subjektive meninger.

Jeg har for nylig interesseret mig for kryptovalutaer, kryptoart, NFT'er osv. Som videnskabsmand, der arbejder med data hele tiden, var en af ​​de første ting, jeg ville gøre, naturligvis selv at lege med kryptovalutadata. Jeg så plots overalt på websteder, nyheder og apps; men hvordan kunne jeg få fat i faktiske data for at lege med dem og lave mine egne plots og undersøgelser? Og især, hvordan kunne jeg være sikker på, at den var opdateret, hver gang jeg anmodede om den?

Helt konkret var det første, jeg ville lægge hænderne på, vekselkurserne mellem forskellige krypto- og Fiat-valutaer. Jeg fandt ud af, at webstedet CryptoCompare.com tilbyder en god API, gratis til et lille antal opkald, der tillader programmatisk adgang til data fra sin base. Jeg fandt også online forskellige stykker JavaScript-kode, som jeg satte sammen til to meget simple webapps: en til at få opdateringer af BTC-USD-kurser hvert 10. sekund; og en anden for at hente historiske BTC-USD-kurser hvert minut, time eller dag gennem hele Bitcoins historie. Kopier gerne den kode, jeg præsenterer, og tilpas den til dine egne mål.

Webapp 1: få enhver udveksling i realtid

Selvfølgelig kan du åbne et hvilket som helst cryptocurrency-websted eller -app og få dette nummer derfra, men antag, at du altid vil have det ved hånden og opdatere automatisk, eller måske vil du have det automatisk ført til et beregningssystem, du er ved at udvikle.

Enkel adgang til dette link på CryptoCompares API returnerer valutakursen for Bitcoin (BTC) i USD lige i det øjeblik, du foretager opkaldet:

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

Ligeledes giver dette andet eksempel dig vekselkursen for Ethereum (ETH) i EUR på tidspunktet for opkaldet:

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

Nemt, er det ikke? Nå, med udgangspunkt i det, returnerer følgende kode uanset hvilken konvertering du beder om (i dette eksempel BTC i USD) hvert 10. sekund på en lille webside, som du kan gøre privat for at følge dine yndlingspriser på din egen hjemmeside:

Du kan kopiere og indsætte denne kode i en .html-fil og derefter indlæse den med din browser for at se den køre. Eller hvis du føler dig doven, skal du bare åbne dette demoeksempel på min side:

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

Du kan nemt udvikle det videre til en web-app, der konstant holder styr på eventuelle valutakurser, endda gemme det i et plot til visualisering på farten eller i en variabel til download.

Webapp 2: Hent historiske data

Men hvad hvis du vil have data, før websiden startes? Nå, du kunne gå til specialiserede websteder og downloade disse data; dog fandt jeg ud af, at brugervenlige websteder kun giver delvise data. For eksempel starter BTC-data hos Yahoo Finances den 17. september 2014, og dets registreringer er månedlige, ugentlige eller daglige, men ikke sige hver time eller pr. minut. Desuden, hvis du udvikler et system, der skal opdateres automatisk, er manuel dataoverførsel ude af diskussion ... du har brug for programmatisk adgang.

Heldigvis inkluderer CryptoCompares API måder at hente historiske data tidsindstillet i minutter, timer eller dage. Ikke kun valutakurser, men også andre målinger såsom vekselmængder. At vide mere om API se dens dokumentation og læs følgende.

Et API-kald som i dette eksempel vil give dig data for de sidste 20 timer, time for time:

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

Outputtet kan parseres i JSON-format. Det ser sådan ud:

Punkter at bemærke i URL'en til API-kaldet (som vi næste gang skal bruge i en fetch() javascript-funktion):

  1. toTs=-1 betyder, at du vil have data frem til det øjeblik, opkaldet udføres.
  2. begrænse er det antal linjer du ønsker.
  3. Du skal angive en API-nøgle.

Med den gratis API-nøgle (hent den på dokumentationsside; og ja, du kan købe nøgler med mere avancerede funktioner) du er begrænset i det samlede antal opkald, du kan foretage, og hvert opkald giver dig kun op til 2000 poster. Så hvis du for eksempel beder om timekurserne for BTC i USD, er det maksimale du får 2000 minutter bagud fra det anmodede tidspunkt, hvilket betyder omkring 33 timer, dvs. lidt over en dag. Eller beder du om timedata, får du højst data i 83.33 sammenhængende dage, knap 3 måneder. Dette er dog egentlig ikke et stort problem, for du kan gentage API'en bagud i tiden så mange gange, som du har brug for, for at dække det tidsgab, du er interesseret i. For eksempel at få daglige BTC-data tilbage, indtil dets oprindelse, har du brug for lidt over 4000 point (dage) i august 2021, da denne historie blev skrevet. Det betyder, at du kun behøver 3 på hinanden følgende opkald. Og ønsker du timedata for samme periode, er du efter omkring 98400 point, som er dækket af 50 på hinanden følgende opkald.

Lad mig vise dig denne webapp, hvormed du kan bede om daglige historiske data for enhver valutakurs til USD:

Koden ser måske en smule kompliceret ud, men den kan være meget enklere. Sagen her er, at jeg oprettede en hel grænseflade for at lade brugeren vælge i hvilket tidsinterval for at få dataene, og derefter sammenkæder resultaterne fra efterfølgende opkald i en tekstboks for nem kopiering:

Bemærk, at du skal kalde API'en to gange: én gang inde i funktionen, der kalder på en liste over dataindtastninger op til udførelsestidspunktet (getBtcData, kør når brugeren klikker på "Hent seneste data" og også automatisk ved indlæsning) og en anden for funktionen, der returnerer data før et givet tidspunkt (getBtcDataPrevious). Bemærk også, at funktionerne automatisk opdaterer Fra- og Til-tiderne, som vises i rå seriel format og også konverteres til menneskelæselig form af funktionen serialDateToNiceDate.

Efter indlæsning af siden eller klik på "Hent seneste data" bliver tekstboksen til højre udfyldt med de sidste 2000 timeindtastninger, og Fra- og Til-tiderne opdateres. Du kan derefter anmode om 2000 linjeblokke med data fra de foregående perioder ved at klikke på "Hent forrige periode". De indkommende linjer vil blive tilføjet til tekstboksen, og bevare den historiske rækkefølge.

Ser på nogle historiske data

Som jeg sagde i introduktionen, var jeg meget ivrig efter at få data om tidsudviklingen af ​​BTC:USD-udvekslinger siden oprettelsen af ​​Bitcoin. Med en lille redigering af webappen vist ovenfor (simpelthen ændring af "histohour" med "histoday"), får du en app, der returnerer daglige rekorder. Så med tre klik på "Hent forrige periode" får du hele daglige data for Bitcoin, startende tilbage i juli 2010 indtil nu.

Lad os lave et par plot af disse data. Først blot valutakursen over tid, et plot, som du ser i de fleste apps, websteder og nyheder:

Plottet viser fem vigtige oppetider: en omkring slutningen af ​​2013, en stærkere omkring slutningen af ​​2017 – begyndelsen af ​​2018 efterfulgt af en anden i 2019, og derefter en stærkere i første halvdel af 2021 efterfulgt af en ny hurtig stigning, der sker lige nu.

Det er interessant, hvordan de observerede maksima i det plot omtrent matcher interessen over tid målt af Google Trends:

Et andet plot af vores hentede BTC:USD-udvekslingsdata, mere interessant end det, vi gjorde ovenfor, er dette, hvor prisen behandles i logaritmisk (her log ind i base 10) form:

Denne logtransformation spotter op-faserne mere tydeligt. Tjek, at de relative tophøjder fra base til top er ret forskellige og ser ud til at være langsomt dæmpende: den første hovedtop indebærer en gevinst på ca. 1.5 størrelsesordener (omkring 30X); den anden, tredje og fjerde er omkring 1 størrelsesorden (omkring 10X), og den sidste omkring kun 0.5 størrelsesorden (omkring 3.2X). På trods af at de historiske maksima bliver meget høje, falder chancerne for enorme overskud gradvist for folk, der investerer senere. Selvom det så er for sent at blive rig med Bitcoin, synes den overordnede tendens i BTC:USD-kursen at indikere, at den stadig kan vokse i et stykke tid (ikke fortæller dig at købe her, bare naivt ekstrapoleret fra plottet):

Disse log-plot indeholder meget mere data, som andre har analyseret i de følgende blogartikler. Da jeg ikke er ekspert, kan jeg ikke bedømme dem, men de er bestemt meget interessante:

Konklusion og udvalgt videre læsning

Jeg håber, du vil have det sjovt med at bruge disse og afledte scripts til at få og lege med kryptodata. Hele dette felt er meget interessant, og i forbindelse med min forskning om kryptovalutaer i de sidste to år har jeg læst tonsvis af papirer, historier og indlæg, hvoraf jeg har destilleret disse, så du kan fortsætte herfra, hovedsageligt fra Medium og tilhørende publikationer:

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

Tidsstempel:

Mere fra Medium