English Русский 中文 Español 日本語 Português
preview
Experimente mit neuronalen Netzen (Teil 3): Praktische Anwendung

Experimente mit neuronalen Netzen (Teil 3): Praktische Anwendung

MetaTrader 5Experten |
319 45
Roman Poshtar
Roman Poshtar

Einführung

In den vorherigen Artikeln der Serie Geometrie neu betrachten und Intelligente Optimierung Neuronaler Netze habe ich meine Beobachtungen und Experimente mit neuronalen Netzen mitgeteilt. Außerdem habe ich die Optimierung der resultierenden EAs durchgeführt und einige Erklärungen zu ihrer Arbeit geliefert. Trotz alledem habe ich das Thema der praktischen Anwendung der erzielten Ergebnisse kaum berührt. In diesem Artikel werde ich dieses bedauerliche Versäumnis nachholen.

Ich werde die praktische Anwendung der erzielten Ergebnisse zeigen und einen neuen Algorithmus vorstellen, mit dem wir die Möglichkeiten unserer EAs erweitern können. Wie immer werde ich nur MetaTrader 5-Tools ohne jegliche Software von Drittanbietern verwenden. Der Artikel wird höchstwahrscheinlich einer Schritt-für-Schritt-Anleitung ähneln. Ich werde versuchen, alles so einfach und verständlich wie möglich zu erklären.


1. Die Idee der Verwendung

Bei der Optimierung der beiden vorherigen Systeme erhielt ich einige Ergebnisse mit den besten Werten des Gewinnfaktors oder des komplexen Kriteriums und auch eine Reihe von Gewichten für unsere Perzeptronen und neuronalen Netze. Die Tests der erzielten Ergebnisse haben recht akzeptable Werte ergeben. Die Hauptidee dieser Verbesserung besteht darin, alle Optimierungsergebnisse in einem EA zu kombinieren und sie gleichzeitig arbeiten zu lassen. Wie Sie sich vielleicht vorstellen können, ist es nicht sehr bequem, 10 Charts mit zehn EAs offen zu halten. Außerdem können wir so die Ergebnisse in einer erweiterten (umfassenden) Weise betrachten, indem wir zum Beispiel 10-20 Parameter gleichzeitig verwenden.


2. Währungspaar. Optimierung und Vorwärtstestbereich. Einstellungen

Nachstehend finden Sie alle Optimierungs- und Testparameter:

  • Forex;
  • EURUSD;
  • H1;
  • Indikatoren: 2 TEMA-Indikatoren mit den Periodenlängen von 1 und 24. Ich habe den MA fallengelassen, da sich der TEMA-Indikator in zahlreichen Tests als besser erwies.
  • StopLoss und TakeProfit für die entsprechenden Änderungen von 600 und 60;
  • Optimierungs- und Testmodi „Nur Öffnungspreise“ und „Komplexes Kriterium, Maximum“. Der Modus „Komplexes Kriterium, Maximum“ zeigte stabilere und rentablere Ergebnisse als der Modus „Maximaler Gewinn“;
  • Optimierungsbereich 3 Jahre. 2018.12.09 - 2021.12.09. 3 Jahre sind kein zuverlässiges Kriterium. Sie können mit diesem Parameter selbst experimentieren;
  • Die Dauer des Vorwärtstest beträgt 1 Jahr. 2021.12.09 - 2022.12.09;
  • Bei allen Vorwärtstests wurden 20 Optimierungsergebnisse gleichzeitig verwendet;
  • Optimierung von Expert Advisors mit Perceptron „Schneller genetischer Algorithmus“;
  • Optimierung von EAs unter Verwendung der DeepNeuralNetwork.mqh-Bibliothek „Langsamer vollständiger Algorithmus“;
  • Ersteinlage 10.000;
  • Hebel 1:500.

3. Perceptron-basierte EAs

 Nach zahlreichen Beobachtungen hat sich herausgestellt, dass die Gewichtungstiefe von 200 in EAs mit einem Perzeptron nicht erforderlich ist. 20 ist ausreichend. Daher wurden der Perceptron-Code selbst und die Optimierungsparameter geändert. Jetzt optimieren wir die Gewichte von 0 in Schritten von 1 bis 20.

 Außerdem wurde der Parameter „Param“ eingeführt, der für die Tiefe des Rückgangs auf die positive oder negative Seite des Perzeptrons verantwortlich ist. Dieser Parameter wirkte sich auf die Anzahl der Abschlüsse und deren Genauigkeit aus. Die Zahl der Abschlüsse ist zurückgegangen, während sich ihre Genauigkeit verbessert hat.

 Jedes der Systeme verwendet 2 EAs. Die erste dient der Optimierung, während die zweite für die direkte Arbeit gedacht ist. Ich habe mich entschlossen, die Aufteilung der Aufträge durch Auftragskommentare zu regeln, da dies meiner Meinung nach der einfachste und bequemste Weg ist. Der eindeutige Auftragsindex ist die Seriennummer in der Probe selbst. Die Probe ist ein Archiv mit den erzielten Optimierungsergebnissen. Der Parameter MaxSeries wird verwendet, um den Umfang der gleichzeitigen Arbeit zu begrenzen.

for(int i=0; i<=(ArraySize(EURUSD)/6)-1; i++){
 comm=IntegerToString(i);
 x1=(int)StringToInteger(EURUSD[i][0]);
 x2=(int)StringToInteger(EURUSD[i][1]);
 x3=(int)StringToInteger(EURUSD[i][2]);
 x4=(int)StringToInteger(EURUSD[i][3]);
 
 Param=(int)StringToInteger(EURUSD[i][4]);

//SELL++++++++++++++++++++++++++++++++++++++++++++++++
if (CalculateSeries(Magic)<MaxSeries && (perceptron1()<-Param) && (CalculatePositions(symbolS1.Name(), Magic, POSITION_TYPE_SELL, EAComment+" En_"+comm)==0) && (ind_In1[1]>ind_In2[1]) && (SpreadS1<=MaxSpread)){
  OpenSell(symbolS1.Name(), LotsXSell, TakeProfit, StopLoss, EAComment+" En_"+comm);
}

//BUY++++++++++++++++++++++++++++++++++++++++++++++++
if (CalculateSeries(Magic)<MaxSeries && (perceptron1()>Param) && (CalculatePositions(symbolS1.Name(), Magic, POSITION_TYPE_BUY, EAComment+" En_"+comm)==0) && (ind_In1[1]<ind_In2[1]) && (SpreadS1<=MaxSpread)){
  OpenBuy(symbolS1.Name(), LotsXBuy, TakeProfit, StopLoss, EAComment+" En_"+comm);
}

}

 Neuer Perceptron-Code:

1 Perzeptron 4 Neigungswinkel SL TP und 1 Perzeptron 4 Neigungswinkel

double perceptron1() 
  {
   double w1 = x1 - 10.0;
   double w2 = x2 - 10.0;
   double w3 = x3 - 10.0;
   double w4 = x4 - 10.0;
   
   double a1 = (((ind_In1[1]-ind_In1[6])/Point())/6);
   double a2 = (((ind_In1[1]-ind_In1[11])/Point())/11);
   double a3 = (((ind_In2[1]-ind_In2[6])/Point())/6);
   double a4 = (((ind_In2[1]-ind_In2[11])/Point())/11);   
   
   return (w1 * a1 + w2 * a2 + w3 * a3 + w4 * a4);
  }

1 Perzeptron 8 Neigungswinkel SL TP und 1 Perzeptron 8 Neigungswinkel

double perceptron1() 
  {
   double w1 = x1 - 10.0;
   double w2 = x2 - 10.0;
   double w3 = x3 - 10.0;
   double w4 = x4 - 10.0;
   
   double v1 = y1 - 10.0;
   double v2 = y2 - 10.0;
   double v3 = y3 - 10.0;
   double v4 = y4 - 10.0;  
   
   double a1 = (((ind_In1[1]-ind_In1[6])/Point())/6);
   double a2 = (((ind_In1[1]-ind_In1[11])/Point())/11);
   double a3 = (((ind_In2[1]-ind_In2[6])/Point())/6);
   double a4 = (((ind_In2[1]-ind_In2[11])/Point())/11);   
   
   double b1 = (((ind_In1[1]-ind_In1[11])/Point())/11);
   double b2 = (((ind_In2[1]-ind_In1[11])/Point())/11);
   double b3 = (((ind_In1[1]-ind_In2[11])/Point())/11);
   double b4 = (((ind_In2[1]-ind_In2[11])/Point())/11);
   
   return (w1 * a1 + w2 * a2 + w3 * a3 + w4 * a4   +   v1 * b1 + v2 * b2 + v3 * b3 + v4 * b4);
  }

2 Perzeptronа 4 Neigungswinkel SL TP und 2 Perzeptronа 4 Neigungswinkel

double perceptron1() 
  {
   double w1 = x1 - 10.0;
   double w2 = x2 - 10.0;
   double w3 = x3 - 10.0;
   double w4 = x4 - 10.0;
   
   double a1 = (((ind_In1[1]-ind_In1[6])/Point())/6);
   double a2 = (((ind_In1[1]-ind_In1[11])/Point())/11);
   double a3 = (((ind_In2[1]-ind_In2[6])/Point())/6);
   double a4 = (((ind_In2[1]-ind_In2[11])/Point())/11);   
   
   return (w1 * a1 + w2 * a2 + w3 * a3 + w4 * a4);
  }

double perceptron2() 
  {
   double v1 = y1 - 10.0;
   double v2 = y2 - 10.0;
   double v3 = y3 - 10.0;
   double v4 = y4 - 10.0;  
   
   double b1 = (((ind_In1[1]-ind_In1[11])/Point())/11);
   double b2 = (((ind_In2[1]-ind_In1[11])/Point())/11);
   double b3 = (((ind_In1[1]-ind_In2[11])/Point())/11);
   double b4 = (((ind_In2[1]-ind_In2[11])/Point())/11);
   
   return (v1 * b1 + v2 * b2 + v3 * b3 + v4 * b4);
  }

 Aktivierungscode eingeben:

1 Perzeptron 4 Neigungswinkel SL TP und 1 Perzeptron 4 Neigungswinkel

//SELL++++++++++++++++++++++++++++++++++++++++++++++++
if ((perceptron1()<-Param) && (CalculatePositions(symbolS1.Name(), Magic, POSITION_TYPE_SELL, EAComment)==0) && (ind_In1[1]>ind_In2[1]) && (SpreadS1<=MaxSpread)){
  OpenSell(symbolS1.Name(), LotsXSell, TakeProfit, StopLoss, EAComment);
}

//BUY++++++++++++++++++++++++++++++++++++++++++++++++
if ((perceptron1()>Param) && (CalculatePositions(symbolS1.Name(), Magic, POSITION_TYPE_BUY, EAComment)==0) && (ind_In1[1]<ind_In2[1]) && (SpreadS1<=MaxSpread)){
  OpenBuy(symbolS1.Name(), LotsXBuy, TakeProfit, StopLoss, EAComment);
}

1 Perzeptron 8 Neigungswinkel SL TP und 1 Perzeptron 8 Neigungswinkel

//SELL++++++++++++++++++++++++++++++++++++++++++++++++
if ((perceptron1()<-Param) && (CalculatePositions(symbolS1.Name(), Magic, POSITION_TYPE_SELL, EAComment)==0) && (ind_In1[1]>ind_In2[1]) && (SpreadS1<=MaxSpread)){
  OpenSell(symbolS1.Name(), LotsXSell, TakeProfit, StopLoss, EAComment);
}

//BUY++++++++++++++++++++++++++++++++++++++++++++++++
if ((perceptron1()>Param) && (CalculatePositions(symbolS1.Name(), Magic, POSITION_TYPE_BUY, EAComment)==0) && (ind_In1[1]<ind_In2[1]) && (SpreadS1<=MaxSpread)){
  OpenBuy(symbolS1.Name(), LotsXBuy, TakeProfit, StopLoss, EAComment);
}

2 Perzeptronа 4 Neigungswinkel SL TP und 2 Perzeptronа 4 Neigungswinkel

//SELL++++++++++++++++++++++++++++++++++++++++++++++++
if ((perceptron1()<-Param) && (perceptron2()<-Param) && (CalculatePositions(symbolS1.Name(), Magic, POSITION_TYPE_SELL, EAComment)==0) && (ind_In1[1]>ind_In2[1]) && (SpreadS1<=MaxSpread)){
  OpenSell(symbolS1.Name(), LotsXSell, TakeProfit, StopLoss, EAComment);
}

//BUY++++++++++++++++++++++++++++++++++++++++++++++++
if ((perceptron1()>Param) && (perceptron2()>Param) && (CalculatePositions(symbolS1.Name(), Magic, POSITION_TYPE_BUY, EAComment)==0) && (ind_In1[1]<ind_In2[1]) && (SpreadS1<=MaxSpread)){
  OpenBuy(symbolS1.Name(), LotsXBuy, TakeProfit, StopLoss, EAComment);
}

 Optimierungseinstellungen:

1 Perzeptron 4 Neigungswinkel SL TP und 1 Perzeptron 4 Neigungswinkel

Optimierungseinstellungen 1

1 Perzeptron 8 Neigungswinkel SL TP und 1 Perzeptron 8 Neigungswinkel

Optimierungseinstellungen

2 Perzeptronа 4 Neigungswinkel SL TP und 2 Perzeptronа 4 Neigungswinkel

Optimierungseinstellungen


3.1 EA 1 Perzeptron 4 Neigungswinkel SL TP

Diese EA-Modifikation verwendet Stop-Loss und Take-Profit für den Ausstieg. Strategie 1 Perzeptron und 4 Neigungswinkel (angel) von TEMA-Indikatoren. Führen Sie die Optimierung 10 Mal durch. Strukturen von Neigungswinkeln und Optimierungsprinzipien sind im ersten Artikel zu finden. Es hat keinen Sinn, sie hier zu wiederholen.

Ergebnis der Optimierung:

Ergebnis der Optimierung


Ergebnis der Optimierung

Eine große Anzahl von Ergebnissen des komplexen Kriteriums 99,99. Gewinnfaktor auf dem hohen Niveau von 4-8.

 Exportieren Sie anschließend das erhaltene Ergebnis in Excel. Lassen Sie die ersten 100 besten Ergebnisse stehen und löschen Sie alles andere. Entfernen Sie alle Spalten außer х1, х2, х3, х4 und Param.  Speichern Sie die Datei als CSV (Kommas werden als Trennzeichen verwendet). Ich habe die Datei EURUSD aus Gründen der Übersichtlichkeit. Wir können dieses Format als Text-Array in den EA-Code laden.  Es sollte so aussehen wie auf dem Bild unten.

Ergebnis der Optimierung

Fügen Sie die Datei über das Menü MetaEditor in den Code ein.

Ergebnis der Optimierung

Holen Sie sich das fertige Textfeld mit Optimierungsergebnissen.

string EURUSD[][6]=
  {
   {"19","1","3","6","1100"},
   {"20","1","4","6","1000"},
   {"20","0","4","4","1200"},
   {"19","0","6","4","1100"},
   {"19","1","5","4","1100"},
   {"17","0","7","4","1100"},
   {"19","1","3","8","1000"},
   {"20","0","4","3","1300"},
   {"17","0","7","0","1400"}
  };

Kompilieren Sie den Vorwärtstest und führen Sie ihn durch. 

Vorwärtstest

Die Ergebnisse sind gut. Im Laufe des Jahres ist ein stetiger Aufwärtstrend zu beobachten.


3.2 EA 1 Perzeptron 4 Neigungswinkel

Diese EA-Modifikation verwendet keine Stop-Loss und Take-Profit. Geschlossen wird durch Perceptron-Feedback.

//SELL++++++++++++++++++++++++++++++++++++++++++++++++
if ((perceptron1()<-Param) && (CalculatePositions(symbolS1.Name(), Magic, POSITION_TYPE_SELL, EAComment)==0) && (ind_In1[1]>ind_In2[1]) && (SpreadS1<=MaxSpread)){
  OpenSell(symbolS1.Name(), LotsXSell, 0, 0, EAComment);
}

if ((perceptron1()>0) && (CalculatePositions(symbolS1.Name(), Magic, POSITION_TYPE_SELL, EAComment)>0)){
ClosePositions(symbolS1.Name(), Magic, POSITION_TYPE_SELL);
}

//BUY++++++++++++++++++++++++++++++++++++++++++++++++
if ((perceptron1()>Param) && (CalculatePositions(symbolS1.Name(), Magic, POSITION_TYPE_BUY, EAComment)==0) && (ind_In1[1]<ind_In2[1]) && (SpreadS1<=MaxSpread)){
  OpenBuy(symbolS1.Name(), LotsXBuy, 0, 0, EAComment);
}

if ((perceptron1()<0) && (CalculatePositions(symbolS1.Name(), Magic, POSITION_TYPE_BUY, EAComment)>0)){
ClosePositions(symbolS1.Name(), Magic, POSITION_TYPE_BUY);
}

Ergebnis der Optimierung:

Ergebnis der Optimierung


Ergebnis der Optimierung

Das Ergebnis des komplexen Kriteriums ist etwas niedriger als im vorherigen Fall. Der Gewinnfaktor liegt bei 2-2,5.

Ergebnis des Vorwärtstests:

Ergebnis des Vorwärtstests

Die Saldo-Linie wiederholt das vorherige Ergebnis mit tieferen Drawdowns.


3.3 EA 1 Perzeptron 8 Neigungswinkel SL TP

Diese EA-Modifikation verwendet Stop-Loss und Take-Profit zum Ausstieg. Strategie 1 Perzeptron und 8 Neigungswinkel (angel) der TEMA-Indikatoren.

Für diesen EA müssen wir eine Excel Datei wie unten gezeigt. Hier optimieren wir die Parameter х1, х2, х3, х4, y1, y2, y3, y4 und Param.

Ergebnis der Optimierung

Ergebnis der Optimierung:

Ergebnis der Optimierung


Ergebnis der Optimierung

Das Ergebnis des komplexen Kriteriums ist hoch. Der Gewinnfaktor liegt bei 2,5-3.

Ergebnis des Vorwärtstests:

Ergebnis des Vorwärtstests

Die Saldenlinie ist nicht sehr stabil. Die Drawdowns sind beträchtlich. Das Ergebnis ist jedoch positiv.


3.4 EA 1 Perzeptron 8 Neigungswinkel

Stop-Loss und Take-Profit werden nicht verwendet. Geschlossen wir durch das umgekehrten Signal des Perzeptrons. Strategie 1 Perceptron und 8 Neigungswinkel der TEMA-Indikatoren.

Ergebnis der Optimierung:

Ergebnis der Optimierung


Ergebnis der Optimierung

Das Ergebnis des komplexen Kriteriums ist hoch. Der Gewinnfaktor liegt bei 2,5-3.

Ergebnis des Vorwärtstests:

Ergebnis des Vorwärtstests

Die Saldenlinie ist stabil. Ein schöner Anstieg der Einlagen im Laufe des Jahres. Die Drawdowns sind nicht so groß.


3.5 EA 2 Perzeptron 8 Neigungswinkel SL TP

Es werden Stop-Loss und Take-Profit verwendet. Strategie 2 Perzeptron, 4 Neigungswinkel beim ersten und 4 Neigungswinkel beim zweiten, die unterschiedlich sind.

Ergebnis der Optimierung:

Ergebnis der Optimierung


Ergebnis der Optimierung

Das Ergebnis des komplexen Kriteriums liegt auf dem Niveau von 99,99. Der Gewinnfaktor der Ergebnisse ist mit 4,3 fast gleich.

Ergebnis des Vorwärtstests:

Ergebnis des Vorwärtstests

Eine Saldenlinie wie Sägezähne. Gewinn im Laufe des Jahres.


3.6 EA 2 Perzeptron 8 Neigungswinkel

Kein Stop-Loss und Take-Profit. Strategie 2 Perzeptron, 4 Neigungswinkel beim ersten und 4 Neigungswinkel beim zweiten, die unterschiedlich sind. Die Schließung erfolgt durch das Umkehrsignal des Perceptrons.

Ergebnis der Optimierung:

Ergebnis der Optimierung


Ergebnis der Optimierung

Das Ergebnis des komplexen Kriteriums liegt bei 99,8. Der Gewinnfaktor der Ergebnisse liegt zwischen 2,8 und 3,2.

Ergebnis des Vorwärtstests:

Ergebnis des Vorwärtstests

Sägezahnsaldo, instabil. Gewinn im Laufe des Jahres. Große Drawdowns am Ende des Jahres.


4. EAs basierend auf der Bibliothek DeepNeuralNetwork.mqh

In diesem Artikel verwende ich 4 EAs, die auf der Bibliothek DeepNeuralNetwork.mqh basieren - Angle 4-4-3 SL TP und Angle 8-4-3 SL TP, bei denen Stop-Loss und Take-Profit für die Schließung verwendet werden, sowie Angle 4-4-3 und Angle 8-4-3, bei denen die Signal zum Schließen vom neuronalen Netzwerk kommt. Alle EAs verwenden Neigungswinkel als Strategie. Die im zweiten Teil unserer Versuche vorgestellten Formen werden hier nicht verwendet.

Stop-Loss- und Take-Profit-Code:

//SELL++++++++++++++++++++++++++++++++++++++++++++++++
if ((CalculatePositions(symbolS1.Name(), Magic, POSITION_TYPE_SELL, EAComment+" En_"+comm1)==0) && (yValues[1]>LL) && (SpreadS1<=MaxSpread)){
  if(CalculateSeries(Magic)<MaxSeries){
  OpenSell(symbolS1.Name(), LotsXSell, TP, SL, EAComment+" En_"+comm1);
  }
}

//BUY++++++++++++++++++++++++++++++++++++++++++++++++
if ((CalculatePositions(symbolS1.Name(), Magic, POSITION_TYPE_BUY, EAComment+" En_"+comm1)==0) && (yValues[0]>LL) && (SpreadS1<=MaxSpread)){
  if(CalculateSeries(Magic)<MaxSeries){
  OpenBuy(symbolS1.Name(), LotsXBuy, TP, SL, EAComment+" En_"+comm1);
  }
}

Der Code zum Schließen durch das neuronale Netz:

//SELL++++++++++++++++++++++++++++++++++++++++++++++++
if ((CalculatePositions(symbolS1.Name(), Magic, POSITION_TYPE_SELL, EAComment+" En_"+comm1)==0) && (yValues[1]>LL) && (SpreadS1<=MaxSpread)){
  ClosePositions(symbolS1.Name(), Magic, POSITION_TYPE_BUY, EAComment+" En_"+comm1);
  if(CalculateSeries(Magic)<MaxSeries){
  OpenSell(symbolS1.Name(), LotsXSell, TP, SL, EAComment+" En_"+comm1);
  }
}

//BUY++++++++++++++++++++++++++++++++++++++++++++++++
if ((CalculatePositions(symbolS1.Name(), Magic, POSITION_TYPE_BUY, EAComment+" En_"+comm1)==0) && (yValues[0]>LL) && (SpreadS1<=MaxSpread)){
  ClosePositions(symbolS1.Name(), Magic, POSITION_TYPE_SELL, EAComment+" En_"+comm1);
  if(CalculateSeries(Magic)<MaxSeries){
  OpenBuy(symbolS1.Name(), LotsXBuy, TP, SL, EAComment+" En_"+comm1);
  }
}

//CLOSE ALL++++++++++++++++++++++++++++++++++++++++++
if (yValues[2]>LL){
  ClosePositions(symbolS1.Name(), Magic, POSITION_TYPE_SELL, EAComment+" En_"+comm1);
  ClosePositions(symbolS1.Name(), Magic, POSITION_TYPE_BUY, EAComment+" En_"+comm1);
}

Wenden wir nun ein komplexeres Schema an. Wir haben 3 Expert Advisors in jedem Satz. Der erste ist für die Optimierung gedacht, die zweite für die Konvertierung der erhaltenen Ergebnisse in ein Text-Array, während die dritte für die Prüfung und Handhabung des resultierenden Arrays gedacht ist.

Wie Sie sich vielleicht erinnern, erstellt der EA während der Optimierung eine CSV-Datei mit einer Reihe von optimierten Gewichten unter C:\Users\Ihr Nutzername\AppData\Roaming\MetaQuotes\Terminal\Common\Files. Kopieren Sie die CSV-Optimierungsberichtdatei in den Ordner.

Starten Sie Angle EA 4-4-3 convert auf dem Währungspaar-Chart.

Expert Advisor

EA-Parameter für die Konvertierung:

  • Parameter – (Wert) des komplexen Kriteriums, unter dem die Ergebnisse nicht in das Array kopiert werden. Ich habe 80 verwendet;
  • OptimizationFileName1 – CSV-Datei des Optimierungsberichts
  • OptimizationFileName2 – CSV-Datei, die vom EA während der Optimierung erstellt wird und die Gewichte des neuronalen Netzes enthält;
  • OptimizationFileName3 – Array-Datei, die in den EA eingefügt werden soll. Die Datei soll automatisch erstellt werden.

Sie können den Vorgang in den Protokollen verfolgen.

Protokolle

Fügen Sie die erhaltene Datei in den Code von Angle EA 4-4-3 trade ein:

string Result[][37]=
  {
   {"17293","0.8","-0.1","-0.2","1.0","0.9","0.6","0.4","1.0","0.6","-0.4","0.9","-0.5","0.1","-0.5","-0.5","0.9","-0.1","-0.8","0.4","0.0","-0.1","0.1","0.2","-0.4","-0.7","-0.6","-0.9","-0.8","-0.9","-0.7","-0.5","0.4","0.4","0.8","-0.6"},
   {"18030","0.6","0.2","-0.4","0.9","-1.0","-0.9","-0.9","0.4","-0.9","-0.8","0.4","0.9","0.2","-0.8","0.9","-0.1","-0.6","0.3","0.5","-0.4","0.7","0.6","-0.4","-0.1","0.4","-0.8","0.4","0.9","-0.2","0.0","0.4","-0.6","-0.4","-0.7","0.7"},
   {"13128","0.7","-0.3","0.5","-0.5","-0.5","-0.1","0.8","0.0","0.6","0.9","-0.2","0.8","1.0","0.7","-0.7","-0.2","0.5","0.5","-0.6","0.5","-0.9","-0.5","-0.5","0.5","-0.3","0.5","0.8","0.2","-0.5","-0.2","0.1","-0.1","-0.4","-0.7","0.1"},
   {"10688","0.3","0.0","0.2","-0.1","0.6","0.1","0.1","-0.2","-1.0","0.3","0.2","0.5","-0.8","0.7","0.4","-0.5","-0.4","-0.3","-0.3","-0.9","-0.2","0.0","0.1","0.9","0.3","-0.9","-0.2","-0.2","0.1","0.9","0.8","0.1","0.4","0.8","0.6"},
   {"8356","0.8","0.8","0.7","0.2","0.0","-0.4","0.5","-0.8","0.0","0.9","0.2","-0.1","1.0","0.6","0.2","-0.8","-0.1","-0.5","-0.3","0.0","0.7","-0.5","-0.3","0.0","0.9","-1.0","-0.2","-0.6","-0.7","-0.5","-0.8","0.5","-0.3","-0.1","0.8"},
   {"18542","-0.8","0.9","-0.1","0.5","-0.5","0.3","0.8","-0.4","0.7","0.9","0.4","0.0","-0.2","0.0","0.2","0.5","0.9","0.4","1.0","0.7","0.1","0.1","-0.4","0.0","0.9","0.2","0.0","-0.8","0.1","-0.5","0.1","-0.1","0.1","-0.1","0.6"},
   {"18381","0.7","-1.0","-0.8","0.8","-0.8","-0.4","0.9","0.7","1.0","0.7","0.8","0.5","0.1","-0.3","-0.7","-0.9","-0.2","-0.4","0.8","-0.8","0.0","0.8","-0.5","-0.3","0.2","-0.3","-0.1","0.5","-0.1","0.3","0.0","-0.7","-0.2","-0.3","0.8"},
   {"13795","0.2","0.9","0.4","0.4","0.1","-0.6","-0.6","-0.3","0.7","0.9","0.7","0.0","-0.2","-0.9","-0.8","-0.6","-0.1","-0.4","-1.0","0.7","-0.7","-0.3","0.0","-0.3","-1.0","0.8","-0.9","-0.9","0.1","-0.5","-0.3","-0.7","-0.2","-0.7","-0.8"},
   {"4376","0.9","0.7","-0.6","-0.9","1.0","0.8","0.1","-0.8","0.7","-0.8","0.2","0.1","-0.9","0.8","0.9","-0.4","0.8","0.3","0.0","-0.3","-0.4","0.7","-0.2","0.4","-0.8","-0.2","0.9","0.9","0.2","0.0","0.1","0.5","-0.8","-0.1","0.6"},
   {"14503","0.1","-0.4","-0.7","0.1","-0.1","0.5","-0.7","-0.2","-0.9","0.0","0.2","-0.7","0.3","0.7","-0.7","0.1","0.4","0.3","0.3","-0.5","-0.8","-0.8","-0.7","0.2","-0.7","-0.1","-0.8","0.0","-0.4","0.0","0.1","0.5","-0.3","0.5","0.8"},
   {"12887","0.6","-0.1","0.4","0.6","-0.9","-0.3","0.7","0.2","-0.6","-1.0","0.0","-0.6","0.5","0.3","0.8","0.0","-0.5","-1.0","-0.6","0.6","-0.6","-0.9","-0.3","0.6","0.2","-0.5","0.6","0.2","-0.5","0.3","0.3","-0.9","-0.7","-0.8","0.8"},
   {"16285","0.3","0.3","-0.9","-0.7","-0.1","0.7","-0.7","-0.7","-0.2","-0.5","-0.8","-1.0","-0.1","-0.4","-0.6","1.0","0.3","-0.8","-0.6","1.0","-0.1","0.7","-0.1","0.5","-0.6","0.9","-0.5","0.6","0.2","0.5","-0.4","0.3","-0.6","-0.7","0.7"},
   {"13692","0.8","-0.9","0.6","0.3","-0.2","-0.8","-0.4","0.3","-0.6","0.7","0.7","-0.8","0.5","0.1","-0.2","0.7","-0.7","-0.2","0.7","-0.5","0.9","0.7","0.6","0.8","-0.1","-1.0","-0.8","-0.5","-0.1","-0.9","-0.5","0.2","-0.4","0.8","0.2"},
   {"1184","-0.1","0.1","0.6","-0.2","-0.3","0.0","-0.7","0.1","-0.5","0.1","-0.6","0.0","-0.9","-0.8","0.1","0.5","0.3","-1.0","0.1","-0.8","-0.6","0.0","-0.4","-0.1","-0.7","-0.8","0.6","0.5","0.0","0.9","-0.5","0.2","0.7","0.3","0.9"},
   {"9946","0.4","-0.5","0.9","-1.0","-0.4","-0.7","0.9","0.0","-0.2","0.7","0.7","0.1","0.7","0.4","-0.9","0.1","-0.6","-0.5","0.9","0.8","0.2","-0.9","0.0","0.1","0.9","0.7","0.3","0.6","-0.4","0.8","-0.1","0.2","-0.2","-0.4","0.7"},
   {"6104","0.5","-0.9","-0.1","0.7","-0.7","0.0","0.4","0.3","0.8","-0.7","-0.1","0.1","-0.1","-0.5","-0.5","1.0","-0.1","-0.5","0.5","0.7","-0.8","-0.7","-0.7","0.8","-0.2","-0.5","0.2","-0.6","-0.2","-0.1","-0.4","-0.9","-0.6","-0.1","0.9"},
   {"995","0.9","0.6","0.7","0.1","-0.8","0.3","-0.2","0.3","0.9","-0.1","0.2","0.5","0.9","-0.7","-0.7","-0.7","0.2","0.2","0.4","-0.7","-0.4","-0.2","0.0","-0.2","0.0","0.6","-0.3","-0.6","-0.9","0.8","-0.6","-0.2","0.2","0.5","0.9"},
   {"6922","0.5","0.9","0.1","-0.8","-1.0","-0.1","0.9","0.9","-0.2","0.8","0.8","0.5","-0.3","0.8","-0.2","0.9","-0.6","0.0","0.7","-0.9","0.4","0.7","0.6","-0.1","-0.4","0.5","-0.6","-0.2","-0.5","-0.9","-0.7","-0.6","0.5","-0.6","0.7"},
   {"3676","-0.9","-0.8","-0.5","0.8","0.4","-0.8","-0.4","0.6","0.9","0.9","-0.7","0.6","0.8","-0.9","0.3","0.7","-0.7","0.5","0.8","0.9","0.1","0.5","0.8","0.1","0.9","0.9","0.4","0.3","-0.1","0.4","-0.4","0.4","-0.3","-0.6","0.9"},
   {"6245","-0.1","-0.4","-0.6","0.7","0.6","-0.6","-0.2","0.2","0.0","-0.4","0.0","0.9","-0.3","0.5","-0.2","0.7","0.4","1.0","0.7","-0.1","-0.3","-0.9","-0.5","0.9","0.8","-0.1","-0.5","-1.0","0.3","0.9","-0.4","-0.2","-0.4","-0.3","0.9"},
   {"1039","-0.4","-0.3","-0.6","-0.7","-0.6","0.5","-0.2","-0.9","0.7","0.9","-0.2","-0.6","-0.2","-0.3","0.6","0.1","-0.9","-0.8","0.9","0.3","0.6","0.8","-0.8","0.8","0.6","0.1","-0.2","-0.7","0.6","-0.2","-0.6","0.4","-0.1","-0.2","0.1"},
   {"6615","-0.4","-0.1","-0.7","0.5","-0.9","0.4","-0.9","0.4","-0.4","-0.1","0.7","-0.4","0.4","0.4","-0.8","-0.2","-0.6","-0.1","-0.5","-0.7","0.6","0.0","1.0","0.9","-0.3","0.8","0.8","-0.1","-0.2","0.9","-0.2","0.9","-0.8","-0.6","0.5"},
   {"410","-0.3","0.2","-0.2","-0.2","0.2","-0.5","0.8","0.3","-0.9","-0.9","-0.4","0.3","-0.8","-0.8","0.0","0.9","-0.2","0.0","-0.2","-0.4","-0.1","0.1","-0.4","0.7","1.0","0.1","0.5","0.3","0.1","0.7","0.4","0.0","-0.2","-1.0","-0.1"},
   {"15027","-0.3","-0.4","-0.6","0.3","-0.5","-0.6","0.9","0.5","-0.2","0.0","-0.7","0.7","0.1","0.5","-0.4","-0.4","0.4","0.7","-0.1","0.9","-0.1","0.6","0.5","-0.3","0.6","0.8","0.4","0.1","0.9","-0.5","0.7","0.6","-0.8","-0.1","0.0"},
   {"14157","0.6","-0.7","0.7","0.5","0.8","-0.1","0.9","0.8","0.8","0.7","0.6","-0.3","-0.7","-0.5","-0.2","0.2","0.0","-0.8","0.6","0.9","-0.4","0.1","0.1","0.9","0.7","-0.8","-0.6","-0.5","-0.7","0.1","-0.3","0.9","0.5","0.8","-0.7"},
   {"11367","0.2","-1.0","-0.4","-0.4","-0.3","-0.2","0.2","-0.1","-0.4","0.7","-1.0","-0.5","-0.9","-0.7","-0.4","-0.8","-0.4","0.0","0.2","0.7","-0.2","0.4","0.1","0.0","-0.1","-0.9","0.2","-0.5","-0.6","-0.6","-0.7","-0.2","-0.3","-0.1","0.9"},
   {"3892","-0.7","-0.3","0.8","0.2","-0.3","0.4","0.0","0.3","-0.2","0.7","0.6","0.6","0.7","-0.4","-0.7","0.4","-0.3","-0.8","-0.2","0.0","0.9","0.9","0.3","0.0","0.7","0.1","-0.1","0.1","-0.8","-0.4","-0.5","0.9","-0.7","-0.6","0.2"}
  };


4.1 Winkel 4-4-3 SL TP EA

Der EA verwendet Stop-Loss und Take-Profit zum Ausstieg. Strategie 4 Neigungswinkel der TEMA-Indikatoren.

Ergebnis der Optimierung:

Ergebnis der Optimierung


Ergebnis der Optimierung

Wie Sie sehen können, gibt es viele gute Ergebnisse. Der Gewinnfaktor liegt zwischen 1,6 und 5. Es gibt 27 komplexe Kriteriumswerte, die über 80 liegen.

Ergebnis des Vorwärtstests:

Ergebnis des Vorwärtstests

Leider hat der EA den Vorwärtstest nicht bestanden. Die Ergebnisse sind negativ und unbeständig.


4.2 Winkel 4-4-3 EA

Der EA verwendet das neuronale Netzwerk zum Ausstieg. Strategie 4 Neigungswinkel der TEMA-Indikatoren.

Ergebnis der Optimierung:

Ergebnis der Optimierung


Ergebnis der Optimierung

Wie Sie sehen können, gab es nur 6 gute Ergebnisse für das komplexe Kriterium über 80. Der Gewinnfaktor liegt zwischen 1,6 und 1,9.

Ergebnis des Vorwärtstests:

Ergebnis des Vorwärtstests

Mit dem Schließen durch das neuronale Netz hat der EA das ganze Jahr über Gewinne erzielt. Das Ergebnis ist stabiler als die Verwendung von Stop-Loss und Take-Profit.


4.3 Angle 8-4-3 SL TP EA

Der EA verwendet Stop-Loss und Take-Profit zum Ausstieg. Strategie 8 Neigungswinkel der TEMA-Indikatoren.

Ergebnis der Optimierung:

Ergebnis der Optimierung


Ergebnis der Optimierung

Der Gewinnfaktor der Ergebnisse ist im Vergleich zum neuronalen Netz 4-4-3 geringer.  Es gibt 13 Ergebnisse für komplexe Kriterien, die über 80 liegen.

Ergebnis des Vorwärtstests:

Ergebnis des Vorwärtstests

Wie erwartet, ist das Ergebnis ähnlich wie bei der Verwendung von Stop-Loss und Take-Profit. Der Vorwärtstest wurde nicht bestanden.


4.4 Angle 8-4-3 EA

Der EA verwendet das neuronale Netzwerk zum Ausstieg. Strategie 8 Neigungswinkel der TEMA-Indikatoren.

Ergebnis der Optimierung:

Ergebnis der Optimierung


Ergebnis der Optimierung

Es gibt nur 3 Ergebnisse für komplexe Kriterien, die 80 übersteigen. Der Gewinnfaktor liegt im Vergleich zu früheren Ergebnissen auf einem niedrigen Niveau.

Ergebnis des Vorwärtstests:

Ergebnis des Vorwärtstests

Das vorläufige Ergebnis ist nicht zufriedenstellend. Wir sehen den allmählichen Verlust der Einlage.


Schlussfolgerung

Wie wir aus den Ergebnissen der Vorwärtstests ersehen können, hat keiner der Perceptron-basierten EAs im Laufe des Jahres ein negatives Ergebnis erzielt, obwohl nach sechs Monaten ein gewisser Rückgang der Rentabilität zu verzeichnen ist. Dies bedeutet, dass eine Optimierung mindestens alle 6 Monate erforderlich ist.

Bei den EAs, die auf der Bibliothek DeepNeuralNetwork.mqh basieren, ist alles kompliziert. Die Ergebnisse sind nicht so gut wie erwartet. Vielleicht beeinflusst die Strategie selbst die Dinge und es ist notwendig, dem neuronalen Netz etwas anderes zu übergeben.

In den meisten Fällen lässt sich die Rentabilität anhand des Gewinnfaktors der optimierten Serien nachvollziehen. Das gibt uns einen zusätzlichen Denkanstoß.

Für die Zukunft möchte ich auf 2 Aufgaben hinweisen. Es ist notwendig, die besten Ergebnisse zu prüfen, die mit anderen Währungspaaren und Zeitrahmen erzielt wurden.

Es gibt nicht so viele Positionen, wie wir gerne hätten, aber niemand verbietet, andere Währungspaare zu verwenden und ein Portfolio auf der Grundlage dieser Systeme zu erstellen. Dies wiederum ist mit unvermeidlichen Arbeitskosten für die Optimierung verbunden.

Wenn Sie Fragen haben, stellen Sie sie im Forum oder kontaktieren Sie mich über eine private Nachricht. Ich werde Ihnen immer gerne helfen.



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

Beigefügte Dateien |
EA.zip (1056.16 KB)
Letzte Kommentare | Zur Diskussion im Händlerforum (45)
CapeCoddah
CapeCoddah | 24 März 2023 in 16:53

Danke für die rasche Antwort.

Ich sehe, dass ich meine Spekulationen auf der falschen Registerkarte gemacht habe; ich habe die Registerkarte Aufträge benutzt, obwohl ich die Registerkarte Deals für meine Analyse hätte benutzen sollen. Indem ich Deals benutzte und nach der Gewinnspalte absteigend sortierte, habe ich sofort den Deal vom 7. Juli entdeckt, der einen Verlust von $1395 verursacht hat.

Ich muss diesen Fehler meiner Unerfahrenheit ankreiden. Ich habe vor 6 Monaten mit MQ5 begonnen und bin gerade erst in die Handelsdetails Ihrer EAs eingestiegen und habe versucht, meine MQ4-Erfahrung als Grundlage zu nutzen.

Vielen Dank für Ihre Hilfe, ich habe gerade eine Menge gelernt.


Kap CVoddah


D

Roman Poshtar
Roman Poshtar | 24 März 2023 in 17:02
CapeCoddah #:

Danke für die rasche Antwort.

Ich sehe, dass ich meine Spekulationen auf der falschen Registerkarte gemacht habe; ich habe die Registerkarte Aufträge benutzt, obwohl ich die Registerkarte Deals für meine Analyse hätte benutzen sollen. Indem ich Deals benutzte und nach der Gewinnspalte absteigend sortierte, habe ich sofort den Deal vom 7. Juli entdeckt, der einen Verlust von $1395 verursacht hat.

Ich muss diesen Fehler meiner Unerfahrenheit ankreiden. Ich habe vor 6 Monaten mit MQ5 begonnen und bin gerade erst in die Handelsdetails Ihrer EAs eingestiegen und habe versucht, meine MQ4-Erfahrung als Grundlage zu nutzen.

Vielen Dank für Ihre Hilfe, ich habe gerade eine Menge gelernt.


Kap CVoddah


D

Nichts ist beängstigend. Wir lernen alle noch. Wenn Sie interessiert sind, stelle ich ein Team für die Entwicklung von Neuro ein. Schicken Sie mir eine private Nachricht. Die Teilnahme wird bezahlt.

Eric Ruvalcaba
Eric Ruvalcaba | 26 März 2023 in 21:21

Hallo Roman,

Zuerst möchte ich dir für diesen erstaunlichen Beitrag danken, sehr interessant, du bist ein Genie. Ich muss sagen, ich mochte die 2 Perceptron 4 Winkel Optionen, so fügte ich ein 3. Perceptron für einen Parameter, den ich gefunden habe, um sehr wertvoll in meinem manuellen Handel sein: RSI in verschiedenen Zeitfenstern.

//+------------------------------------------------------------------+
//| Das PERCEPTRON - eine wahrnehmende und erkennende Funktion |
//+------------------------------------------------------------------+
double perceptron3() //RSI
{
   double v1 = z1 - 10.0;
   double v2 = z2 - 10.0;
   double v3 = z3 - 10.0;
   double v4 = z4 - 10.0;  
   
   //In3 = RSI Current timeframe
   //In4 = RSI Higher timeframe
   
   double b1 = (((ind_In3[1]-ind_In3[2]))/2);
   double b2 = (((ind_In4[1]-ind_In3[2]))/2);
   double b3 = (((ind_In3[1]-ind_In4[2]))/2);
   double b4 = (((ind_In4[1]-ind_In4[2]))/2);
   
   return (v1 * b1 + v2 * b2 + v3 * b3 + v4 * b4);
}

Im Grunde sucht mein drittes Perceptron nach der Steigungsbeziehung zwischen 14 RSI auf dem aktuellen Zeitrahmen und demselben auf einer höheren Ebene, in meinem Fall 4h und Daily, und die Ergebnisse sind vielversprechend, besonders für das Pfund.

>1 Jahr Training, 2 Jahre Testdatensatz.

Für den GBPUSD :

Ursprüngliches 2-Perceptron-Modell mit 4 Winkeln, Einzelmodell:

Das 3. Perceptron sucht nach der RSI-Neigung in verschiedenen Zeitrahmen:


Für den GBPJPY:

Original 2 Perceptron 4-Winkel, einzelnes Modell:

3. Perceptron auf der Suche nach der RSI-Neigung in einem anderen Zeitrahmen:



Ich hoffe, ich kann Ihnen weitere Erkenntnisse mitteilen.

Mit freundlichen Grüßen!

Roman Poshtar
Roman Poshtar | 26 März 2023 in 21:32
Eric Ruvalcaba #:

Hallo Roman,

Zuerst möchte ich dir für diesen erstaunlichen Beitrag danken, sehr interessant, du bist ein Genie. Ich muss sagen, ich mochte die 2 Perceptron 4-Winkel-Optionen, so fügte ich ein 3. Perceptron für einen Parameter, den ich gefunden habe, um sehr wertvoll in meinem manuellen Handel sein: RSI in verschiedenen Zeitfenstern.

Grundsätzlich meine 3. perceptron sucht nach der Steigung Beziehung zwischen 14 rsi auf aktuelle timeframe vs die gleichen auf einer höheren Ebene, mein Fall ist 4h und Daily bzw. und die Ergebnisse zeigen einige Versprechen, speziell für das Pfund.

>1 Jahr Training, 2 Jahre Testdatensatz.

Für den GBPUSD :

Ursprüngliches 2-Perceptron-4-Winkel-Einzelmodell:

Das 3. Perzeptron sucht nach der RSI-Neigung in verschiedenen Zeitrahmen:


Für den GBPJPY:

Ursprünglich 2 Perceptrons mit 4 Winkeln, Einzelmodell:

Das 3. Perceptron sucht nach der RSI-Neigung in verschiedenen Zeitrahmen:



Ich hoffe, dass ich noch weitere Erkenntnisse teilen kann.

Mit freundlichen Grüßen!

Hallo! Danke für Ihr Feedback. Ich bin froh, dass ich helfen konnte.

CapeCoddah
CapeCoddah | 28 März 2023 in 13:13

Roman, Eric:

Hier sind einige meiner Testergebnisse unter Verwendung von Romans ursprünglichen Parametern, z. B. H1 2019 12/9-2021 12/9 und Forward Test 2021 12/09-2022 12/09 für 1 Perceptron 4 angle tpsl

Ursprünglich $2758. Ich habe dann versucht, die TPSL manuell zu optimieren und fand schließlich tp=150 & sl=550, was $7915 ergab. Ich habe es mit variablen Lots versucht, was zu identischen Ergebnissen führte. Ich habe auch die GA-Optimierung für TPSL um die manuell optimierten Werte herum ausprobiert. Unter Verwendung der besten optimierten Werte TP=150 SL=524, die einen sehr guten Optimierungsgewinn von $8973 erbrachten, ging der Forward Test in Konkurs!Diese Ergebnisse scheinen darauf hinzuweisen, dass für optimale Gewinne, die TP & SL müssen auch in der GA-Optimierung läuft. Ich werde meine Tests auch auf H4, wie ich glaube, die höheren Zeitrahmen "ausgleicht" einige der Verlust produzieren Umkehrungen auf der unteren Zeitrahmen.

Eric: Es ist eine interessante Idee, den höheren RSI-Zeitrahmen zu verwenden. Haben Sie die Zeitrahmen H6, H8 oder H12 getestet? Und mich interessiert, ob Sie den MQ iRSI verwendet haben, um die Ergebnisse zu erhalten, oder ob Sie einen der verfügbaren MTF-RSIs mit Periodeninterpolationen verwendet haben?

Hier ist ein Tipp für Sie:

Verwenden Sie die Compiler-Direktiven #define und #ifdef und Sie können die Optversionen eliminieren und Zeit bei der Wiederholung Ihrer Bemühungen sparen.

//#define OPTIMIZING //COMMENT OUT FOR PRODUCTION TRADING
#ifdef OPTIMIZING
input int x1 = 1;
input int x2 = 1;
input int x3 = 1;
input int x4 = 1;

input int z1 = 1;
input int z2 = 1;
input intz3 = 1;
input int z4 = 1;
input int Param = 1000;
#else
int x1 = 1, x2 = 1,x3 = 1, x4 = 1;//WinkelPerceptron4
int z1 = 1, z2 = 1,z3 = 1, z4 = 1; //RsiPerceptron4
int Param = 1000;

#endif

Sie müssen dieses Konstrukt erneut in der OnTick-Funktion verwenden, um die for-Schleife auszukommentieren.


Herzlichen Glückwunsch an Sie beide

Algorithmen zur Optimierung mit Populationen Fledermaus-Algorithmus (BA) Algorithmen zur Optimierung mit Populationen Fledermaus-Algorithmus (BA)
In diesem Artikel werde ich den Fledermaus-Algorithmus (Bat-Algorithmus, BA) betrachten, der gute Konvergenz bei glatten Funktionen zeigt.
Erstellen eines EA, der automatisch funktioniert (Teil 04): Manuelle Auslöser (I) Erstellen eines EA, der automatisch funktioniert (Teil 04): Manuelle Auslöser (I)
Heute werden wir sehen, wie man einen Expert Advisor erstellt, der einfach und sicher im automatischen Modus arbeitet.
Algorithmen zur Populationsoptimierung Optimierung mit invasiven Unkräutern (IWO) Algorithmen zur Populationsoptimierung Optimierung mit invasiven Unkräutern (IWO)
Die erstaunliche Fähigkeit von Unkräutern, unter verschiedensten Bedingungen zu überleben, wurde zur Idee für einen leistungsstarken Optimierungsalgorithmus. IWO (Invasive Weed Optimization) ist einer der besten Algorithmen unter den bisher geprüften.
Erstellen eines EA, der automatisch funktioniert (Teil 03): Neue Funktionen Erstellen eines EA, der automatisch funktioniert (Teil 03): Neue Funktionen
Heute werden wir sehen, wie man einen Expert Advisor erstellt, der einfach und sicher im automatischen Modus arbeitet. Im vorherigen Artikel haben wir begonnen, ein Auftragssystem zu entwickeln, das wir in unserem automatisierten EA verwenden werden. Wir haben jedoch nur eine der benötigten Funktionen geschaffen.