Binance API Serien Teil 1 - Spot Trading mit Postman
Binance API Serien Teil 1 - Spot Trading mit Postman
HomeArtikel

Binance API Serien Teil 1 - Spot Trading mit Postman

Fortgeschritten
Published Jul 13, 2020Updated Jun 1, 2021
13m

Einführung

Das Verständnis und die Verwendung eines API für das Trading mit Krypto-Währungen kann eine Welt von Möglichkeiten eröffnen, wenn es um das Eröffnen und Schließen von Positionen geht. Mit einigen einfachen Programmierkenntnissen können Sie sich mit dem Backend einer Börse verbinden, um Ihre Trading-Strategien zu automatisieren. Indem Sie die Website umgehen, können Sie viel schneller auf die Matching-Engine für Hochleistungsanwendungen zugreifen.

Der Zweck dieser Artikelserie ist es, Ihnen die REST-API von Binance vorzustellen und Ihnen zu vermitteln, wie Sie mit ihr interagieren können. Am Ende sollten Sie die Fähigkeit besitzen, Informationen über die Märkte und Ihre Position abzufragen und eine Reihe von verschiedenen Ordertypen zu platzieren.

In diesem Artikel verwenden wir Postman, um mit der Börse zu kommunizieren. Machen Sie sich keine Sorgen – wir werden keine echten Gelder riskieren.


Voraussetzungen

Testnet-Keys

Wir werden das Testnetz für unsere Zwecke nutzen. Dadurch erhalten wir einige Mittel ohne realen Wert, mit denen wir experimentieren können. Sie funktionieren genauso wie echte Coins und Token, d.h. sobald Sie sich mit der API vertraut gemacht haben, können Sie damit beginnen, sie für den Handel mit echten Geldern zu verwenden.


  1. Beginnen Sie, indem Sie zum Spot Test Network gehen.
  2. Um Zugang zu erhalten, müssen Sie sich mit einem GitHub-Konto anmelden. Erstellen Sie eines, falls Sie dies noch nicht getan haben.
  3. Klicken Sie auf Authenticate und melden Sie sich über GitHub an.
  4. Unter API Keys werden Sie darüber informiert, dass Sie keine Keys registriert haben. Klicken Sie auf Generate HMAC_SHA256 Key, um ein Paar zu erstellen.
  5. Geben Sie auf dem nächsten Bildschirm den Keys eine Bezeichnung. Nennen Sie sie, wie Sie wollen, und drücken Sie Generate
  6. Sie erhalten zwei Keys: den API Key und den Secret Key. Es ist wichtig, dass Sie diese jetzt speichern. Wenn Sie das nicht tun, müssen Sie die Keys erneut generieren. Wir empfehlen, sie als Notiz auf Ihrem Rechner zu speichern, um sie später einfach kopieren und einfügen zu können.
Hinweis: Es lohnt sich, Ihre Keys mit einer Bezeichnung zu versehen, wenn Sie die Börse im Echtbetrieb nutzen, um verschiedene Keys zu verwalten. Ihr Konto kann mehrere Keys mit unterschiedlichen Berechtigungen haben. Wenn Sie mehrere Trading-Bots einsetzen, erleichtert die Verwendung separater Keys mit aussagekräftigen Bezeichnungen die Verwaltung der Berechtigungen oder das Löschen einzelner Keys, ohne alle Ihre Bots zu ändern.


Download und Installation von Postman

Postman ist eine API-Kollaborationsplattform. Sie ist ein perfekter Ausgangspunkt für uns – wir werden Zugang zu verschiedenen Binance-Requests haben, die wir testen werden, ohne dass wir eine einzige Zeile Code schreiben müssen.

Das Programm ist für Mac, Windows und Linux erhältlich. Gehen Sie auf die Seite Downloads und laden Sie die .zip Datei herunter.

Sobald dies abgeschlossen ist, suchen Sie es in Ihrem Datei-Explorer und installieren Sie es. Starten Sie die Anwendung, und es kann losgehen! Beachten Sie, dass Sie ein Konto zum Einloggen erstellen können, dies aber nicht notwendig ist. Wenn Sie diesen Schritt überspringen möchten, wählen Sie einfach die entsprechende Option am unteren Ende des Fensters.


Erstellung der Umgebung

In diesem Stadium sollten Sie über eine Schnittstelle verfügen, die der folgenden ähnelt.



Wir wollen zuerst unsere Umgebung (englisch: Environment) erstellen. Dies ist nur eine Möglichkeit für uns, der Auswahl an Requests, mit denen wir arbeiten werden, Variablen hinzuzufügen. Dazu müssen wir zunächst einige Informationen aus dem GitHub-Repository von Binance abrufen. Die entsprechende .zip Datei können Sie hier herunterladen.



Der Download sollte nicht sehr lange dauern. Finden Sie die Datei in Ihrem Datei-Explorer und entpacken Sie diese. Danach können wir mit Postman fortfahren.



Klicken Sie auf das Zahnradsymbol in der oberen rechten Ecke (siehe Abbildung oben). Sie werden mit dem Manage Environments Popup-Fenster begrüßt. 
  1. Wählen Sie Import, und navigieren Sie zu dem Ordner, den Sie gerade extrahiert haben (binance-postman-api). 
  2. Wählen Sie diesen und dann den Environments-Ordner.
  3. Sie sehen nun zwei Dateien (eine für mainnet und eine für testnet). Die Datei, die wir suchen, ist binance_com_spot_testnet_api.postman_environment.json. Vergewissern Sie sich, dass Sie den richtigen Key haben, denn unsere Keys werden nur für das jeweilige Network funktionieren.



Wir haben es fast geschafft. Klicken Sie auf Binance Spot Testnet API, und Sie werden die Variablen unten sehen. Bearbeiten Sie die beiden rot umrandeten Parameter, indem Sie die zuvor gespeicherten Keys einfügen. Klicken Sie auf Update und verlassen Sie das Popup-Fenster.



Lassen Sie auf diesem Bildschirm die Felder für timestamp und signature leer. Diese beiden Werte werden bei jeder Anfrage automatisch erstellt.

Es gibt noch eine letzte Sache zu tun. Rechts neben dem Zahnradsymbol, auf das wir vorhin geklickt haben, um das Environment einzurichten, sehen Sie ein Dropdown-Menü, auf dem derzeit No Environment steht. Klicken Sie darauf und wählen Sie Binance Spot Testnet API.


Import der Collection

Jetzt werden wir die Collection importieren – dies ist ein umfangreiches Sortiment von Requests, die uns die schwere Arbeit abnehmen, wenn wir API-Calls durchführen. Führen Sie diese Schritte aus, um sie in unsere Umgebung zu laden:

  1. Klicken Sie auf Import in der linken oberen Ecke.
  2. Wählen Sie im Popup-Fenster in dem File Tab die Option Upload Files.
  3. Wir suchen wieder nach dem Ordner binance-postman-api. Finden und öffnen Sie diesen.
  4. Gehen Sie dieses Mal in das Unterverzeichnis "collections".
  5. Es gibt hier wieder zwei Dateien. Die eine ist für die Arbeit mit der Futures-API. Aber wir arbeiten mit der Spot-API, daher müssen Sie die Datei binance_spot_api_v1.postman_collection.json auswählen.
  6. Sie sollten nun einen Bestätigungsbildschirm sehen, der den Import als Format der Postman Collection identifiziert. Wählen Sie Import.

Im Collections Tab auf der linken Seite des Fensters sehen Sie nun, dass wir einen Ordner mit über 100 Requests haben. Herzlichen Glückwunsch! Wir können loslegen. Im nächsten Abschnitt werfen wir einen Blick auf die Arten von Requests, die wir machen können.


Anfragen machen

Wenn Sie die Ordner unter dem Collections Tab öffnen, werden Sie sehen, dass wir eine Menge verschiedener Anfragen (englisch: Requests) haben, die wir stellen können. Anhand der Farbcodierung können Sie feststellen, dass es drei Arten von Methoden gibt, die wir verwenden können:


  • GET: Die Methode GET wird verwendet, um Daten von einem Server abzurufen. Wir verwenden diese Methode, um Informationen über Ihren Kontostand, Asset-Preise usw. zu erhalten.
  • POST: Wir werden die Methode POST verwenden, um Informationen auf einem Server zu erstellen. Dies wird für Dinge wie das Erstellen von Orders, Auszahlungsanträge usw. benötigt.
  • DELETE: Die Methode DELETE ist eine Aufforderung an den Server, Informationen zu löschen. Sie wird sich beim Stornieren von Orders als nützlich erweisen.


Liste der Symbole und die Trading-Regeln finden

Zeit für unsere erste Anfrage! Wir werden die Symbole, mit denen wir an der Börse traden können, und die Trading-Regeln anfordern:

GET /exchangeInfo


Diese Anfrage benötigt keine zusätzlichen Parameter – Sie könnten sie kopieren und in Ihre Adressleiste einfügen, und Sie würden eine Antwort erhalten. Aber für Anfragen, bei denen wir mehrere Parameter angeben, macht es Postman einfach, diese zu sehen und zu ändern.

Um diese Anfrage zu laden, wählen Sie Market > Exchange Information. Ein Tab wie das folgende wird eingeblendet:



Wir müssen hier nichts weiter tun, also machen Sie weiter und klicken Sie Send. Sie erhalten dann eine Antwort:



Im obersten hervorgehobenen Abschnitt sehen Sie einige wichtige Informationen:

  • den Status der Antwort (200 bedeutet, dass wir erfolgreich waren, 400-499 bedeutet, dass wir auf ein Problem gestoßen sind)
  • die für den Erhalt der Antwort benötigte Zeit (weniger als eine Sekunde)

  • die Größe der Antwort (~22KB).


Im zweiten Kasten befindet sich der größte Teil der Antwort. Er wurde etwas hervorgehoben, damit er etwas leichter zu sehen ist. Es enthält Informationen über die Börse selbst sowie über die Paare, die Sie traden können, und deren Mindest-/Höchstbeträge.

Es sieht nach einer Menge Informationen aus, aber das Format macht es sehr einfach, programmatisch damit zu arbeiten. Wenn Sie Skripte schreiben, um damit zu interagieren, werden Sie leicht in der Lage sein, bestimmte Eigenschaften bestimmter Elemente aus der Antwort herauszulesen.


Überprüfen des Kontostands

Lassen Sie uns überprüfen, welche Vermögenswerte wir haben und wie viel von jedem:

GET /account
Diese finden Sie unter Trade > Account Information. Klicken Sie darauf, und Sie sehen ein ähnliches Layout wie das vorherige. Sie werden jedoch auch feststellen, dass wir zwei neue Variablen haben: timestamp und signature. Die Signatur (signature) ist eine Sicherheitsmaßnahme. Da wir jetzt sensible Informationen abfragen, wird diese beweisen, dass wir der Kontoinhaber sind. 
Der Zeitstempel (timestamp) teilt dem Server mit, wann die Anfrage gesendet wurde. Da Netzwerke unter Umständen unzuverlässig sind oder Ausfallzeiten drohen, kann es sein, dass der Server unsere Anfrage viel später als geplant erhält. Wenn zu viel Zeit verstrichen ist, lehnt er die Anfrage ab. Sie können mit dem Parameter recvWindow angeben, wie lange Sie warten möchten, wobei der Standardwert 5000 Millisekunden beträgt.
Postman übernimmt für uns die Generierung dieser beiden Felder. Klicken Sie auf Send, und Sie erhalten eine Antwort. Unter Salden sollten Sie sechs Vermögenswerte sehen – BNB, BTC, BUSD, ETH, LTC und TRX. Der Kontostand wird aufgeteilt auf free und locked. Wir haben noch keine gesperrt (locked), so dass alle Ihre Vermögenswerte frei (free) sein sollten.

Herzlichen Glückwunsch zu Ihrem neuen (nicht existierenden) Reichtum!


So erhalten Sie den aktuellen Preis für ein Symbol

Wir können den aktuellen Preis eines Vermögenswertes auf verschiedene Weise ermitteln. Die vielleicht einfachste ist mit der folgenden Anfrage:

GET /api/v3/ticker/24hr
Wie Sie sich denken können, erhalten wir auf diese Weise Informationen über die Vermögenspreise der letzten vierundzwanzig Stunden. Sie finden sie in Market > 24hr Ticker Price Change Statistics. Das Standardpaar, mit dem wir begrüßt werden, hat die Symbolvariable BTCUSDT
Sie können diese sofort senden, um eine Aufschlüsselung der Preisinformationen zu sehen. Sie können auch das Symbol ändern (auf BNBBUSD, LTCUSDT, usw.), oder Sie können die Variable deaktivieren, um Daten für 40 Paare zurückzugeben.
Wir haben auch einen einfacheren Aufruf (Market > Symbol Price Ticker), der den aktuellen Preis, zu dem ein Vermögenswert gehandelt wird, zurückgibt:
GET /api/v3/price

Wie beim vorherigen können Sie die Symbolvariable ändern oder ganz entfernen und erhalten für alle Symbole den aktuellen Preis.


Prüfen Sie die aktuelle Orderbuchtiefe

Die Orderbuchtiefe (auch als Markttiefe bzw. Depth of Market oder DOM) bezeichnet) kann uns viel über den Markt sagen. Wir werden eine Funktion ausführen, die uns einige nützliche Informationen liefert:

GET api/v3/depth

Wenn wir diese mit den Standardwerten (Market > Order Book) senden, erhalten wir eine Antwort zurück, die uns über die Gebote informiert und nach BTCUSDT fragt. Der Testnet-Server wird nicht so viele Daten liefern wie der tatsächliche Server, daher sehen Sie unten einen Screenshot von dem, was Sie in einer realen Umgebung erwarten würde:



In dem oben hervorgehobenen Abschnitt sehen wir das erste Gebot. Da wir uns das Buch für BTCUSDT ansehen, ist die obere Zahl der Preis, den jemand bereit ist, für Ihre BTC zu zahlen. Die untere Zahl ist der Betrag, den er bereit ist zu kaufen. Dies besagt also, dass diese Order 0,999 BTC zu einem Kurs von 9704,65 USDT pro BTC kaufen möchte. Wenn wir weiter nach unten scrollen würden, sähen wir den Gebotspreis sinken – stellvertretend für Käufer, die weniger bezahlen würden.

Das Top-Angebot wird natürlich das attraktivste sein, wenn Sie auf der Suche nach dem besten Angebot für Ihr Geld sind. Wenn Sie jedoch versuchen, beispielsweise 3 BTC zum Marktpreis zu verkaufen, können Sie nur 0,999 BTC zum besten Preis verkaufen. Sie müssen die nachfolgenden (billigeren) Angebote annehmen, bis Ihre Order vollständig ausgeführt ist.



Scrollen Sie weiter, und Sie werden die Verkauforders sehen. Sie sind funktionell den Geboten ähnlich, außer dass sie Orders darstellen, die BTC für USDT verkaufen


Test Order platzieren

Jetzt werden wir eine Test Order platzieren.

POST api/v3/order/test
Auch wenn wir nur Testnet-Gelder verwenden, wird mit dieser Anfrage eigentlich keine Order platziert. Sie kann sich als nützlich erweisen, um Orders zu testen, bevor sie tatsächlich eingestellt werden. Sie finden sie unter Trade > Test New Order (TRADE).



Sie sehen, dass wir noch viele weitere Parameter berücksichtigen müssen. Lassen Sie uns durch die ausgewählten Parameter gehen:


  • symbol – hatten wir bereits behandelt. Dies ist das Paar, mit dem Sie traden wollen.
  • side – hier legen Sie fest, ob Sie KAUFEN (BUY) oder VERKAUFEN (SELL) möchten. Bei dem BTCUSDT-Paar gibt BUY an, dass Sie BTC für USDT kaufen bzw. mit SELL BTC für USDT verkaufen möchten.
  • type – der Order-Typ den Sie platzieren wollen. Mögliche Werte (im Detail hier):
    • LIMIT
    • MARKET
    • STOP_LOSS
    • STOP_LOSS_LIMIT
    • TAKE_PROFIT
    • TAKE_PROFIT_LIMIT
    • LIMIT_MAKER
  • timeInForce– dieser Parameter drückt aus, wie die Order ausgeführt werden soll:
    • GTC (Good Till Canceled) – wahrscheinlich das beliebteste Setup. GTC stellt sicher, dass Ihre Order gültig ist, bis sie ausgeführt wird oder bis Sie diese stornieren.
    • FOK (Fill Or Kill) – FOK weist die Börse an, eine Order sofort auszuführen. Wenn die Börse dies nicht tun kann, wird die Order sofort annulliert.
    • IOC (Immediate Or Cancel) – entweder muss die Order ganz oder teilweise sofort ausgeführt werden, oder sie wird storniert. Im Gegensatz zu FOK werden die Orders nicht storniert, wenn sie teilweise ausgeführt werden können.
  • quantity – einfach die Menge des Vermögenswertes, den Sie kaufen oder verkaufen möchten.
  • price – der Preis, zu dem Sie verkaufen möchten. Für das BTCUSDT-Paar wird dieser in USDT angegeben.
  • newClientOrderId – eine Kennung für die Order. Dies ist kein Pflichtfeld, aber Sie können es auf eine Kennung setzen, die eine spätere Abfrage erleichtert. Andernfalls wird sie zufällig durch die Börse generiert.
Okay! Lassen Sie uns jetzt eine Test-Order erstellen. Wir werden mit den automatisch generierten Werten fortfahren: eine Limit-Order zum Verkauf von 0,1 BTC für USDT zum Preis von $9000. Klicken Sie auf Send. Wenn dies erfolgreich war, erhalten wir einfach {} als Antwort. 

 

Eine echte Order platzieren

Es wird Zeit, eine echte Fake-Order zu platzieren.

POST /api/v3/order
Gehen Sie zu Trade > New Order. Sie sind inzwischen mit Test-Orders vertraut, daher werden die Parameter hier keine Überraschung sein. Lassen wir alle Werte so, wie sie sind, aber da wir Permabulls sind, werden wir den Preis, zu dem wir verkaufen, auf 40.000 Dollar ändern. Passen Sie dafür den Wert des Preises an. Klicken Sie dann auf Send.

Als Ergebnis erhalten Sie bei Erfolg eine Reihe von Details über Ihre Order.


Prüfen Sie den Status einer offenen Order

Wir haben im vorigen Abschnitt die Bestätigung erhalten, dass die Order platziert wurde, aber was ist, wenn wir sie später noch einmal überprüfen wollen? Wir haben dafür einige Anfragen zur Verfügung.

GET /api/v3/openOrders
Sie finden diese unter Trade > Current Open Orders (USER_DATA). BTCUSDT ist standardmäßig ausgewählt. Wenn Sie Send klicken, erhalten Sie alle Ihre offenen BTCUSDT Orders (soweit sollten Sie nur die Order sehen, die wir vorher festgelegt haben). Sie können auf die Angabe eines Symbols verzichten und bekommen stattdessen alle Ihre offenen Orders angezeigt.
GET /api/v3/allOrders
Trade > All Orders (USER_DATA) gibt Ihnen einen Überblick über alle Orders – nicht nur die offenen. Hier müssen Sie ein Symbol angeben. orderId, startTime, endTime, und limit sind optionale Parameter, die Ihnen helfen können, Ihre Suche zu verfeinern.Wir lassen sie hier weg, also klicken Sie diese nicht an. Klicken Sie Send, und Sie erhalten die gleichen Ergebnisse wie zuvor. Wenn Sie geschlossene oder stornierte Orders hätten, würden Sie diese hier ebenfalls sehen. 


Schliesslich können wir spezifische Orders abfragen mit:

GET /api/v3/order
Diese erhalten Sie unter Trade > Query Order (USER_DATA). Sie müssen entweder die orderId oder die origClientOrderId angeben (das optionale Tag “newClientOrderId” können Sie zu Orders hinzufügen). Deaktivieren Sie das Häkchen bei orderId. Für origClientOrderId werden wir das Standard-Tag von vorher verwenden – “my_order_id_1”. Füllen Sie das Feld aus und klicken Sie Send, um das Ergebnis zu erhalten.


Eine Order stornieren

Nach einiger Zeit könnten wir uns entscheiden, dass das 40.000-Dollar-Ziel ein wenig zu optimistisch ist, so dass wir es stornieren wollen. In diesem Fall würden wir verwenden:

DELETE /api/v3/order
Unter Trade > Cancel Order finden Sie eine Anfrage, die es uns ermöglicht, Orders zur Stornierung herauszufiltern. Entfernen Sie die Häkchen bei orderId und newClientOrderId und geben Sie “my_order_id_1” als Wert für origClientOrderId ein.
Wenn Sie diese Anfrage absenden, wird die Order storniert. Wenn Sie nach unten zu “status” scrollen, werden Sie sehen, dass die Order tatsächlich storniert wurde. Um dies zu bestätigen, verwenden Sie erneut den Endpunkt GET /api/v3/openOrders (so erhalten Sie eine leere Liste) oder GET /api/v3/order mit der origClientOrderId.


Platzieren Sie eine Order die sofort ausgeführt wird

Unsere vorherige Order wurde nicht ausgeführt, weil es sich um eine Limit-Order handelte, die erst ausgelöst worden wäre, wenn der BTC-Preis 40.000 $ erreicht hätte. Bei einer Market Order sagen wir im Grunde genommen “Kaufe / Verkaufe zu welchem Preis auch immer der Vermögenswert derzeit gehandelt wird.” Diese Order wird sofort ausgeführt.
Dafür gehen wir zurück zu Trade > New Order. Wir werden den Antworttyp (NewOrderRespType) demonstrieren, ein Parameter, den wir je nach der Antwort, die wir vom Server erhalten wollen, verändern können. Es gibt hier drei Optionen: ACK, RESULT, oder FULL – Beispiele für jede Antwort sehen Sie hier. Wir werden ACK verwenden, was uns eine einfache Bestätigung gibt, dass die Order eingegangen ist.

Unten sehen Sie, dass wir im Begriff sind, eine Market Order zum Verkauf von BNB für BUSD zum aktuellen Marktpreis einzureichen.



Beachten Sie, dass uns die Antwort nur minimale Informationen gibt:



Sie können mit dem Endpunkt /api/v3/allOrders überprüfen, ob die Order ausgeführt wurde.


Überprüfen Ihrer Trades

Lassen Sie uns abschließend noch einen Blick auf den Endpunkt für die Überprüfung Ihrer Trades werfen:

GET /api/v3/myTrades
Diese finden Sie unter Trade > Account Trade List (USER_DATA). Es ermöglicht Ihnen, jeden Trade auf ein bestimmtes Symbol zu überprüfen. Wenn Sie alle Ihre Trades für das Standardsymbol (BTCUSDT) sehen möchten, deaktivieren Sie einfach startTime, endTime und fromId. Die Antwort wird bis zu 500 Trades zurückgeben – wenn Sie mehr sehen möchten, ändern Sie einfach limit.


Debugging mit Postman

In Postman ist es möglich, die Anfrage und Antwort als Raw HTTP anzuzeigen.



Dieses Menü öffnet die Postman Console, die die Details jeder Anfrage ausgibt.



Fazit

Der Zweck dieses Leitfadens war es, Sie behutsam in die Binance API einzuführen, ohne eine einzige Zeile Code zu schreiben. Wenn Sie mitgemacht haben, sollten Sie nun eine Vorstellung davon haben, wie wir Informationen anfordern und einreichen können.

In den nächsten Teilen dieser Reihe stellen wir einige grundlegende Programmierkonzepte vor, die es uns ermöglichen, den Kauf und Verkauf von Krypto-Währungen und anderen digitalen Vermögenswerten zu automatisieren. 
Haben Sie in der Zwischenzeit Fragen? Besuchen Sie unser wachsendes Forum der Binance Developer Community, oder werfen Sie einen Blick in die Dokumentation.