Articles

Erstellen Sie einen Cryptocurrency Trading Bot mit R

Foto von Branko Stancevic auf Unsplash

** Beachten Sie, dass die Die in diesem Tutorial verwendete API wird nicht mehr verwendet. Dieser Artikel sollte zu illustrativen Zwecken in diesem Sinne gelesen werden.

Der Verstand des Traders ist das schwache Glied in jeder Handelsstrategie oder jedem Plan. Eine effektive Handelsausführung erfordert menschliche Inputs, die in die entgegengesetzte Richtung zu unseren Instinkten laufen. Wir sollten kaufen, wenn unser Reptilienhirn verkaufen will. Wir sollten verkaufen, wenn unsere Eingeweide wollen, dass wir mehr kaufen.

Es ist noch schwieriger, Kryptowährungen mit einer kritischen Verfassung zu handeln. Die jungen und aufstrebenden Märkte werden von „Pumpgruppen“ überflutet, die intensive FOMO (Fear of Missing out) fördern, die die Preise in die Höhe treiben, bevor sie sie wieder auf die Erde bringen. Viele Anfänger handeln auch auf diesen Märkten, Investoren, die möglicherweise nie einen Handel an der NYSE eingegangen sind. Bei jedem Trade gibt es einen Maker und einen Taker, und kluge Krypto-Investoren finden es einfach, die Vorteile der Anfänger zu nutzen, die den Raum überfluten.Um meine Emotionen vom Kryptohandel zu lösen und die 24/7 offenen Märkte zu nutzen, habe ich beschlossen, einen einfachen Handelsbot zu bauen, der einer einfachen Strategie folgt und Trades ausführt, während ich schlafe.Viele „Bot-Trader“, wie sie genannt werden, verwenden die Programmiersprache Python, um diese Trades auszuführen. Wenn Sie „Crypto Trading Bot“ googeln würden, würden Sie Links zu Python-Code in verschiedenen Github-Repositories finden.

Ich bin Data Scientist und R ist mein Hauptwerkzeug. Ich suchte nach einem anständigen Tutorial zur Verwendung der R-Sprache zum Erstellen eines Handelsbots, fand aber nichts. Ich wollte mein eigenes Paket für die Schnittstelle zur GDAX-API erstellen, als ich das Paket rgdax fand, bei dem es sich um einen R-Wrapper für die GDAX-API handelt. Im Folgenden finden Sie eine Anleitung zum Zusammenstellen eines Trading-Bots, mit dem Sie Ihre eigenen Strategien entwickeln können.Kurz gesagt, wir werden das Ethereum — USD-Paar an der GDAX-Börse über ihre API über den rgdax-Wrapper handeln. Ich mag dieses Paar Handel, weil Astraleum (ETH) ist in der Regel in einer bullischen Haltung, die diese Strategie erlaubt zu glänzen.Hinweis: Dies ist eine super-simple Strat, die nur ein paar Dollar in einem Bullenmarkt machen wird. Verwenden Sie dies in jeder Hinsicht als Basis für den Aufbau Ihrer eigenen Strat.

Wir werden kaufen, wenn eine Kombination von Indikatoren des Relative Strength Index (RSI) auf einen vorübergehend überverkauften Markt hindeutet, mit der Annahme, dass die Bullen die Preise erneut nach oben treiben und wir Gewinne erzielen können.

Sobald wir kaufen, gibt der Bot drei Limit-Verkaufsaufträge ein: eine bei 1% Gewinn, eine andere bei 4% Gewinn und die letzte bei 7% Gewinn. Dies ermöglicht es uns, schnell Mittel freizugeben, um mit den beiden 1st-Orders in einen anderen Trade einzusteigen, und die 7% -Order stärkt unsere Gesamtrentabilität.

Software

Wir werden Rstudio und Windows Task Scheduler verwenden, um unseren R-Code regelmäßig (alle 10 Minuten) auszuführen. Sie benötigen ein GDAX-Konto, um Bestellungen zu senden, und ein Google Mail-Konto, um Handelsbenachrichtigungen zu erhalten.

Unser Prozess

Teil 1: Bibliotheken aufrufen und Funktionen erstellen

Wir beginnen mit dem Aufruf mehrerer Bibliotheken:

Das Paket rgdax bietet die Schnittstelle zur GDAX-API, mailR wird verwendet, um uns E-Mail-Updates mit einem Google Mail-Konto zu senden, Stringi hilft uns, Zahlen aus JSON zu analysieren, und TTR ermöglicht es uns, technische Indikatorberechnungen durchzuführen.

Funktion: curr_bal_usd & curr_bal_eth

Sie verwenden Ihren API-Schlüssel, Ihr Geheimnis und Ihre Passphrase, die aus GDAX im API-Abschnitt generiert werden. Diese Funktionen fragen Ihr GDAX-Konto nach dem letzten Saldo ab, den wir wiederholt in unserem Handel verwenden werden:

Funktion: RSI

Wir werden den RSI oder den Relative Strength Index als unsere Hauptindikatoren für diese Strategie verwenden. Curr_rsi14_api zieht den Wert des letzten 14-Perioden-RSI mit 15-Minuten-Kerzen ein. RSI14_api_less_one und so weiter ziehen den RSI für die Perioden vor:

Function: bid & ask

Next, we will need the current bid and ask prices for our strategy:

Function: usd_hold, eth_hold und cancel_orders

Damit wir Limit-Orders iterativ platzieren können, müssen wir in der Lage sein, den aktuellen Status unserer bereits platzierten Orders abzurufen und Orders zu stornieren, die sich zu weit nach unten bewegt haben, um gefüllt zu werden. Wir werden die Funktion „holds“ des rgdax-Pakets verwenden, um dies für ersteres zu tun, und „cancel_order“ für letzteres:

Funktion: buy_exe

Dies ist die Big-Daddy-Funktion, die unsere Limit-Orders tatsächlich ausführt. Es gibt mehrere Schritte, die diese Funktion durchläuft.

1. Die Funktion Order_size berechnet, wie viel eth wir kaufen können, da wir jedes Mal so viel wie möglich kaufen möchten, abzüglich 0.005 eth, um Rundungsfehler zu berücksichtigen

2. Unsere WHILE-Funktion platziert Limit-Orders, während wir noch null ETH haben.

3. Eine Bestellung wird zum bid () -Preis hinzugefügt, das System schläft 17 Sekunden, damit die Bestellung ausgeführt werden kann, und prüft dann, ob die Bestellung ausgeführt wurde. Wenn nicht, wiederholt sich der Vorgang.

Teil 2: Variablen speichern

Als nächstes müssen wir einige unserer RSI-Indikatorvariablen als Objekte speichern, damit die Handelsschleife schneller läuft und wir das Ratenlimit der API nicht überschreiten:

Teil 3: Die Handelsschleife wird ausgeführt

Bis jetzt haben wir nur unsere Funktionen und Variablen vorbereitet, um die Handelsschleife auszuführen. Das Folgende ist ein verbaler Spaziergang durch die tatsächliche Handelsschleife:

Wenn der aktuelle Saldo unseres Kontos in USD größer als $ 20 ist, werden wir die Schleife starten. Wenn der aktuelle RSI größer oder gleich 30 ist UND der RSI in der vorherigen Periode kleiner oder gleich 30 war UND der RSI in den vorherigen 3 Perioden mindestens einmal kleiner als 30 war, kaufen wir so viel ETH wie möglich mit dem aktuellen USD-Saldo.

Als nächstes speichern wir diesen Kaufpreis in einer CSV-Datei.

Dann senden wir eine E-Mail an uns selbst, um uns über die Kaufaktion zu informieren.

Die Schleife druckt dann „buy“, damit wir das in unserer Protokolldatei verfolgen können.

Das System schläft dann für 3 Sekunden.

geben Sie 3 abgestufte Limit-Verkaufsaufträge ein, um Gewinne mitzunehmen.

Unsere erste Limit-Sell-Order erzielt einen Gewinn von 1%, die nächste einen Gewinn von 4% und die letzte einen Gewinn von 7%:

Das war’s, das ist das ganze Drehbuch.

Teil 4: Windows Task Scheduler verwenden, um das Skript zu automatisieren

Der ganze Zweck dieses Bots ist es, den menschlichen Fehler aus dem Handel zu nehmen und es uns zu ermöglichen, Trades einzugeben, ohne an einem Bildschirm anwesend sein zu müssen. Wir werden Windows Task Scheduler verwenden, um dies zu erreichen.

Skript mit Rstudio-Addin planen

Verwenden Sie das praktische Rstudio-Add-In, um das Skript einfach zu planen:

Ändern Sie die geplante Aufgabe mit dem Taskplaner

Navigieren Sie zu der vom Rstudio-Add-In erstellten Aufgabe und stellen Sie den Auslöser so ein, dass er in dem gewünschten Intervall ausgelöst wird. In meinem Fall wähle ich alle 10 Minuten unbegrenzt.

Behalten Sie Ihre Aufgabe mit die Protokolldatei

Jedes Mal, wenn Ihr Skript ausgeführt wird, wird ein Eintrag in einer Textprotokolldatei erstellt, mit dem Sie Fehler in Ihrem Skript beheben können:

Sie kann sehen, wie die Druckfunktion „START LOG ENTRY“ und „END LOG ENTRY“ nützlich ist, um unsere Einträge zu trennen.

Mach es dir zu eigen

Sie können dieses Skript so ändern, dass es so einfach oder so komplex ist, wie Sie möchten. Ich arbeite daran, dieses Skript durch Hinzufügen neuronaler Netze aus dem Keras-Modul von Tensorflow für Rstudio zu verbessern. Diese neuronalen Netze fügen dem Skript ein exponentiell komplexeres Element hinzu, sind jedoch unglaublich leistungsfähig, um versteckte Muster in den Daten zu finden.

Darüber hinaus bietet uns das TTR-Paket eine Vielzahl von Finanzfunktionen und technischen Indikatoren, mit denen Sie Ihr Modell verbessern können.

Mit all dem gesagt wird, spielen Sie nicht mit mehr Geld, das Sie sich leisten können, zu verlieren. Die Märkte sind kein Spiel und Sie können und werden Ihr Hemd verlieren.