Jump to content
Tom Next - Daytrading Community
  • entries
    19
  • comments
    44
  • views
    36,434

CDL - Status: Version 0.2 und erste Tests


Mythos

1,619 views

Hallo Leute,

 

zuerstmal sorry für die lange Wartezeit. Die letzten Wochen waren bei mir beruflich sehr stressig wodurch die Motiviation und Energie für alle anderen Projekte leider entsprechend gelitten hat. Zusätzlich muss ich sagen das die Umsetzung der CDL doch etwas komplexer war als erhofft, aber alles der Reihe nach:

 

Die Implementierung

Wie der Titel schon sagt steht Version 0.2 der CDL, wobei ich immer schlecht in Versionsnummern bin. Eigentlich stehts kurz vor Version 1.0 .

Von den Funktionen her ist jetzt alles drin was in den vorigen Beiträgen beschrieben wurde. Umgesetzt hab ichs auch ziemlich genau wie geplant. Da es in MT scheinbar keine Möglichkeit gibt ein Teilarray als Parameter zu übergeben (also zB array[2] von einem 2-dimensionalen Array) wars teils etwas komplizierter zu schreiben, aber mei. Es geht ja erstmal nur um einen Proof-of-Concept.

 

noch ein paar technische Details: Um die Lesbarkeit ein wenig aufrecht zu erhalten, hab ich die Lib inzwischen in mehrere mqh aufgeteilt die jedoch nur zusammen funktionieren. Aber dadurch erspart man sich das ewige Suchen und Scrollen im großen File. Es gibt derzeit 3 mqh und die lib selbst, jedes File ca 300 Zeilen. Also für ein "richtiges" Softwareprojekt nicht erwähnenswert. (Ich frag mich grad wieso ich solang dafür gebraucht hab :hmmmm: )

 

Funktionsweise und Testablauf

Die Grundfunktionalität ist wie gesagt ziemlich genau wie geplant. Zusätzlich hab ich noch speichern der Patterns in Files hinzugefügt: Jedes Pattern erhält sein eigenes File. Der Dateiname setzt sich aus der Trefferquote des Patterns und der ID zusammen. Die Trefferquote hab ich dazugetan damit man schnell die guten Patterns analysieren kann.

Zusätzlich gibts ein File mit einer Liste der derzeit aktiven Patterns (inkl. Trefferquote damit man eindeutig das File findet). Im Moment wird die Dateistruktur aber nur zur manuellen Analyse verwendet.

Ursprünglich wollte ich ja mit einer Menge von "klassischen" Chartpattern starten und diese Evolutionieren lassen, aber aus Faulheit geh ich derzeit her und erzeuge einfach zufällig 50 Patterns als Start.

 

Pro Generation werden alle mit einer Trefferquote in den oberen 20% zur "Fortpflanzung" verwendet. Außerdem werden (im Gegensatz zum Plan) 30% der alten guten (also obere 20%) Patterns wiederverwendet. Aus dem einfachen Grund weil sonst gute Patterns in der Evolution verloren gehen könnten (und auch wirklich verloren gingen).

 

Wenn die beste Trefferquote

 

erste Ergebnisse

Gehts rein nach den Werten bin ich jetzt natürlich schon lange reich loungelizard.gif Gestern Abend hab ich die ersten Evolutionen laufen lassen und bereits nach ein paar Generationen ist die Trefferquote von 0 auf 99% gestiegen. (bei 5000 Bars im Test) und das unabhängig vom TF. Meine anfängliche Skepsis war leider berechtigt: Bei der Entwicklung haben sich ein paar "Denkfehler" eingeschlichen. Es sind einfach nicht alle Targetfunktionen sinnvoll, hier eine Liste der bisher erkannten Denkfehler:

  • Breakout/Breakthrough: Die minimale Bewegung nach dem Durchbruch darf natürlich nicht negativ sein. Das Target "Wenn das High > 10 ist, dann muss auch High > 10-2=8 sein" ist zwar immer erfüllt, bringt aber in der Tradingpraxis nicht sehr viel
  • Die Schwelle beim Breakout/Breakthrough darf erst inbar durchschritten werden, sprich im Longfall muss gelten Open Low[0] => High[-1] > Low[0]+X" sehr häufig stimmt... Ein Breakout-Target bringt halt nur was, wenn man auch an der Schwelle einsteigen kann...
  • Die minimale Bewegung muss größer als der Spread sein. Es bring nichts wenn ein Breakout passiert und der Kurs mindestens 1 Pip weiterläuft. Das Target ist zwar meist erfüllt, aber im Tradingalltag nicht profitabel
  • Relative Bewegungen sind mit Vorsicht zu genießen. Gleiche Begründung wie beim Spread. Im M1 Chart hilft dir eine Bewegung von 5% vom Vorbar nicht wirklich was, das sind dann immer noch nur ein paar Pips.

Um diese Situationen zu verhindern, hab ich Targetconstraints eingeführt. Nach Mutation und Paarung werden die Patterns auf diese Constraints zurechtgestutzt. also zB wird das "isRelative" Flag bei TF 0 gestutzt etc. Zusätzlich hab ich in der Targetauswertung den Spread miteinkalkuliert.

 

Mit diesen Verbesserungen läuft jetzt eine neue Simulation. Im Daily sind wir bereits nach 30 Generationen auf > 90% Trefferquote, H1 auf 52%, M1 steht nach 200 Generationen immer noch bei 6 % und M15 hat erst 3 Generationen durch ;)

 

Noch was technisches zu den Simulationen: Da ich hier keine Backtests mache sondern rein die Generationen in einem Skript laufen lasse, kann ich in einer MT Instanz das Skript auf mehreren Charts/TFs laufen lassen wodurch ich brav alle Kerne belasten kann :D

 

Soweit mal der Zwischenbericht. Mal sehen wieviele Denkfehler und Stolpersteine ich heute noch finde...

 

Freu mich wie immer auf Kommentare und Anregungen.

Thx for reading

0 Comments


Recommended Comments

There are no comments to display.

×
×
  • Create New...