Hallo zusammen,
meine versprochene direkte Anbindung hat sich um ein paar Tage verzögert. Aber nun ist die erste Version da.
Eine kurze Erläuterung des Paketes und zu seiner Verwendung.
Das Gesamtpaket besteht aus:
1. Handelssystem WekaInvestox
Das beigefügte Handelssystem arbeitet mit Tagesdaten für den Dax. Grundsätzlich kann jede Komprimierung verwendet werden. Die Handelsregel ist sehr einfach. Der SVM-Kernel liefert für jeden Datensatz die Progrnose zurück. Wenn die Prognose positiv ist wird gekauft, wenn sie negativ ist wird verkauft. Dies kann natürlich verändert werden und hängt von dem definierten Prognoseziel ab (Hierzu weiter unten "Weka.ini").
Der Aufruf des SVM-Kernels erfogt über den Indikator WekaInvestox.
Diesem sind die folgenden Parameter zu übergeben:
- trainPerioden = Anzahl der für das Training des Kernels gewünschten Perioden
- testPerioden = Anzahl der für die Prognose gewünschten Perioden
- cValue = C-Value über den das Verhalten SVM-Kernels angepasst werden kann
(Der Kernel ist im Moment noch fest gewählt XXX, soll aber demnächst ebenfalls hier bestimmt werden können)
Bei jeder Aktualisierung des Netzes in Investox werden die kompletten Daten für die Trainings- und die Testperioden exportiert, der Kernel in
SVM wird trainiert, die Prognose wird für die Trainings- und die Testdaten erstellt und dann sind die Prognosen in Investox verfügbar.
Die Prognosen für die Trainingsperioden habe ich mit berücksichtigt, damit die Prognosequalität auch für dieses Intervall beurteilt werden
kann.
Welche Daten nun für das Training berücksichtigt werden wird in der Weka.ini festgelegt.
2. Indikator WekaInvestox für den Import in Investox
3. Integrationsfiles für Weka
Kompleter Inhalt des Verzeichnisses "C:\weka"
Die dort erforderlichen Dateien sind Weka.ini und InvWeka.jar
Erläuterung zu Weka.ini
Die Weka.ini Datei ist eine typische INI-Datei in der Parameter für die Steuerung der Experimente gemacht werden. Zur Zeit sind nur die
Parameter für die gewünschten Zeitreihen (reihe1= - reiheN=), das Ziel (ziel=) und die gewünschten Historien (historien=) relevant.
Die Reihen 1-n bestimmen, welche Zeitreihen ausgewertet werden. Bsp.:
reihe1=Close
reihe2=Roc(Close - Open, 5, %)
...
Hier werden die Funktionen wie in Investox selber eingetragen. Wenn eine Zeitreihe für das Handelssystem in Investox funktioniert sollte sie
auch hier für den SVM-Schätzer klappen. Wenn nicht ... dann schaut euch die Fehlermeldung in "c:\weka\debug.txt" an. Dort werden Reihen die
nicht gelesen werden können angegeben (und noch ein paar mögliche Fehler).
Das Prognoseziel wird wie die Reihen bestimmt. Also zum Beispiel:
ziel=Ref(Open, 2) - Ref(Open, 1)
Ich gehe ja mit dem Open der Folgeperiode ins Rennen. Natürlich kann hier jede gültige Investoxformel stehen.
Historien bedeuten, dass der Kernel nicht nur die aktuellen Werte der Reihen, sondern auch deren gewünschte Vergangenheit berücksichtigt.
Z.B.:
historien=0,-1,-5
Die Zeitreihen werden in der jeweils aktuellen Periode und den zurückliegenden Perioden 1 und 5 verwendet. Ganz einfach <Periode1>,<Periode2> usw.
Ich habe den Ansatz mit den frei definierbaren Reihen aus Investox gewählt, da bei der Prognose das Ergebnis in erster Linie von den in die Auswertung eingehenden Daten abhängt. Natürlich "lernt" eine SVM auch auf der Grundlage von Close, Open, Low, High, Volume, Openint und den Zeitreihen dieser Werte. Aber wenn wir zum Beispiel an die umfangreichen Arbeiten zu Candlesticks, Widerstandlinien, Formationen, Pivot-Linien oder Fibonacci-Zahlen wird leicht deutlich, dass es Muster gibt, die einen nicht unerheblichen Einfluß auf unseren Erfolg zu haben scheinen. Solche Muster kann eine SVM aus einem kurzen Trainingsintervall des Dax oder des Bund natürlich nicht neu lernen. Um die bereits aufbereiteten Muster beim Training der SVM dennoch zu berücksichtigen können die Reihen frei nach Investox-Syntax frei gestaltet werden. So könnte der Abstand eines aktuellen Wertes zu den Pivot-Linien der letzten übergeordneten Zeiteinheit als Reihe übergeben
werden.
Für den Start würde ich aber die Weka.ini wie ausgeliefert verwenden. Optimieren kann man wenn es läuft.
Voraussetzungen überprüfen!
Investox 5 - wegen des VBScript
Auf dem Rechner muss eine aktuelle Java Runtime installiert und im Pfad
eingebunden sein.
1. Öffnet ein Dos-Fenster: (in XP) Start->Ausführen und Cmd eintippen
2. Fragt die Java Version ab: Im Dos-Fenster "java - version".
Wenn die Version 1.5 oder höher angezeigt wird sollte alles OK sein - selber habe ich jedoch nur mit 1.6 getestet.
Wenn die Meldung kommt, dass der der Befehl unbekannt ist müsst ihr den Pfad auf Java in der Systemsteuerung bekanntgeben. Wenn kein Java auf
dem Rechner ist müsst Ihr dies zuvor installieren. Eine sehr klare Anleitung findet ihr unter "http://www.torsten-horn.de/techdocs/java-install.htm#InstallationUnterWindows".
Nur dass wir keine Java-SDK (Entwicklungsumgebung) sondern nur die Java-JRE (Laufzeitumgebung) brauchen. Aber alle Schritte können analog
durchgeführt und getestet werden. Nur die Installation von ANT, Schritt 7 in der Anleitung, ist natürlich nicht erforderlich.
Das Paket MUSS auf dem Laufwerk "C" und dort im Verzeichnis "c:\weka" liegen. Ansonsten funktioniert NICHTS.
Aktuelle Einschränkungen
1. Es läßt sich nur ein Kernel für ein Handelssystem berechnen.
Wegen der von mir verwendeten Namenskonventionen würden mehrere Kernels die gleichen internen Dateien verwenden und das klappt nicht.
2. Es läßt sich zur Zeit nur SVM als Schätzer verwenden. Andere Algorithmen wie z.B. J48 lassen sich noch nicht ansteuern.
Das Archiv mit dem HS, dem Indikator und den beiden Dateien für den Ordner "c:\weka" findet ihr in Rapidshare unter
[url]http://rapidshare.com/files/74273408/WekaInvestoxIntegration.rar.[/url] Hier im Forum gibt es leider keinen Platz für so GROSSE Dateien.
DIREKTER DOWNLOAD der Datei (zugefügt von Udo)
Bei Fragen und Problemen einfach nachfragen.
Viele Grüße und danke allen, die mich aktiv unterstütz haben.
Martin
Das Handelssystem ist nur zu Demonstrationszwecken beigefügt. Jede Verwendung birgt das Risiko von Verlusten. Der Handel erfolgt auf eigenes Risiko.