Wie im letzten Blogbeitrag beschrieben und begründet, werde ich mein Handelssystem (bzw. das Framework dafür) von Grund auf neu implementieren. Inzwischen sind die Ideen konkreter, einige Zeilen Code probehalber geschrieben und die zuerst diffuse Idee wird langsam greifbarer. Im Folgenden werde ich auf die Werkzeuge eingehen, die ich für das neue System zu nutzen gedenke.

Grundlegendes

Das System wird grundsätzlich und primär unter und für Linux entwickelt. In erster Linie deshalb, weil ich privat ausschließlich Linux nutze und dort die wichtigsten Werkzeuge wie C-Compiler, Debugger, Testtools und Entwicklungsumgebung frei verfügbar sind. Ob es eine Windows-Version geben wird, entscheide ich zu einem späteren Zeitpunkt (dies steht auf der Prioritätenliste aber sehr weit unten). Ich werde alle von mir geschriebene Software unter eine freie Lizenz (GPLv3) stellen, und den Quellcode veröffentlichen (zu einem Zeitpunkt, wenn ich etwas Lauffähiges vorweisen kann, die Entwicklung läuft derzeit über Gitlab). Den Link werde ich dann natürlich hier auf meinem Blog einstellen. Die knapp 1800 Zeilen Code des alten Systems werde ich dieses Mal wohl deutlich übertreffen, da ich einen großen Teil der Infrastruktur selber schaffen muss...

Kursdaten und deren Import

Das alte System war in libreoffice Basic geschrieben, mit einigen Helferscripten in Python und der Linux Shell zur Datenbeschaffung und -Aufbereitung. Diese Scripte werde ich beibehalten, da sie meinen derzeitigen Ansprüchen genügen. Das im Augenblick vorwiegend genutzte Python-Skript zieht sich frei zugängliche Daten (von investing.com, ein ähnliches Skript habe ich auch für finance.yahoo.com), formatiert sie um und speichert sie in einem separatem Verzeichnis als .csv Dateien ab.

Datenbank

Als erste große Neuerung werde ich für das neue System alle Daten in einer Datenbank ablegen. Das betrifft sowohl die eben erwähnten und zu importierenden Kursdaten, als auch sämtliche vom System generierten Daten, z.B.:

  • Indikatoren
  • Kauf-/Verkaufssignale
  • Depoteinträge
  • Statistiken
  • Backtestergebnisse
  • usw

Als Datenbank fällt meine Wahl auf MySQL, bzw. eines der Derivate wie MariaDB. Es existiert eine sehr gut dokumentierte API für C (mysql C API), neben einigen wenigen "Management-Funktionen" wie dem Connecten/Disconnecten zur Datenbank wird der Großteil des Interfaces daraus bestehen, die Anfragen an den MySQL Server als Textbausteine zusammenzusetzen.

Oberfläche

Derzeit plane ich keine bunte, mausbedienbare "Klickibunti" Oberfläche. Das System wird rein über Konfigurationsdateien gesteuert und soll im Wesentlichen automatisch und ohne Nutzerinteraktion ablaufen (z.B. auch für einen täglichen automatischen Start durch das Betriebssystem). Alle Ergebnisse werden in der Datenbank gespeichert und sind dort manuell abrufbar. Für Kauf-/Verkaufsignale sehe ich für den Anfang zusätzlich eine Textausgabe vor, dies läßt sich leicht ausbauen in formatierte Textdateien, html-basierte Reports oder eine Email-Funktion. In ferner Zukunft kommt vielleicht eine Web-Oberfläche hinzu, aber auch dies steht auf der Prioritätenliste derzeit sehr weit unten.

Charts

Eine wesentliche Erweiterung des jetzigen Systems wird die Möglichkeit sein, automatisch Charts generieren zu lassen. Während dies für den automatisierten Handel an sich eher wenig hilfreich ist (ausser um die Entscheidungen des Systems nachvollziehen zu können), wird mir das für die Entwicklung, Tests und Fehlersuche ein wertvolles Tool sein. Ich erinnere mich mit Grausen, wie ich für das alte System anfangs (und bis heute) Fehlersuche betreibe und für die Visualisierung von Kaufsignalen externe Chartprogramme zu Hilfe nehmen muss. Ein netter Bonus könnte z.B. sein, dass ich die wöchentlichen Übersichten mit den zugehörigen Charts anreichern kann.

Um in das eigentliche Charting möglichst wenig Aufwand investieren zu müssen, plane ich auch für diesen Anteil auf eine freie Software zugreifen zu können: Gnuplot, welches seit geraumer Zeit auch Candlestickcharts und Indikatoren (allgemein so ziemlich jede Art von Daten) darstellen kann.Ein nettes Extrafeature wären auch Grafiken für diverse Reports, z.B. Equity-Verläufe im Rahmen von Backtests, Diagramme für diverse Kennzahlen bzw. Statistiken etc. pp...

Die Kommunikation mit Gnuplot erfolgt über Textdateien, die von meinem Handelssystem generiert werden und in der "Gnuplot-Sprache" die Anweisungen enthalten, wie der Chart zu zeichnen ist.

Soweit zu den Grundlagen für das spätere System, die nötigen Algorithmen sind bereits vorhanden (das System ist exakt so ja bereits in der Tabellenkalkulation implementiert), jetzt geht es im ersten Schritt "nur" darum, dies in der neuen Programmiersprache erneut umzusetzen. Wie bereits in einigen Beiträgen erläutert (genauer: hier und hier, da und dort) bleibt das Ziel eines modularen Frameworks bestehen. Das Ichimoku-System soll nur das erste in diesem Framework realisierte Handelssystem sein, weitere Indikatoren werden Stück für Stück hinzugefügt und zu neuen Handelsystemen kombiniert werden können.

*händereib* denn mal los...

Comments powered by CComment