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

Mit OpenFIGI und lemon.markets ein Tickersymbol einer ISIN zuordnen

blog photo

Wenn Du an verschiedenen Börsen tradest, wirst Du feststellen, dass diese meist unterschiedliche Methoden haben um Wertpapiere zu identifizieren. Die US-Börsen verwenden beispielsweise häufig Ticker, während die deutschen Börsen auf eine ISIN verweisen. Und manchmal ist das Wechseln zwischen diesen Identifiern nicht so einfach, wie man es erwarten würde. Stattdessen kannst Du den Prozess automatisieren, indem Du einen (weniger als 10 Zeilen) Code schreibst, der die "Übersetzung" für Dich übernimmt. Lies weiter, um zu erfahren, wie Du die OpenFIGI- und lemon.markets-APIs nutzen kannst, um einem Ticker die entsprechenden ISIN zuzuordnen.

10 Fehler beim (automatisierten) Trading und wie Du sie vermeidest

blog photo

Hallo! Mein Name ist Joanne und ich bin Teil des lemon.markets-Teams in Berlin. Wir bauen eine Trading API, mit der Entwickler:innen ihre eigene Trading Experience gestalten können. Außerdem wollen wir eine Umgebung schaffen, in der Nutzer:innen sich zu der Schnittmenge von  Algorithmus-Entwicklung und dem Aktienmarkt austauschen können. Wir wollen zu dieser Diskussion auch etwas beitragen und haben deshalb eine Liste mit zehn Fehlern zusammengestellt, die Anfänger im automatisierten Handel (um ehrlich zu sein, manchmal auch erfahrene Profis) machen können. Damit sie Dir nicht passieren, haben wir zusätzlich erklärt, wie Du sie vermeiden kannst.

Integration von lemon.markets in Deinen Telegram-Bot (Teil 2 von 2)

blog photo

Hallo! Ich bin Joanne und gehöre zum Team von lemon.markets. Wir sind ein Berliner Start-up, das automatisiertes Trading über APIs ermöglicht. Unser Ziel ist es, Entwicklern und Entwicklerinnen alle Werkzeuge zur Verfügung zu stellen, mit denen sie ihre eigene Trading Experience an der Börse bauen können. Dabei gibt es hunderte Use-Cases für unser Produkt, wie beispielsweise ein eigenes Frontend zum Platzieren von Orders. Dafür kannst Du bei Null anfangen oder einen bereits existierenden Dienst wie beispielsweise Telegram nutzen. In diesem Artikel erweitere ich das Projekt, das wir in unserem letzten Artikel vorgestellt haben.

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