English Русский 中文 Español 日本語 Português
Genetische Algorithmen in MetaTrader 4. Im Vergleich zur direkten Sortierung des Optimizers

Genetische Algorithmen in MetaTrader 4. Im Vergleich zur direkten Sortierung des Optimizers

MetaTrader 4Tester | 18 Januar 2016, 09:38
1 277 0
Andrey Khatimlianskii
Andrey Khatimlianskii


1.     Was sind die Genetischen Algorithmen?

MetaTrader 4 bietet jetzt genetische Algorithmen der Optimierung der Expert Advisors-Eingabeparameter an. Sie reduzieren die Optimierungszeit EAs und praktisch verdrehen dabei keine Testergebnisse. Ihre Arbeitsprinzipien wurden besser im Artikel Genetische Algorithmen - Mathematik beschrieben.

Dieser Artikel widmet sich dem Optimierungsvergleichen der Eingabeparameter mit den genetischen Algorithmen  im Vergleich zur direkten Sortierung, also zur ganzen Sortierung der Parameter-Werten.

 

2.     Der Experte

       Um das Experiment durchzuführen, habe ich den Experten etwas bearbeitet, den kennen Sie gut aus dem Artikel Orders steuern ist einfach  Experte CrossMACD:

  • Ich habe Stoploss und Takeprofit zu den platzierenden Positionen hinzugefügt.
  • Ich habe Trailing Stop zur Positionen-Begleitung hinzugefügt.
  • Um die Signalen zu filtrieren, habe ich den Parameter OpenLuft hinzugefügt: jetzt wird es signalisiert, wenn die Null-Linie mit einer bestimmten Anzahl von Punkten (mit der Genauigkeit eine Dezimalstelle) gekreuzt wird.
  • Ich habe den Parameter CloseLuft hinzugefügt, für die ähnliche Filtration der Schließung-Signalen.
  • Ich habe die schnelle und langsame Mittelwerten in externen variablen Perioden gesetzt, welche bei der Indikatorberechnung MACD verwendet werden.

Nun ist es ein abgeschlossener Experte. Es wird bequem, wenn wir ihn optimieren und beim Handeln verwenden. Sie können auch den Experten  CrossMACD_DeLuxe.mq4 in ihrem Computer herunterladen und alle Testen selbst durchführen.


3.     Optimierung

Jetzt können wir anfangen, zu optimieren. Im Rahmen der Vorbereitung dieses Artikels werden 3 Testen mit 3 verschiedenen Anzahl der Sortierung des Optimizers durchgeführt. Dies ermöglicht, die Gewinne zu vergleichen, die bei der Verwendung der genetischen Algorithmen in verschiedenen Situationen erhalten werden.

Nach jedem Test werde ich manuell den Cash des Testers löschen, damit die folgenden Tests bereits berechneten Varianten nicht verwenden. Das ist notwendig, nur die Testergebnisse genauer bekommen zu können - bei einer normalen Verwendung des Optimizers, wird das automatische Caching der Ergebnisse den wiederholten Optimierungsprozess beschleunigen.

Um Ergebnisse zu vergleichen, wird die Optimierung mit der Verwendung der genetischen Algorithmen zweimal durchgeführt: zum ersten Mal -, um den maximalen Gewinn (Profit) herauszufinden, zum zweiten Mal - um die höchste Rentabilität (Profit Factor) zu finden. Danach werden die drei besten Ergebnisse für beide Optimierungsmethoden in der zusammenfassenden Berichtstabelle angezeigt, die nach den angegebenen Spalten sortiert wird.

Die Optimierung hat einen experimentellen Zweck. Der Autor verfolgte dabei kein Ziel, die Parameter zu finden, die den maximalen Gewinn bringen würden.

Test 1

  • Chart-Symbol – EURUSD;
  • Die Periode des Charts – Н1;
  • Testzeitraum – 2 Jahre;
  • Modellierung – "bei Eröffnungspreisen";
  • Sortierung der Parameter: 

Der Variable-Name

Startwert

Schritt

Endwert

StopLoss

0

10

100

TakeProfit

0

10

150

TrailingStop

0

10

100

OpenLuft

0

5

50

CloseLuft

0

5

50

Die Anzahl der Sortierung

234 256

 

Es muss beachtet sein, dass bei der Verwendung der genetischen Algorithmen die erwartete Zeit der Optimierung ungefähr gleich ist, genauso wie es bei der Optimierung mit der direkten Parametersortierung ist. Der Unterschied besteht darin, dass ein genetischer Algorithmus immer die bewussten schlechten Kombinationen sortiert, auf diese Weise reduziert er die Menge der notwendigen Tests mehrmals (etwa einige zehn, hundert, tausend) Mal. Deshalb sollen Sie sich nicht auf die erwartete Optimierungszeit bei der Verwendung der genetischen Algorithmen orientieren. Die tatsächliche Optimierungszeit wird immer kürzer:

die direkte Sortierung

Genetischer Algorithmus

       Wie Sie sehen können, hat die Optimierung mit genetischen Algorithmen weniger als vier Minuten gedauert, statt der erwarteten fünfeinhalb Stunden. ;)

       Die Optimierungsgrafik hat dabei Unterschiede im Vergleich zur Grafik von einer einfachen Optimierung. Denn die schlechten Kombinationen wurden bereits aussortiert und die nachfolgenden Tests haben die Parameter-Kombinationen verwendet, die einen höheren Gewinn geben. Deshalb steigt die Balancegrafik hoch:

 


       Betrachten wir nun die Ergebnisse der beiden Optimierungsmethoden in allen Details.

Ergebnisse Tabelle:

 

die direkte Sortierung

Genetischer Algorithmus

Die gesamte
Optimierungszeit

4 Stunden 13 min. 28 sek.

3 min. 50 sek.

 

SL

TP

TS

Open Luft

Close Luft

Profit

SL

TP

TS

Open Luft

Close Luft

Profit

1

70

140

0

20

30

1248.08

70

140

0

20

30

1248.08

2

70

140

0

20

35

1220.06

70

140

0

20

35

1220.06

3

70

150

0

20

30

1176.54

70

150

0

20

30

1176.54

 

SL

TP

TS

Open Luft

Close Luft

Profit Factor

SL

TP

TS

Open Luft

Close Luft

Profit Factor

1

100

50

40

50

5

4.72

0

50

40

50

5

4.72

2

90

50

40

50

5

4.72

90

50

40

50

5

4.72

3

80

50

40

50

5

4.72

80

50

40

50

0

4.72

 

Wie Sie aus der Tabelle sehen können, ist die Optimierungschnelligkeit mit genetischen Algorithmen einige zehn mal schneller! Die Ergebnisse bleiben praktisch gleich. Es gibt mehrere Ergebnisse mit dem maximalen Gewinn von 4.72 , deshalb werden verschiedene Parameter-Kombinationen im Bericht geschrieben, aber das ist nicht so wichtig.

Nun versuchen wir, die Anzahl der Sortierungen zu verringern, aber dabei auch die Testzeit zu verlängern. Dafür wird das "Alle Ticks" Modell verwenden.

Test 2

 

  • Chart-Symbol – EURUSD;
  • Die Periode des Charts – Н1;
  • Testzeitraum – 2 Jahre;
  • Modellierung – "Alle Ticks";
  • Sortierung der Parameter:
 

Der Variable-Name

Startwert

Schritt

Endwert

StopLoss

0

10

100

TakeProfit

0

10

150

TrailingStop

0

10

100

OpenLuft

0

10

50

Die Anzahl der Sortierung

11 616

 

Ergebnisse Tabelle:

 

die direkte Sortierung

Genetischer Algorithmus

Die gesamte Optimierungszeit
.

32 Stunden 32 min. 37 sek.

1 Stunden. 18 min. 51 sek.

 

SL

TP

TS

Open Luft

Profit

SL

TP

TS

Open Luft

Profit

1

50

0

0

20

1137.89

50

0

0

20

1137.89

2

70

0

0

20

1097.87

70

0

0

20

1097.87

3

60

0

0

20

1019.95

60

0

0

20

1019.95

 

SL

TP

TS

Open Luft

Profit Factor

SL

TP

TS

Open Luft

Profit Factor

1

50

90

60

50

4.65

50

90

60

50

4.65

2

50

140

60

50

4.59

50

140

60

50

4.59

3

100

90

60

50

4.46

70

90

60

50

4.46

 

Bei solcher Anzahl der Sortierungen wird die Schnelligkeit 25 Mal unterschiedlicher sein, also nicht so schlimm. Die Ergebnisse sind fast 100% gleich, der einzige Unterschied ist im Stoploss-Wert im dritten Test. Die Rentabilität ist aber trotzdem maximal geblieben.

Nun versuchen wir, die Anzahl der Sortierungen zu verringern und dabei auch die Testzeit zu verkürzen. Dafür lassen Sie uns das Modell "Kontrollpunkte" verwenden.

Test 3

 

  • Chart-Symbol – EURUSD;
  • Die Periode des Charts – Н1;
  • Testzeitraum – 2 Jahre;
  • Modellierung – ""Kontrollpunkte"";
  • Sortierung der Parameter:

Der Variable-Name

Startwert

Schritt

Endwert

StopLoss

0

10

100

OpenLuft

0

5

50

CloseLuft

0

5

50

Die Anzahl der Sortierung

1 331

 

Ergebnisse Tabelle:

 

die direkte Sortierung

Genetischer Algorithmus

Die gesamte Optimierungszeit
.

33 min. 25 sek.

31 min. 55 sek.

 

SL

Open Luft

Close Luft

Profit

SL

Open Luft

Close Luft

Profit

1

0

0

45

1078.03

0

0

45

1078.03

2

70

20

15

1063.94

70

20

15

1063.94

3

70

20

25

1020.19

70

20

25

1020.19

 

SL

Open Luft

Close Luft

Profit Factor

SL

Open Luft

Close Luft

Profit Factor

1

80

50

15

2.73

80

50

15

2.73

2

70

50

15

2.73

70

50

15

2.73

3

90

50

15

2.65

90

50

15

2.65

 

Die Situation hat sich hier verändert. Die Optimierungszeit ist gleich (ein unbedeutender Fehler ist zulässig), und die Ergebnisse sind identisch. Es ist deswegen so geworden, weil die Optimierung nur aus 1331 Sortierungen bestand, und eine solche Menge von Testen ist für die Verwendung der genetischen Algorithmen einfach zu wenig. Sie haben keine Zeit, "Anlauf zu nehmen" -  der Gewinn in der Optimierungsschnelligkeit wird durch die Sortierung der bewussten unprofitablen Parameter-Kombinationen durchgesetzt, und bei einer solchen Anzahl von Varianten können Genetische Algorithmen nicht bestimmen, welche "Eltern" (Parameter-Kombinationen) den schlechten  "Nachwuchs" geben. So macht es keinen Sinn, sie zu benutzen.


4.     Schlussfolgerungen

    Genetische Algorithmen - sind ein sehr guter Zusatz zu den Strategien des Optimizers МТ 4. Die Beschleunigung der Optimierung wird bei solcher Anzahl von Sortierungen fantastisch verbessert, die Ergebnisse sind mit den Ergebnissen einer einfachen Optimierung gleich.

    Jetzt gibt es keinen Sinn, die vollständige Sortierung in Parametern zu verwenden. Genetische Algorithmen finden das beste Ergebnis schneller und genauso wirkungsvoll.

5.     Nachwort

    Nachdem, wie ich schon den Artikel fertig geschrieben habe, habe ich wegen meiner Neugier die Optimierung CrossMACD_DeLuxe über allen Parametern gestartet. Die Anzahl der Kombinationen bestand aus über hunderte Millionen (103 306 896). Die Optimierung mit genetischen Algorithmen dauerte nur 17 Stunden, während der Optimierung mit Sortierung in allen Parametern  würde etwa in 35 Jahren (301 223 Stunden)beenden.

    Jetzt ziehen Sie bitte selbst Schlüsse daraus.

Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalartikel: https://www.mql5.com/ru/articles/1409

Beigefügte Dateien |
Mehrmalige Neuberechnungen des nullwertigen Bars in einigen Indikatoren Mehrmalige Neuberechnungen des nullwertigen Bars in einigen Indikatoren
Der Artikel widmet sich dem Problem bei einer Neuberechnung des Indikator-Wertes im Client-Terminal MetaTrader 4, wenn das nullwertige Bar sich ändert. Es handelt sich da um die allgemeine Idee, dass zusätzliche Programm-Elementen im Indikator-Code hinzugefügt werden können, welche die Wiederherstellung des Programmen-Codes ermöglichen, der bis zu mehrmaligen Neuberechnungen gespeichert werden muss.
Genetische Algorithmen - Mathematik Genetische Algorithmen - Mathematik
Genetische Algorithmen sind für die Lösung der Optimierungsaufgaben vorgesehen. Als Beispiel für eine solche Aufgabe, können wir das Lernen in Neuronet nehmen, das heißt, es werden solche Gewichtswerte ausgewählt, die den minimalen Fehler zulassen. Im Grunde des genetischen Algorithmus liegt ein Zufallssuchverfahren.
Mein erster Gral Mein erster Gral
Es werden die häufigsten Fehler betrachtet, die Programmieranfänger beim Testen ihrer "superprofitable" Handelssystems betreffen, die sie erstellt haben. Es werden Beispiele gegeben, die beim Testen fantastische Ergebnisse geben, aber im wirklichen Handeln führen nur zu Verlusten.
Wie die Testergebnisse des Experten selbstständig  bewerten Wie die Testergebnisse des Experten selbstständig bewerten
Im Artikel wurden Formel und die Berechnungsmethode der Daten angeboten, die im Testerbericht angezeigt werden.