Jump to content






Photo
* * * * * 1 votes

CDL - Status: Version 0.2 und erste Tests

Posted by Mythos , 23. September 2012 · 980 views

evolution cdl chart pattern
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 < 10% ist (also in nur 10% der matches wird das Target erfüllt) werden die alten Patterns nicht übernommen sondern 20 zufällige neue Patterns erzeugt.

erste Ergebnisse
Gehts rein nach den Werten bin ich jetzt natürlich schon lange reich Posted Image 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 < Schwelle. Mein "intelligentes" System hat erkannt das ein Target "Wenn High[-1] > 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 < 30 auf false gesetzt (< 0), der minMove Parameter wird auf >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

  • 1



February 2021

M T W T F S S
1234567
891011121314
15161718192021
2223242526 27 28

Recent Comments

Recent Entries

1 user(s) viewing

0 members, 1 guests, 0 anonymous users

Categories

Latest Visitors

  • Photo
    eurix
    14. Apr 2017 - 21:50 Uhr
  • Photo
    chimbonda
    03. Jul 2016 - 11:49 Uhr
  • Photo
    tompaul
    21. May 2016 - 16:37 Uhr
  • Photo
    fatlemming
    24. Jan 2016 - 17:41 Uhr
  • Photo
    compulsorytrading
    11. Dec 2014 - 09:33 Uhr