Im folgenden Beitrag möchte ich kurz den Aufbau meines einfachen Handelssystems skizzieren. Da ich zur Zeit mit dem Gedanken spiele, es von Grund auf neu zu implementieren, bietet es sich an, meine bisherige Arbeit etwas besser zu dokumentieren, die Schwachstellen zu analysieren und es beim nächsten Mal besser zu machen. Das vorgestellte System beruht zu etwa gleichen Teilen auf Planung im Vorfeld als auch "Learning by doing"- wobei Letzeres auch erklärtes Ziel war, ansonsten hätte ich auch von Anfang an eine fertige Software erwerben können (irgend ein Hobby braucht jeder). Da dieser Beitrag voraussichtlich sehr lang wird, teile ich ihn in 2 Artikel auf.

 Bei der Planung im Vorfeld setzte ich mir das Ziel, das zu schreibende Programm so modular wie möglich zu gestalten. Ichimoku Kinko Hyo als Signalgeber sollte nicht  untrennbar mit der Software verdrahtet sein. Stattdessen sollten Signale, Ausstiege, alle Ausgaben wie Statistiken etc. austauschbar sein ohne jedesmal das zugrunde liegende Programm komplett neu schreiben zu müssen. Bei allem Verbesserungsbedarf und Optimierungsmöglichkeiten die das Ergebnis offen lässt, habe ich zumindest dieses Ziel erreicht. Eine neue Datenquelle, ein anderer Indikator den ich probieren möchte oder eine erweiterte Statistikfunktion- alles ließe  sich mit überschaubarem Änderungsaufwand für den Rest integrieren.

Das System lässt sich grob in drei logische Blöcke aufgliedern:

  • Die Beschaffung und Aufbereitung der Kursdaten
  • Die Berechnung der Indikatoren und darauf basierender Einstiegssignale
  • Das eigentliche Handelssystem, welches die Käufe/Verkäufe verwaltet

Jeder Block besteht wiederum auf Funktionen (oder Unterblöcken thematisch ähnlicher Funktionen), die miteinander Daten austauschen. Der schematische Aufbau ist in der Abbildung dargestellt. Der dargestellte Detaillierungsgrad deckt das komplette Programm ab: sowohl der Teil für den Live-Handel als auch das System für die Backtests folgt diesem Ablauf. Die Unterschiede stecken im Detail im dritten Block (beispielsweise werden Kauf-/Verkaufssignale im Backtest nicht einzeln ausgegeben sondern automatisch gehandelt, die Depotfunktion erzeugt andere, für Backtests relevante Statistiken usw.).

Schematische Darstellung eines HandelssystemsBeschaffung der Kursdaten

Dieser Block wird von Helferskripten erledigt, die automatisiert von Seiten wie www.investing.com und http://finance.yahoo.com/ Kursdaten für die betrachteten Werte ziehen. Das Thema Datenbeschaffung ist ein Kapitel für sich, dem ich in Zukunft wohl auch einen Artikel widmen werde... Speziell von yahoo gibt es eine gut dokumentierte API, mittels derer sich Kursdaten sehr bequem automatisiert herunterladen lassen.

Diese Daten müssen dann für das Handelssystem aufbereitet werden. Dies umfasst z.B. Schritte wie einheitliche Spalten (open/ close/ high/ low), ein einheitliches Datumsformat und die richtige Sortierung. Die Daten werden von den Skripten in .csv Dateien gespeichert und können dann vom System importiert werden. Dort werden sie zentral gespeichert, ab diesem Zeitpunkt werden die .csv Dateien nicht mehr benötigt. (Hinweis: wenn immer im Folgenden oder in der Grafik großspurig von "Datenbank" die Rede ist: die Daten werden im jetzigen System in der Tabellenkalkulation selber gespeichert- das war der einfachste Weg mich um solche Nebenkriegsschauplätze nicht kümmern zu müssen).

Generierung Handelssignale

Auf Basis der importierten Kursdaten werden die Indikatoren berechnet. An dieser Stelle könnten statt  des implementierten Ichimoku Kinko Hyo prinzipiell alle auf Kursdaten basierenden Indikatoren eingebaut werden. Derzeit werden neben Ichimoku beispielsweise auch die True Range und Average True Range Daten berechnet und gespeichert, da diese für die Stop Loss Berechnung nötig sind.

Darauf aufbauend berechnet die nächste Funktion die eigentlichen Kaufsignale. Im jetzigen System ist dies relativ komplex, da Ichimoku eine Vielzahl von Kombinationen seiner einzelnen Indikatoren für Kaufsignale (bzw. deren Filter) benutzt. Eine Unterfunktion dieses Blocks erzeugt übrigens Übersichten wie diese, welche ich wöchentlich im Blog poste.

Die Berechnung der Indikatoren und Auswertung der Kaufsignale müssen natürlich zueinander passen- wird das eine geändert muss auch das andere nachgezogen werden.

Zum dritten und größten Block meines Systems komme ich im nächsten Artikel, der Vollständigkeit halber ist in der Abbildung natürlich das Gesamtsystem abgebildet.

Comments powered by CComment