Wo finde ich Crypto Coin-Daten?

Ich suche nach Quellen für Kryptowährungsdaten, vorzugsweise historische, die ich verwenden kann, um meine Bots zu testen und/oder den Markt zu analysieren.

Gibt es dazu im Netz eine seriöse Quelle? Bieten Börsen zufällig historische Daten an?

Wenn nicht, wie erhalte ich diese Daten?

Antworten (6)

Erfassung von Daten

Sie haben hier zwei Möglichkeiten:

  1. Sehen Sie sich online einen der Datenanbieter an . Quandl bietet (meistens) kostenlose historische Daten für eine Vielzahl von Paaren und Börsen an. Wenn Sie Geld übrig haben, bietet Coinigy alternativ hochwertige Datensätze zu einem monatlichen Preismodell an.
  2. Führen Sie Ihren eigenen Daten-Crawler durch, indem Sie eine Programmiersprache Ihrer Wahl und die verschiedenen für den Austausch verfügbaren APIs verwenden.

Ich werde die beiden Optionen weiter unten besprechen.


Erfassen von Daten von einem Datenanbieter

Natürlich ist diese Option die bequemste, aber möglicherweise auch die teuerste, abhängig von Ihrer gewünschten Datenqualität. Es gibt auch keine Garantie dafür, dass die gesuchte Börse, das Paar und/oder der Zeitbereich in der Datenbank vorhanden sind.

Um zusammenzufassen:

Profi:

  • Am wenigsten zeitaufwändig
  • Die Daten werden wahrscheinlich bereinigt und formatiert
  • Viele Datenanbieter bieten ein einheitliches Layout von Daten über mehrere Datensätze hinweg, sodass sie einfach verglichen werden können.

Nachteile:

  • Bezahlte Daten sind für Bastler teuer (Marktdaten bei Coinigy liegen zum Zeitpunkt des Schreibens bei 30 $ / Monat)
  • Kostenlose Daten werden oft so bereitgestellt, wie sie sind, sodass Sie Bereinigungs- und Nachbearbeitungsaufgaben erledigen müssen
  • Wenn Daten bereinigt werden, können Artefakte ohne Ihr Wissen auftreten, die Ihre Forschungsergebnisse beeinträchtigen.

Rollen Sie Ihren eigenen Daten-Crawler

Mit nur wenig Erfahrung in der Programmierung und einem grundlegenden Verständnis der Funktionsweise einer API können Sie schnell Ihr eigenes Datenerfassungstool einrichten. Es gibt natürlich unterschiedliche Schwierigkeitsgrade, aber im Kern ist die Sache ganz einfach:

  1. Wählen Sie eine Börse
  2. Wählen Sie eine API aus
  3. Haken Sie sich mithilfe von Code-Wizards in die API ein
  4. Beginnen Sie mit dem Herunterladen von Daten

Ich werde Sie durch die notwendigen Schritte führen (ohne den Code – ich denke, dies ist ein Thema für einen anderen StackExchange; ich werde Sie jedoch mit Bibliotheken verlinken, die Ihnen den Einstieg erleichtern).

1. Wählen Sie eine Börse aus

Ich vermute, Sie haben Ihre Nachforschungen angestellt und werden daher nur auf einige Dinge hinweisen, wenn Sie die Börsen berücksichtigen, für die Sie Daten abrufen möchten:

  • Stellen Sie sicher, dass sie über stabile Server und Verbindungen verfügen (Exchanges in Asien, auf die beispielsweise von Europa aus zugegriffen wird, haben notorisch instabile Verbindungen). Andernfalls haben Sie überall in Ihren Daten Schlaglöcher, die sie vielleicht sogar unbrauchbar machen.
    • Wenn Sie die Daten unbedingt benötigen, sollten Sie erwägen, einen Server näher am physischen Standort des Exchange-Serverzentrums zu mieten.
  • Stellen Sie sicher, dass sie ein aussagekräftiges Volumen haben . Wenn im Laufe eines bestimmten Zeitraums nur wenig Volumen den Besitzer wechselt (normalerweise ist die 24-Stunden-Volumenmetrik immer verfügbar), ist der Austausch wahrscheinlich keine sehr gute Wahl. Es verzerrt das Bild des Marktes.
  • Testen Sie zuerst den Kundensupport . Wenn Sie ihre Hilfe einige Zeit später beim Crawlen benötigen, kann ein großartiges Support-Personal den Unterschied ausmachen. Außerdem gibt es Ihnen einen kleinen Hinweis auf die Qualität der Austauschinfrastruktur.

2. Wählen Sie einAPI

Die Wahl der richtigen Anwendungsprogrammierschnittstelle ( API) hängt von 2 Dingen ab:

  1. Wie granular müssen Ihre Daten sein,

und

  1. was APIdie Börse zu bieten hat (offensichtlich).

REST APIs

Wenn Sie beispielsweise mit 1-Minuten-Snapshots von Daten (z. B. Ticker, Auftragsbücher, Trades usw.) zufrieden sind, reicht das Anfordern von Daten über eine Representational State Transfer (REST) ​​API aus. Auf diese Weise können Sie eine Anfrage an eine bestimmte URL senden httpund eine Antwort mit den angeforderten Daten (normalerweise im JSON-Format) erhalten.

Das Praktische an RESTAPIs ist, dass sie börsenübergreifend meist gleich funktionieren – Anfragen werden gesendet, Antworten empfangen und Daten von Ihnen ausgewertet. POSTBei einigen Börsen müssen Sie anstelle der üblichen GETAnfragen andere Anfragemethoden (z. B. ) verwenden. Dies ist jedoch normalerweise nur für private Endpunkte erforderlich (privat bedeutet, dass Sie sich zuerst authentifizieren müssen, bevor Sie Daten wie Ihren Kontostand usw. erhalten). Wenn Sie also nur nach Marktdaten suchen, sollten Sie ihnen nicht oft begegnen.

Eine Einschränkung von RESTAPIs besteht darin, dass sie normalerweise ein Anforderungslimit aufweisen. Das am häufigsten gesehene Limit ist 60 requests per minute, kann aber strenger sein (oder lockerer – Bitfinex erlaubt unbegrenzt requestspro Minute). Einige Börsen verwenden auch einen Anfragezähler – das bedeutet, dass bestimmte Anfragen Ihren IP-verbundenen Zähler um einen bestimmten Wert erhöhen. Abhängig von Ihrem Status bei der Börse verringert sich dieser Zähler im Laufe der Zeit um einen vorher festgelegten Wert.

Darüber hinaus (wenn Sie denken: „Nun, hey! Warum dann nicht jede Sekunde Daten abrufen?“), werden Marktdaten häufig zwischengespeichert. Ein Snapshot eines API-Endpunkts wird für ein festgelegtes Intervall gespeichert, bevor er serverseitig tatsächlich aktualisiert wird. Sie können also jede Sekunde eine Anfrage senden, aber dennoch identische Daten erhalten, bis der Server-Cache aktualisiert wird.

WS APIs

Die APIs WebSocket ( WS) und WebSocketSecure ( WSS) sind Vollduplexverbindungen, die es dem Benutzer ermöglichen, nahezu in Echtzeit Aktualisierungen von einem oder mehreren APIEndpunkten zu erhalten, die er abonniert hat. Vollduplex bedeutet einfach, dass Sie nicht nur Daten empfangen, sondern auch Daten an die WebSocketVerbindung senden können. Dies ist vor allem nützlich, wenn Sie einen Bot ausführen, der in Ihrem Namen handeln soll, da das Feedback normalerweise schneller ist.

Im Prinzip öffnen Sie eine Verbindung zur WSAPI und abonnieren die Endpunkte, auf denen Sie Daten haben möchten. Typischerweise wird dies nach Endpunkt und Paar getrennt, aber konsultieren Sie unbedingt die APIDokumentation - einige Börsen verwenden kein channel subscriptionModell, und die Daten werden ohne weitere Konfiguration direkt überflutet.

Die Implementierung von WebSockets reicht von trivial bis komplex. Erwarten Sie also, dass Sie einige Nachforschungen darüber anstellen, wie Sie auf einige der WSAPIs der Börsen zugreifen können. Während das prinzipielle System bei allen identisch bleibt, verwenden viele Vermittlungsstellen unterschiedliche Protokolle und/oder Dienste, um ihre Daten bereitzustellen – zum Beispiel das WAMPProtokoll und Pusher, die eine zusätzliche Ebene der Komplexität hinzufügen, da sie einen bestimmten Client für die Verbindung benötigen.

Wenn Sie jedoch Tick-by-Tick-Daten benötigen, z. B. für die Erstellung von Auftragsbüchern in Echtzeit, ist dies das, was Sie verwenden möchten.

FIX APIs

Das Financial Information eXchange( FIX)-Protokoll ist ein 1992 eingeführter Standard , der heute häufig von Institutionen und Maklern auf den Finanzmärkten verwendet wird. Es ist bei weitem am wenigsten APIan Börsen verfügbar, und noch weniger senden tatsächlich Marktdaten. Es wird am häufigsten verwendet, um Bestellungen aufzugeben oder zu stornieren (z. B. bei CoinbasePro ). Einige Börsen bieten jedoch Echtzeit-Marktdaten über FIX an.

Denken Sie daran, dass Sie umfassende Kenntnisse des FIX-Protokolls benötigen, z. B. zum Einrichten einer FIX-Engine und von Proxys, um sich mit der Börse zu verbinden. Hierfür können in einigen Fällen monatlich wiederkehrende Gebühren anfallen.

3. Haken Sie sich mit Code in die API ein

Je nachdem, welche API Sie gewählt haben und welche Programmiersprache Sie verwenden möchten, haben Sie eine Vielzahl von Optionen.

Viele Börsen stellen Client-Bibliotheken für ihre APIs bereit, einige wurden vom Entwicklerteam der Börse selbst entwickelt, andere werden von Benutzern beigesteuert (die normalerweise vom Entwicklerteam überarbeitet werden, bevor sie auf der Website der Börse zitiert werden).

Es gibt viele andere Bibliotheken für wahrscheinlich jede Sprache (z. B. BitEx für Python 3.x (um sich schamloser Eigenwerbung hinzugeben), das Kernmethoden über eine Vielzahl von REST APIs hinweg vereinheitlicht, sowie einige WebSocket APIs) .

Da ich selbst Python-Entwickler bin, kann ich die Verwendung nur empfehlen. Vor allem, wenn man nicht an eine Umgebung gebunden ist. Über die requestsBibliothek können Sie beispielsweise ganz einfach eine Börse abfragen:

import requests

# Get a list of all asset pairs at Kraken.com 
print(requests.get('https://api.kraken.com/0/public/AssetPairs').json())

4.Starten Sie das Herunterladen von Daten

Sobald Sie Ihre Daten-Crawler eingerichtet haben, müssen Sie sie freigeben! Ich persönlich betreibe den REST-Crawler über cronJobs und WebsocketCrawler als daemons. Aber das liegt an Ihnen.

Es wird natürlich einige Zeit dauern, bis Sie einen aussagekräftigen Datensatz erhalten, aber leider bezahlen Sie entweder mit Geld oder mit Zeit für die gewünschten Daten.

Nützliche Links

API-Referenzen

Datenquellen

Fühlen Sie sich frei, diesen Inhalt in den Kommentaren unten hinzuzufügen, zu korrigieren oder zu aktualisieren! Vielen Dank.

positiv bewertet! Irgendwelche Vorschläge, wie man mit Websocket-Clients in Python umgeht, wenn man Echtzeitdaten von sagen wir einer oder mehreren dieser APIs haben möchte. Ich bin ein Neuling und ziemlich überwältigt von den verfügbaren Optionen 1) Tornado 2) Twisted Asyncio 3) Asyncio 4) Socket_io Client 5) Gevent 6) Eventlet 7) Threading mit Ereignisschleifen pro Thread, was wäre der richtige Weg, Streams abzurufen Aus mehreren Quellen für Ihre Flaschen-App verwende ich bereits Sellerie, danke für die Antwort im Voraus!
Es hängt ein wenig von der API und dem verwendeten Protokoll ab (Pusher, reines wss, WAMP usw.), aber im Allgemeinen habe ich mich für das entschieden, was für den Einstieg am einfachsten war. Ich habe die meiste Zeit die Websocket-Client-Bibliothek verwendet, da diese die Arbeit für mich gut genug erledigt. Jeder der Clients läuft in einem separaten Prozess und ich ziehe alles mit ZMQ zusammen. Was Sie tun sollten: Würfeln Sie? :D Sie sind alle eine gute Wahl.
Danke für die detaillierten Informationen :) Abstrahiert der Javascript-Socket-IO-Client die zugrunde liegenden Details von Wamp Pusher und purem WSS, weil ich schwöre, dass ich diese heute zum ersten Mal höre, besonders wenn ich versuche, Sachen mit Python zu machen, wenn es nicht zu viel ist Fragen Sie, gibt es einen Verweis auf diesen Code online, von dem Sie sprechen, der mehrere Prozesse und zmq verwendet, Stunden auf Github, die unter dem Socketio-Tag oder dem Websocket-Tag suchen, hat nichts Positives ergeben, es gibt ein paar Socketio-Clients auf Python Ich habe recherchiert und bin mir nicht sicher, ob sie kampferprobt sind, danke
Da ich socket.io nicht verwendet habe, weiß ich es nicht - aber im Prinzip sind WSS und Pusher nur Protokolle - sie laufen immer noch über Websockets, erfordern aber ein bestimmtes Verfahren bei der Interaktion mit der API. github.com/Crypto-toolbox/Thoth hat einen Pusher und einen WSS-Client und verwendet zmq, um die Daten anzubieten. Normalerweise gibt es jedoch ein paar Bibliotheken, die auf der API-Doc-Site der jeweiligen Börse verlinkt sind und funktionierende Clients anbieten.
vielen Dank für das Teilen des Links! Ab sofort erwäge ich, die Daten in node.js abzurufen, da der Socket io-Client auf dem Knoten offiziell und viel kampferprobter ist als die Python-Clients. Ich könnte mich jedoch irren. Meine Idee war, die Daten erneut zu veröffentlichen, aber nicht mehr reine Neugier, wie sammeln Sie die Daten aus Streams? Ich gehe davon aus, dass Festplattenschreibvorgänge eine Menge Latenz bedeuten würden, Redis würde selbst 200 ms dauern und wie Sie den Fall angehen, in dem beispielsweise die Steckdose unter hoher Last für einige Minuten getrennt wird
Ich verbinde mich mit dem WSS und verwende ZMQ mit einem Pub/Sub-Muster, bei dem Abonnenten einen Load Balancer haben (mehrere Worker zur Verarbeitung eingehender Streams). Ich schreibe Daten auf die Festplatte, aber ich tue dies in einem Intervall, das durch 400 KB zwischengespeichert oder 5 Minuten seit dem letzten Schreiben definiert ist, je nachdem, was zuerst eintritt. Verbindungsabbrüche sind mir egal - Wenn Daten fehlen, kann ich sowieso nichts dagegen tun, obwohl ich bisher nicht den Fall hatte, dass meine Steckdose wegen hoher Last getrennt wurde, da sie nur weiterleitet.
Ich wünschte, ich könnte diese Kommentare mehr als einmal positiv bewerten! Wenn Sie Arbeiter sagen, gehe ich davon aus, dass Arbeiter vom Typ Sellerie in der Lage sind, sich selbst neu zu starten usw. Welche Sprache bevorzugen Sie persönlich zum Abrufen der Socket-Daten (Knoten, Python) Python scheint mehr als in der Lage zu sein, die Daten mit Pandas zu verarbeiten und was nicht aber scheint ein bisschen eingeschränkt zu sein, wenn es darum geht, Socket-Client-Streams zu akzeptieren, vielleicht irre ich mich
Ja, man kann sie mit Selleriearbeitern vergleichen. Und ich benutze Python - letztendlich spielt es aber keine Rolle. ZMQ ist ziemlich sprachunabhängig und hat Wrapper für alle Arten von Sprachen - ich bin hauptsächlich bei Python geblieben, weil ich täglich damit arbeite.

Sie können die historischen Daten von coinmarketcap.com mit meinem entwickelten Crawler herunterladen: https://github.com/roNn23/coinmarketcap-historical-data-crawler . Aber es werden nur die Schnappschüsse von coinmarketcap.com angezeigt , vielleicht ist es zu breit für Ihre Bedürfnisse.

Sie können meine Website www.cryptodatasets.com verwenden , die genau das bietet, was Sie brauchen. Tick ​​für Tick historische BTC-, ETH- und LTC-Preise und -Volumen von Bitfinex und Hitbtc. Es ist genau das, was ich verwende, um meine Strategien/Bots zu testen.

sauber! Planen Sie, die verfügbaren Börsen zu erweitern?
Absolut, ich arbeite in meiner Freizeit daran!

Richten Sie einfach eine Website cryptoarchive.com.au mit den Datensätzen ein, die ich für meine eigene Modellierung verwende. Eine Minute OHLVC-Daten sind kostenlos verfügbar, Daten auf Tick-Ebene - sehr günstig. Daten von Binance vorerst.

Historische Daten zu Krypto-Wechselkursen und -Volumen finden Sie unter:

Diese Antwort fügt leider keine neuen Informationen hinzu.

Wenn Sie besonders auf die Qualität der Daten achten, hat Coinscious die genauesten Daten. Sie bieten sowohl historische als auch Echtzeit-Marktdaten über Flatfiles oder API-Zugriff. Ihr Terminal verfügt auch über gute technische Analysen zu verschiedenen Münzen, Börsen und Indikatoren.