Die letzten 2 Wochen war ich im Blog (bis auf die wochenendlichen Übersichten der Ichimoku-Auswertungen und des Testdepots) relativ wenig aktiv. Das liegt daran, dass ich in meiner (gerade eher knappen) Freizeit weiter an der Neuentwicklung des Handelssystems gearbeitet habe. Daher nun ein kurzer Abriss über den Stand der Dinge.

 blockdiagramm handelssystem v2 engÜber die "Architektur" des Systems habe ich ja bereits gebloggt, s. die einzelnen Beiträge dazu im Archiv. Für die Neuentwicklung behalte ich diese grundsätzlich bei, mit ein paar Änderungen wo diese sinnvoll sind. Zur Erinnerung links nochmals die schematische Darstellung (diesmal in Englisch, da ich die selbe Grafik auch zur Dokumentation des Quellcodes nutze- diese ist ebenfalls in Englisch). Das Auslesen der Kursdaten bleibt wie gehabt in der Hand meiner bewährten Skripte, daher ist dieser Block in lila eingefärbt. Die Skripte erzeugen .csv Dateien, die ich wiederrum in die MySQL Datenbank einlesen lasse (Nebenbei: das Einlesen der .csv Dateien erledigt MySQL selber, wieder ein paar Zeilen Code gespart :)))

/* prepare statement in query:  
       LOAD DATA LOCAL INFILE 'data/symbol.csv' INTO TABLE quotes_daily
       FIELDS TERMINATED BY ',' ENCLOSED BY ','
       LINES TERMINATED BY '\n'
          (date, open, high, low, close, volume, changes)
          set symbol=symbol;
    */

Obige Anweisung muss nur in einen String gepackt werden (das richtige Symbol/ der Dateiname muss natürlich noch hinein), dieser wird dann an den Server geschickt, dieser erledigt das Updaten. Die Verbindung zur Datenbank wird natürlich vorher etabliert (dafür ist wieder eine andere Funktion zuständig). Der komplette Block "Data Import" besteht nur aus einer Funktion und kommt mit 14 Zeilen Code aus (plus eine Million Zeilen Kommentare ;)).

Die Struktur der Datenbank ist im Kern stabil, wird aber natürlich ständig erweitert (immer wenn ich Bedarf finde, irgend einen neuen Datensatz dauerhaft speichern zu müssen). Derzeit umfasst die Datenbank 3 Tabellen:

  • quotes_daily: enthält Datum, Symbolkürzel, Eröffnungs-/Schlusskurse, Lows und Highs des Tages sowie Volumen und prozentuale Änderung
  • indicators_daily: enthält derzeit Datum, Symbolkürzel, highest highs/lowest lows für jeweils 3 unterschiedliche Perioden, true range und average True Range (alle Perioden werden per Konfigurationsdatei eingestellt)
  • ichimoku_daili: enthält neben Datum und Symbol die ichimokuspezifischen Indikatoren: tenkan-sen, kijun-sen, chikou-span, Senkou Span A und B

Primärschlüssel für alle Tabellen ist immer {date, symbol}- über diese beiden Felder sind die Tabellen verbunden. Alle Symbole können so in diesen selben 3 Tabellen zusammen gespeichert werden. Soll das System später erweitert werden, z.B. um neue Indikatoren, können die Tabellen ergänzt werden, ohne die bestehende Datenbank (und den ganzen Code der diese bisher bedient) zu ändern.

Der gestrichelte Kasten in der Grafik markiert den Teil, den ich bereits geschrieben habe, und der funktioniert. Die Datenbank und die Funktionen die auf diese zugreifen laufen. Die Berechnung der fünf Ichimoku-Indikatoren (sowie ein paar Hilfsindikatoren wie highest highs/lowest lows) ist ebenfalls bereits fertig. Die in einem früheren Beitrag beschriebene Schnittstelle zu Gnuplot habe ich heute abend fertiggestellt- guten Tag automatische Chartgenerierung ;)

Auf den ersten Blick nicht so beeindruckend, allerdings bildet das Blockdiagramm natürlich nicht den ganzen Kleinkram ab, der nötig ist um das System ans Laufen zu bekommen: Speicherverwaltung, Datei- Input/Output, Konfiguration parsen und prüfen, Gnuplot-Dateien erstellen usw usf. Wie auf einer Baustelle, die auch erstmal eine Auffahrt, Strom, Wasser und ein Dixihäuschen benötigt, bevor der erste Spatenstich getan wird.

Darum, voller Stolz, hiermit das hochoffiziöse erste Lebenszeichen:

firstrun

Der aufmerksame Leser sieht, wie sich das Programm fast an das Kochrezept des Blockschaltbildes hält- Braves Programm :)

Die Ausgabe im Terminal ist natürlich nicht so beeindruckend, wird von mir auch hauptsächlich zur Fehlersuche genutzt, deshalb -erneut hauptsächlich zum Angeben- der Chart, der durch obigen Programmlauf erzeugt wurde (ich wähle WTI, weil ich endlich mal wieder nen gescheit ausgebildeten Trend sehen möchte). Wie ich das mit Gnuplot gemacht habe, habe ich ebenfalls in einem früheren Blogbeitrag beschrieben.

WTI contrast

Damit sind alle Voraussetzungen geschaffen, um den unangenehmen Teil anzupacken: Eine gefühlte Million WENN-DANN Abfragen um das komplette Ichimoku Kinko Hyo System auf die Indikatoren und Kurse loszulassen und Kaufsignale herauszufiltern. Hey-Ho, let's go!

 

Comments powered by CComment