Dokumentation

Anwendungen

Last updated on 21. 3. 2024 by Mark Fric

Testen eines neuen Indikators in SQ X im Vergleich zu Daten aus MT

Testen eines neuen Indikators in SQ X im Vergleich zu Daten aus MT

we just created (or we are in the process of developing) our new indicator. How do we know that we implemented it correctly?

Wenn Sie Ihren neuen Indikator in StrategyQuant erstellt haben und er erfolgreich kompiliert wurde, sollte auch überprüft werden, ob er wirklich so funktioniert wie im MetaTrader - mit anderen Worten, ob die von ihm berechneten Werte die gleichen sind wie die Werte im MT4.

 

Note – this article was a part of Envelopes indicator example, so it refers to the Envelopes indicator. But the description of Indicators testing is valid for any indicator implementation.

 

Zu diesem Zweck haben wir im Code-Editor ein Indikator-Tester-Tool. Es vergleicht einfach die in SQ berechneten Werte mit den in MT4 berechneten Werten.

 

Im Allgemeinen funktioniert es in wenigen einfachen Schritten:

  1. Hilfsskript zum Berechnen und Exportieren von Indikatordaten in MetaTrader verwenden
  2. Kopieren Sie die berechneten Datendateien an den richtigen Ort, damit SQ sie finden kann
  3. Konfigurieren und Ausführen von Indikatortests in SQ

Hilfsskript zum Berechnen und Exportieren von Indikatordaten in MetaTrader verwenden

Als ersten Schritt müssen wir MT4-Testdaten vorbereiten - wir müssen den Indikator auf einer Reihe von Bars berechnen und die berechneten Werte in einer Datei speichern.

Hierfür stellen wir einen einfachen EA zur Verfügung, den Sie verwenden können - er befindet sich in {SQ}/benutzerdefinierte_Indikatoren/MetaTrader4/Experts/SqIndicatorValuesExportEA.mq4

 

Fügen Sie diesen EA zu Ihrem MetaTrader hinzu, modifizieren Sie ihn so, dass er den Wert Ihres Indikators berechnet und ausgibt, und lassen Sie ihn im MT4 StrategyTester auf beliebigen Daten laufen - für einen optimalen Test sollte er auf mindestens 1000 Bars laufen.

 

Da Envelopes zwei Ausgabepuffer hat, müssen wir es zweimal ausführen - einmal für den oberen und einmal für den unteren Puffer.

Hier ist ein geänderter Code dieses Hilfsexportskripts, das den Hüllkurvenindikator berechnet:

//+------------------------------------------------------------------+
//|                                   SQ_IndicatorValuesExportEA.mq4 |
//|                                                                  |
//|                    EA to export indicator values from MetaTrader |
//|                Output to: /{Data folder}/tester/files/******.csv |
//+------------------------------------------------------------------+

#property copyright "Copyright © 2019 StrategyQuant"
#property link      "https://strategyquant.com"

string currentTime = "";
string lastTime = "";

//+------------------------------------------------------------------+

int start() {
   currentTime = TimeToStr(Time[1], TIME_DATE|TIME_MINUTES|TIME_SECONDS);
   if(currentTime == lastTime) {
      return(0);
   }
   
   double value;

   // change the file name below
   string fileName = "Envelopes_14_0_0_0_0.1_upper.csv";

   int handle = FileOpen(fileName, FILE_READ | FILE_WRITE, ";");
   if(handle>0) {
      FileSeek(handle,0,SEEK_END);

      // here is the indicator value 
      value = iEnvelopes(NULL, 0 , 14 , 0 , 0 , 0 , 0.1 , 1 , 1); // upper value
      //value = iEnvelopes(NULL, 0 , 14 , 0 , 0 , 0 , 0.1 , 2 , 1); // lower value
      
      FileWrite(handle, TimeToStr(Time[1], TIME_DATE|TIME_MINUTES|TIME_SECONDS), Open[1], High[1], Low[1], Close[1], Volume[1], value);
      FileClose(handle);
   }

   lastTime = currentTime;
   return(0);
}

er berechnet den Envelopes-Inikator auf MT4, indem er seine interne Methode iEnvelopes() mit den richtigen Parametern aufruft.

Bitte beachten Sie, dass die Parameter konfiguriert werden können - Sie müssen nicht die Standardparameter verwenden. Es ist eine gute Praxis, die Parameterwerte auch in den Namen der Ausgabedatei aufzunehmen - wie in unserem Fall "Envelopes_14_0_0_0_0.1_upper.csv", so dass wir wissen, dass sie mit diesen Parametern erzeugt wurde.

Jetzt können wir dieses Skript zwei Mal in MT Tester ausführen:

Wenn es fertig ist, sollte es eine Datendatei mit den berechneten Indikatorwerten sowie den Eröffnungs-, Hoch-, Tief- und Schlusskursen für jeden Balken erstellen. Die Datei wird in MetaTrader4 gespeichert -> {Datenordner}/Tester/Dateien/Ihre_DATEI_NAME.csv


Dort sollten zwei Dateien zu sehen sein:
Envelopes_14_0_0_0_0.1_upper.csv
Envelopes_14_0_0_0_0.1_lower.csv

 

Kopieren Sie die berechneten Datendateien an den richtigen Ort, damit SQ sie finden kann


Kopieren Sie diese Dateien in einen Ordner
{SQ-Installation}/Tests/Indikatoren/MetaTrader4

Erstellen Sie diesen Ordner, wenn er noch nicht existiert. SQ Indicaotrs Tester sucht in diesem Ordner nach Dateien.

Nachdem wir nun die Datendatei vorbereitet haben, können wir einen Test in StrategyQuant starten.

 

Konfigurieren und Ausführen von Indikatortests in SQ

Wechseln Sie zum Code-Editor und klicken Sie in der Symbolleiste auf Testindikatoren.

Es öffnet sich der Dialog Indicator Tester, klicken Sie auf Neuen Test hinzufügen. Fügen Sie dem Test Hüllkurven-Indikatoren sowohl für den oberen als auch für den unteren Ausgang hinzu.

Sie sehen das in der Tabelle wie folgt. Als Letztes müssen wir noch die Name der Testdateis entsprechend den Namen der im vorherigen Schritt erstellten Testdatendateien, und optional auch Test-Parameterwenn Sie andere als die Standardeinstellungen verwendet haben:

Danach klicken Sie auf Start um die Tests durchzuführen.

Im Idealfall sind die Tests erfolgreich und die in SQ berechneten Werte stimmen mit den in MT4 berechneten Werten überein:

Wenn etwas nicht funktioniert, gibt es Unterschiede zwischen den Werten von SQ und MT4. Sie können auf die Unterschiede klicken, um sie in der Liste zu sehen:

Wenn der Test fehlschlägt, überprüfen Sie zunächst, ob die in MT4 generierten Testdaten dieselben Indikatorparameter verwenden, da es sich um einen Fehler handeln kann.

Wenn die Testdaten korrekt sind, dann stimmt etwas mit der SQ-Implementierung Ihres Indikators nicht - er funktioniert anders als sein MT4-Gegenstück und muss korrigiert werden.

 

War dieser Artikel hilfreich? Der Artikel war nützlich Der Artikel war nicht nützlich

Abonnieren
Benachrichtigen Sie mich bei
0 Kommentare
Inline-Rückmeldungen
Alle Kommentare anzeigen

Verwandte Beiträge