Schritt-für-Schritt-Anleitung wie Du Deine Trading Strategie in der Cloud hostest


blog photo
Veröffentlicht von Marius Sprenger am 19. August 2021
Trading


Hallo zusammen! Mein Name ist Marius und ich kümmere mich um die Community von lemon.markets. Wir sind ein Berliner Startup, das an einer Brokerage Infrastruktur arbeitet, damit Entwickler:innen ihre eigene Trading Experience an der Börse entwickeln können.

Einer der beliebtesten Use Cases unserer Nutzer:innen ist eine automatisierte Trading-Strategie, die Kauf- oder Verkaufsentscheidungen basierend auf einer vordefinierten Logik trifft. Ein wichtiger Teil einer solchen Strategie ist es natürlich, dafür zu sorgen, dass sie permanent läuft. Denn der Sinn einer automatisierten Strategie besteht ja darin, dass man sich eben nicht mehr um die manuelle Platzierung von Orders kümmern muss. Die Lösung dafür ist (Du hast es vielleicht schon erraten): Cloud-Hosting. Während drei "Internet-Giganten" Cloud-Lösungen anbieten (Amazon mit AWS | Google mit GCP | Microsoft mit Azure), gibt es auch eine Reihe kleinerer Anbieter, wie Heroku, Deta oder DigitalOcean.

In diesem Blog Post wollen wir uns diesem (unserer bescheidenen Meinung nach) wichtigen Thema widmen und Dir Schritt für Schritt zeigen, wie Du mit Heroku Deine eigene Trading-Strategie in der Cloud hosten kannst. Außerdem gehen wir etwas tiefer auf Deta ein, geben Dir einen Überblick über andere Cloud-Hosting-Anbieter und zeigen deren Vor- und Nachteile auf.

Du möchtest mehr über das Cloud-Hosting Deiner Trading-Strategie erfahren? Perfekt, dann lass uns direkt loslegen.

Wir bei lemon.markets sind davon überzeugt, dass es sich bei dem Erstellen von automatisierten Trading-Stategien um einen Prozess handelt, der aus mehreren Schritten und Phasen besteht. Wir versuchen, die verschiedenen Phasen in diesem Blog Post zu erläutern und Dir darüber hinaus Tools an die Hand zu geben, die Du in den einzelnen Phasen gut gebrauchen kannst.

Wir empfehlen Dir zwar, viel Zeit in den Aufbau Deiner Trading-Strategie zu investieren, finden aber, dass Du Deine wertvollen Ressourcen nicht für den Hosting-Teil verschwenden solltest. Und da kommt dieser Blog Post ins Spiel: Wir möchten Dir einen schnellen und effizienten Leitfaden an die Hand geben, wie Du Dein Trading Skript bequem in der Cloud hosten kannst. Somit kannst Du Dich ganz auf die Ausarbeitung und Optimierung Deiner Trading-Strategie konzentrieren. Letztendlich sehen wir unsere Aufgabe bei lemon.markets darin, Dir eine möglichst ganzheitliche Erfahrung zu bieten, damit Du sofort und ohne Ablenkungen mit dem Aufbau Deiner Trading Experience beginnen kannst.

Welcher ist der richtige Anbieter für mich und meine Trading-Strategie?

Es gibt eine Vielzahl von Cloud-Hosting-Anbietern und im Grunde ermöglichen sie alle etwas Ähnliches (oder das Gleiche): Ein Projekt, das lokal läuft, in die Cloud zu verlagern, so dass:

  • es keine lokalen Ressourcen mehr verbraucht, und
  • weiterläuft, auch wenn Du Deinen Computer heruntergefahren hast.

Je nachdem, was Dein Skript macht, kann der eine Anbieter besser sein als der andere. In diesem Blog Post konzentrieren wir uns jedoch aus verschiedenen Gründen auf die Nutzung von Heroku:

  1. Heroku lässt sich problemlos in GitHub integrieren und ermöglicht es Dir, Deinen Code superschnell und mit sehr wenig Aufwand zu deployen.
  2. Es eignet sich hervorragend für kleine, individuelle Projekte mit vergleichsweise geringer Rechenleistung (also perfekt für den Use Case unserer automatisierten Trading-Strategie).
  3. Heroku ist kostenlos in der Basis Version, die für den Betrieb einer einzelnen automatisierten Trading-Strategie mehr als ausreichend ist.
  4. Wenn Du nach einiger Zeit feststellst, dass Du mehr Rechenleistung benötigst, kannst Du Dein Abo bequem und ohne große Kosten upgraden.
  5. Du kannst entweder mit dem Heroku Dashboard arbeiten oder die Heroku CLI verwenden, um Dein Skript zu deployen.

Wie Du siehst, ist Heroku eine großartige Möglichkeit, um ein einzelnes Trading-Skript mit sehr wenig Aufwand zu hosten. Falls Heroku für Dein Projekt jedoch nicht ausreicht (oder wenn Du einfach mehr zu dem Thema wissen möchtest), solltest Du Dir den letzten Abschnitt dieses Blog Posts noch etwas genauer anschauen.

Schritt-für-Schritt-Anleitung für Heroku

Für diesen Blog Post gehen wir davon aus, dass Du Dich mit GitHub auskennst. Eine der coolen Funktionen von Heroku ist nämlich die nahtlose GitHub-Integration, die unser Leben um einiges einfacher macht. Aber lass uns von Vorne starten.

Unser Python-Projekt vorbereiten

Um ein Python-Skript auf Heroku zu hosten, musst Du zunächst eine Datei haben (duh!). Nehmen wir an, diese Datei heißt main.py und ist Teil Deines Python-Projekts, das Deine automatisierte Trading-Strategie enthält. In der Datei main.py definieren wir unsere Hauptfunktion, die ausgeführt wird, wenn __name__ == '__main__'. Das ist die Datei, die wir brauchen. Übrigens: Schau Dir doch dieses GitHub-Repository an, um ein Python-Projekt mit einer main.py Datei zu sehen.

Bevor Du Dein Projekt auf GitHub veröffentlichst, musst Du eine bestimmte Datei zu deinem Projekt hinzufügen: die Procfile. Auf einem Mac geht das z.B. mit:

1touch Procfile

Das Procfile hat keine Endung, erstelle es einfach wie oben beschrieben. Im Allgemeinen ist das Procfile eine Datei für Heroku-Apps, die angibt, welche Befehle beim Start der App ausgeführt werden sollen. Wenn Du mehr über das Procfile erfahren möchtest, klicke hier.

Unser Procfile enthält nur eine Zeile:

1worker: python main.py

Was machen wir hier?

Wir folgen einfach den Syntaxkonventionen eines Procfiles, die da lauten:

1<process type>: <command>

Wir wollen also einen "Worker" zuweisen (ein Worker-Prozess ist im Grunde ein Prozess, der eine Aufgabe in einer Heroku-Anwendung ausführt. Außerdem legen wir die Aufgabe des Workers fest: Die Ausführung eines Python-Skripts mit dem Namen main.py. Und das war's. Ziemlich einfach, oder? Wenn Du Dein Procfile erstellt hast, kannst Du Dein Projekt auf GitHub veröffentlichen.

Vorbereiten unserer Heroku-Anwendung

Als nächstes wollen wir unsere Heroku-Anwendung erstellen. Logge Dich in Dein Dashboard ein, klicke auf "New" und wähle "Create new app" in der oberen rechten Ecke. Du siehst nun den folgenden Screen:

Neue App in Heroku erstellen

Gib dort den Namen Deiner Anwendung ein und wähle eine Region. Klicke anschließend auf "Create App", was Dich zu den Einstellungen weiterleitet. Dort kannst Du weitere Verfeinerungen vornehmen.

Hier hast Du mehrere Möglichkeiten, Deine Anwendung zu deployen. In diesem Blog Post haben wir uns dafür entschieden, unsere Anwendung mit einem GitHub-Repository zu verbinden (dem Repository, das wir zuvor erstellt haben und das unsere Procfile enthält). Möglicherweise musst du Heroku zunächst den Zugriff auf Dein GitHub-Repository erlauben. Anschließend kannst Du nach dem soeben erstellten Repository suchen. Klicke auf "Connect", wenn Du das richtige Repository gefunden hast.

Was ist, wenn ich einen anderen Anbieter als GitHub verwende?

Wir sind der Meinung, dass die Integration von GitHub mit Heroku der bequemste Weg ist, Dein Trading Skript in der Cloud zu hosten. Aber wir wissen auch, dass es (wie so häufig im Leben) unterschiedliche Präferenzen und Möglichkeiten gibt. Heroku bietet natürlich auch andere Optionen an. So kannst Du beispielsweise mit Git direkt über die Heroku-CLI deployen (weitere Infos findest Du hier) oder mit Docker (weitere Infos findest Du hier). Wenn Du GitLab gegenüber GitHub bevorzugst, schaue Dir doch diesen Blog Post an, der erklärt, wie Du es mit Heroku nutzen kannst. In unserem Blog Post bleiben wir jedoch bei GitHub, da wir hoffen, damit die meisten Nutzer:innen abzuholen :)

Nachdem Du GitHub für das Deployment ausgewählt hast, kannst Du Dir überlegen, wie Du Deine Anwendung deployen möchtest. 

Du kannst entweder automatisch deployen, sodass Deine Anwendung jedes Mal deployed wird, wenn Du Änderungen in Deinem GitHub-Repository vornimmst. Oder Du entscheidest Dich für manuelles Deployment. Bei beiden Optionen musst Du den Repository Branch angeben, von dem aus deployed werden soll. In den meisten Fällen ist es sinnvoll, einfach den Main Branch zu verwenden.

Nachdem Du entweder auf "Enable Automatic Deploys" oder auf "Deploy Branch" geklickt hast, beginnt Heroku (nun ja 💁) mit dem Deployment Deiner App. Wenn alles gut gelaufen ist, solltest Du unten "Your app was successfully deployed" sehen. Klicke auf "View" um den Status zu überprüfen.

Möglicherweise erscheint dabei eine Fehlermeldung.

Arbeiten mit Umgebungsvariablen

In unserem Fall liegt das daran, dass wir mit Umgebungsvariablen arbeiten. Diese müssen wir zunächst definieren, damit das Projekt funktioniert. Dafür kannst Du entweder in Deinen Projektordner navigieren, dich in die Heroku-CLI einloggen und die Umgebungsvariablen wie folgt setzen:

1heroku config:set ENV_VAR=value

Alternativ dazu kannst Du die Umgebungsvariablen auch direkt im Dashboard setzen. Gehe einfach zu den Einstellungen und dann zum Abschnitt "Config Vars".

Wenn Du auf "Reveal Config Vars" klickst, kannst Du alle Umgebungsvariablen nacheinander eingeben:

Nachdem Du alle Umgebungsvariablen eingegeben hast, entweder im Dashboard oder über die Heroku CLI, kannst Du das Projekt erneut deployen.

Du kannst den Projektstatus überprüfen, indem Du

1heroku logs

in die CLI eingibst. Wenn Du merkst, dass Deine Anwendung nicht ordnungsgemäß ausgeführt wird, gib Folgendes ein:

1heroku ps:scale worker=1

Und damit sind alle Schritte so gut wie abgeschlossen, um unser Python-Skript zum Laufen zu bringen. Einfach, oder? Wir sind schon auf Deine automatisierten Strategien in der Cloud gespannt. 

Scheduling (Terminierung)

Wenn Du den oben beschriebenen Ansatz verwendest, startest Du im Wesentlichen einen Heroku Worker, der Dein Skript ausführt und es laufen lässt. Das bedeutet, dass das Skript dann ständig in der Cloud läuft und Aktionen sowie Pausen direkt innerhalb des Skripts getriggert werden. Dieser Ansatz für automatisierte Trading-Strategien ist ein guter Ausgangspunkt, um Dein Skript von Deiner lokalen Umgebung in die Cloud zu verschieben (wir selbst haben einige Teststrategien mit dem gleichen Ansatz auf Heroku laufen und die liefern ordentliche Renditen 😏. Bleib dran für spezielle Blogposts dazu in den kommenden Wochen).

Allerdings gibt es auch Szenarien, in denen dieser Ansatz nicht unbedingt die beste Lösung ist. Deshalb wollen wir uns schnell noch einen zweiten Ansatz anschauen: Scheduling. Heroku bietet das Heroku Scheduler Plugin an und das könnte ebenfalls eine gute Lösung für Dich und Deine Trading-Strategie sein. Im Wesentlichen erlaubt Dir der Scheduler, Zeitintervalle für die Ausführung von Aufgaben in Deiner App zu definieren. Es braucht nicht viel Gehirnschmalz, um die Verbindung zu unserer Trading-Strategie zu erkennen. Wenn Du z.B. eine Strategie verfolgst, die zu ganz bestimmten Zeiten am Tag eine Aktie kaufen soll, könntest Du einfach den Heroku Scheduler nutzen und den Zeitpunkt für die Order Platzierung definieren. Heroku ruft dann das Skript auf und führt den Auftrag genau so aus, wie Du ihn definiert hast. Hört sich das für Dich nach einer passenden Lösung an? Dann schau Dir die Dokumentation für weitere Infos an.

Deta - eine spannende Alternative

Als wir uns näher mit dem Konzept des Scheduling beschäftigt haben, sind wir vor einigen Monaten auf Deta gestoßen. Deta ist eine interessante Alternative, die gerade erst in Berlin an den Start geht (ein weiterer Grund für uns, Deta mal auszuprobieren, da wir ja ebenfalls ein Tech-Unternehmen in einem kleinen Berliner Hinterhof-Büro aufbauen).

Die Idee hinter Deta klingt vielversprechend: Man muss sich nicht mehr um die komplizierte Einrichtung seiner Python-Skripte kümmern, sondern kann sie einfach in 2 Sekunden mit der kleinen, aber mächtigen Deta CLI deployen. Uns ist sofort aufgefallen, dass vor allem das Scheduling (oder Cronjobs, wenn wir in der Deta-Sprache sprechen) mit Deta sehr intuitiv ist. Lass uns gerne einen genaueren Blick darauf werfen.

Im Zusammenhang mit einer automatisierten Trading-Strategie ist das Deta Micros Produkt das für uns relevante. Detaillierte Informationen dazu findest Du hier. Im Großen und Ganzen funktioniert Deta wie folgt:

Der erste Schritt ist, ein Deta-Konto zu erstellen. Du kannst Dich hier bei Deta registrieren und anschließend in der Web-App anmelden. Der nächste wichtige Schritt ist die Installation der Deta CLI über:

1curl -fsSL https://get.deta.dev/cli.sh | sh

Danach kannst Du Dich mit dem folgenden Befehl in das CLI einloggen:

1deta login

Dadurch wird die Deta Web App in Deinem Browser geöffnet und Deine CLI authentifiziert. Du kannst entweder ein neues Deta-Mikro erstellen, z.B. in Python:

1deta new - python new_micro

oder ein Mikro zu einem bestehenden Projekt hinzufügen:

1deta new - project <dein-projekt>

Cronjobs einrichten und Dein Projekt auf Deta deployen

Stelle sicher, dass Du eine requirements.txt Datei zu Deinem Projekt hinzufügst, damit Deta weiß, welche Dependencies installiert werden müssen, wenn Du Dein Projekt deployst/ausführst. Um sicherzustellen, dass Deta Deinen Code richtig ausführen kann, musst Du eine Datei namens main.py erstellen und eine App Instance erzeugen. Um einen Cronjob einzurichten (was im Grunde dasselbe ist, wie das Einrichten eines Schedulers in Heroku), musst Du einfach eine Funktion erstellen, die Du nach einem Zeitplan ausführen möchtest und die ein Ereignis als Eingabe erhält:

1from deta import app
2@app.lib.cron()
3def cron_job(event):
4return “We are going to place an order now”

Wenn Du diese Funktion auf einem Deta-Mikro deployed hast, kannst Du die Funktion anschließend bequem ausführen, indem Du den Cronjob wie folgt definierst:

1$ deta cron set "10 minutes"

Wenn Du mehr über Cronjobs in Deta erfahren möchtest, wirf einen Blick in die Dokumentation. Generell kannst Du Deine Skripte in Deta wie folgt deployen:

1deta deploy

Danach kannst Du Dein Mikro für die Öffentlichkeit freigeben, indem Du die Authentifizierung deaktivierst:

1deta auth disable

Und das war's. Du hast gerade Dein Deta-Mikro erstellt und in die Cloud deployed. Probiere es unbedingt unter deta.sh aus und spiel damit herum, indem Du eine automatisierte Handelsstrategie in der "deta cloud" laufen lässt. Wir werden in Zukunft möglicherweise spezielle Deta-Tutorials vorstellen, also bleib dran 🤓.

Die großen Player im Markt

Wenn es um Cloud Hosting geht, führt fast kein Weg an den großen Drei vorbei: AWS, Google Cloud und Microsoft Azure. Es gibt jedoch einen guten Grund, warum wir sie in diesem Blog Post nur am Rande erwähnt werden.

Alle drei Anbieter haben großartige Infrastrukturen, die es Dir ermöglichen, skalierbare Projekte in der Cloud aufzubauen und flexibel zu warten. Allerdings sind sie vielleicht nicht die beste Lösung, wenn Du ein kleines Projekt hosten möchtest, da das Einrichten bei allen Dreien deutlich komplexer ist als z.B. bei Heroku oder Deta. Gerade Heroku ist im Vergleich zu AWS, Google Cloud oder Microsoft Azure super einfach zu nutzen, da Du Dich nicht um das Infrastrukturmanagement kümmern musst. Auch die GitHub-Integration ist ein großes Plus für Heroku im Vergleich zu den anderen drei Anbietern, da Du so flexibel Code schreiben und Deine Projekte/Skripte sehr einfach aktualisieren kannst. Schau Dir zum Thema Heroku vs. AWS/Google Cloud/Microsoft Azure gerne folgende Ressourcen an:

Diese vergleicht Heroku und AWS, diese vergleicht Heroku und Google Cloud, und diese (Überraschung) vergleicht Heroku und Azure.

Damit schließen wir unseren Blog Post zum Thema Hosting Deiner automatisierten Trading-Strategie in der Cloud ab. Wir hoffen, Du hast einen guten Einblick bekommen, wie Du Dein Trading Skript an Heroku anbinden und somit sicherstellen kannst, dass es ständig läuft. Zudem hast Du nun hoffentlich einen guten Überblick über die weiteren Anbieter auf dem Markt sowie deren Vor- und Nachteile.

Hast Du Anmerkungen oder zusätzliche Ideen, die Du in diesem Blog Post vermisst hast? Hinterlass uns gerne einen Kommentar oder kontaktier uns direkt unter [email protected] Und falls Du es noch nicht getan hast: Trag Dich in unsere Warteliste ein, um bald mit der lemon.markets API loszulegen. Wir können es kaum erwarten, Dich an Bord zu haben.

Wir sehen uns bald auf 🍋.markets.

Marius

Das könnte Dich auch interessieren

Richte Deinen eigenen Telegram-Bot für den Handel mit der lemon.markets API ein (Teil 1 von 2)

blog photo

Hallo! Ich bin Joanne aus dem lemon.markets Team. Ich habe in den letzten Wochen an einem Use-Case für unser Produkt gearbeitet und freue mich sehr, das Ergebnis hier mit Euch zu teilen! Es gibt hunderte Use-Cases für unser Produkt, von automatisierten Handelsstrategien bis hin zu Dashboards, die Dein Portfolio visualisieren. Heute zeige ich Dir, wie Du die lemon.markets API mit der Telegram API verbinden kannst. Warum? Damit Du einen personalisierten Butler - ähm, Bot - hast, der mit ein paar sehr einfachen Nachrichten Orders für dich platzieren kann.

Erstelle dein eigenes lemon.markets Dashboard mit Flutter

blog photo

Hallo zusammen! Mein Name ist Marius und ich bin Teil von lemon.markets, einem early-stage Startup aus dem Herzen Berlins. Wir arbeiten an einer Infrastruktur, mit der Du Deine eigene Trading Experience an der Börse bauen kannst. In diesem Blogbeitrag führe ich Dich durch ein Projekt unseres Community-Mitglieds Melanie. Dafür schauen wir uns an, wie man mit Flutter ein mobil-optimiertes Web Dashboard bauen kann. Hört sich das an als wäre es was für Dich? Dann lass uns keine Zeit verschwenden und direkt loslegen.

Anleitung für eine Mean Reversion Strategie mit der lemon.markets API & Hosting in der Cloud

blog photo

In diesem Beitrag möchte ich Dir zeigen, wie Du die lemon.markets API nutzen kannst, um eine der bekanntesten Handelsstrategien zu bauen: Die Mean Reversion Strategie. Außerdem zeige ich Dir, wie Du Deine Strategie mit Heroku in der Cloud hosten kannst, damit Dein Skript weiterläuft, auch wenn Dein Laptop ausgeschaltet ist.

Tiefer eintauchen

Finde weitere Ressourcen für einen einfachen Einstieg

In unserer Dokumentation erfahrt Ihr mehr über unsere API-Struktur, die verschiedenen Endpunkte und spezifische Anwendungsfälle.

Austauschen

Tritt der lemon.markets Community bei

Tritt unserem Slack-Channel bei, um Dich aktiv an unserer Community zu beteiligen, Fragen an andere Nutzer:innen zu stellen und immer auf dem Laufenden zu bleiben.

Team unterstützen

Lust lemon.markets mit uns zu bauen?

Wir sind immer auf der Suche nach großartigen Ergänzungen für unser Team, die uns beim Aufbau einer Brokerage Infrastruktur für das 21. Jahrhundert helfen.

Products
Pricing
For Developers
SlackGithubBlog
© lemon.markets 2021Privacy PolicyImprint
All systems normal