![Genetische Algorithmen in MetaTrader 4. Im Vergleich zur direkten Sortierung des Optimizers](https://c.mql5.com/i/articles/overlay.png)
Genetische Algorithmen in MetaTrader 4. Im Vergleich zur direkten Sortierung des Optimizers
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:
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 |
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
![Mehrmalige Neuberechnungen des nullwertigen Bars in einigen Indikatoren](https://c.mql5.com/2/13/139_6.png)
![Genetische Algorithmen - Mathematik](https://c.mql5.com/2/13/133_1.png)
![Mein erster Gral](https://c.mql5.com/2/13/144_2.png)
![Wie die Testergebnisse des Experten selbstständig bewerten](https://c.mql5.com/2/13/125_2.gif)
![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.