English Русский 中文 Español 日本語 Português
Testen von Expert Advisors auf atypischen Zeitrahmen

Testen von Expert Advisors auf atypischen Zeitrahmen

MetaTrader 4Tester | 3 März 2016, 10:46
999 0
Dmitry Fedoseev
Dmitry Fedoseev

Einführung

Der Kurs am Markt schwankt viel zu häufig, um das Chart mit den Kursänderungen, das sogenannte Tick-Chart, komfortabel bei der technischen Analyse zu verwenden. Um die Wahrnehmung von Kursänderungen zu erleichtern und den Einsatz längerer Zeitrahmen bei der Analyse zu ermöglichen, verwenden wir Balken- oder Kerzen- (Candlestick) Charts. Jeder Balken stellt den Kurswert am Anfang und am Ende eines bestimmten Zeitraums dar, sowie den maximalen und den minimalen Kurs in diesem Zeitraum. Es ist üblich die folgenden Perioden oder Zeitrahmen zu verwenden: 1 Minute, 5 Minuten, 15 Minuten, 30 Minuten, 1 Stunde, 4 Stunden, Täglich, Wöchentlich und Monatlich. Diese Zeitrahmen befinden sich in der MetaTrader 4 Werkzeugleiste.

Trotz der üblicherweise verwendeten Zeitrahmen, die mittlerweile Standard geworden sind, gibt es keinen technischen Grund, warum wir nicht jeden Zeitrahmen zu Anzeige von Kursänderungen verwenden können. Vom praktischen Standpunkt her, stellt das Terminal ein Skript bereit (period_converter), das es Terminal-Benutzern ermöglicht Charts mit atypischen Zeitrahmen zu erstellen, z.B. 2 Minuten, 7 Minuten, 45 Minuten 2 Stunden und grundsätzlich jeden anderen Zeitrahmen, sowie das Anfügen von Indikatoren zu diesen. Allerdings ermöglicht der Terminal Strategietester nur die Auswahl der Standard-Zeitrahmen zum Testen.

So nah und doch so fern - wir können einen atypischen Zeitrahmen erstellen, aber es gibt keinen Weg diesen zum Testen von Expert Advisors zu verwenden. Tatsächlich ist die Situation viel besser als es scheint. Das Testen von Expert Advisors auf atypischen Zeitrahmen ist möglich! Alles was wir tun müssen, ist die Daten der Standard-Zeitrahmen mit den Daten der atypischen Zeitrahmen zu ersetzen. Darüber hinaus können wir auch Expert Advisors testen, die Daten aus mehreren atypischen Zeitrahmen verwenden.


Kernpunkte

Unser Aktionsplan ist wie folgt:

  1. Vorbereiten eines zusätzlichen Terminals zur Offline-Arbeit, so dass neue Daten von Standard Zeitrahmen nicht zu den Charts mit atypischen Zeitrahmen hinzugefügt werden.
  2. Vorbereiten der der Daten von atypischen Zeitrahmen mit dem period-converter Skript im Terminal, das ein ausreichendes Minuten Datenarchiv verfügbar hat.
  3. Import vorbereiteter Daten in das zum Testen bereite Terminal.

Schauen wir es uns genauer an:

1. Vorbereiten des Terminals zum Testen mit atypischen Zeitrahmen.

Installieren eines zusätzlichen Terminals. Das Terminal starten, ein Demokonto öffnen und warten bis die Liste mit den Symbolen im Marktübersicht-Fenster erscheint:

Deaktivieren von Speichern der Kontodaten: Links-Klick auf das Verbindungsstatus Symbol in der rechten unteren Ecke des Terminals und Konto-Login auswählen. Das Häkchen aus "Kontoinformationen speichern" entfernen, Einloggen klicken und warten, dass das Terminal sich mit dem Konto verbindet.

Dies ist notwendig, damit das Terminal sich nicht automatisch mit dem Konto verbindet und verhindert, dass neue Daten zu dem Historie-Archiv hinzugefügt werden. Schließen Sie das Terminal.

In dem Historie-Ordner (history) öffnen Sie einen Ordner, dessen Name dem Namen des Handelszentrum (Broker) entspricht, mit dem das Demokonto eröffnet wurde und löschen Sie alle *.hst Dateien.

2. Vorbereiten der Daten atypischer Zeitrahmen.

Mit dem dem period_converter Skript (verfügbar in der Standard MetaTrader 4 Auslieferung) erstellen Sie atypische Zeitrahmen, z.B. M2 und M7, in einem anderen Terminal, das eine ausreichende Menge M1 Daten für das benötigte Symbol hat, z.B. EURUSD. Zu diesem Zweck öffnen Sie das EURUSD M1 Chart und führen das period_converter Skript auf ihm aus. Bevor Sie das Skript ausführen, setzen Sie ExtPeriodMultiplier im Eigenschaften-Fenster auf 2. Wenn das Skript die Konvertierung der Daten beendet hat, sollte eine Nachricht mit der Anzahl der in der Datei gemachten Einträge in der "Expert Advisor" Registerkarte des Terminal Fensters, z.B.:

"2009.03.19 18:28:09 period_converter EURUSD,M1: 25378 record(s) written"

Das Skript kann danach aus dem Chart entfernt werden (rechts-Klick in das Chart, in dem das Skript läuft und "Skript entfernen" auswählen). Öffnen Sie das sich ergebende Chart: Datei - Chart offline öffnen (suchen Sie nach EURUSD, M2, in der Spalte Historische Daten). Erstellen Sie auf dem gleichen Weg den M7 Zeitrahmen (setzen Sie ExtPeriodMultiplier auf 7, bevor Sie das period_converter Skript ausführen).

Schreiben Sie ein Skript zum Speichern der Chart-Daten in eine *.csv Datei (s_ExportChartToCSV_v1.mq4 im Anhang):

int start(){
   int h=FileOpen(Symbol()+Period()+".csv",FILE_WRITE|FILE_CSV,",");
      for(int i=Bars-1;i>=0;i--){
         FileWrite(h,TimeToStr(Time[i],TIME_DATE),TimeToStr(Time[i],TIME_MINUTES),Open[i],High[i],Low[i],Close[i],Volume[i]);
      }
   FileClose(i);
   return(0);
}

Führen Sie das Skript auf dem Chart mit dem atypischen Zeitrahmen aus. Als Ergebnis erhalten wir Standard *.csv Dateien mit atypischen Zeitrahmen-Daten in dem Experts/Files Ordner

3. Import der Daten.

Öffnen Sie das unter 1. oben vorbereitete Terminal und die Historiendatenbank (Extras - Historiendatenbank oder F2 Taste). Erweitern Sie die Liste der Zeitrahmen in der Symbol-Liste auf der linken Seite und wählen Sie M1 (Doppelklick auf es, damit der entsprechende Text in der Titelleiste des Fensters erscheint):

Klicken Sie "Import" in dem geöffneten Historiendatenbank Fenster, wählen Sie EURUSD2.csv, die unter 2. erzeugt wurde und klicken Sie "OK". Importieren Sie auf diesem Weg auch Daten aus EURUSD7.csv nach M5 und schließen Sie das Fenster der Historiendatenbank. Das ist alles!

Öffnen Sie das EURUSD M1 Chart und Sie sind in der Lage das M2 Chart zu sehen:

Das gleiche gilt für EURUSD M5 - anstatt der M5 werden M7 Daten angezeigt.

Um einen Expert Advisor im Strategietester zu testen, müssen Sie das M1 Chart auswählen, um auf M2 Daten zu testen und das M5 Chart zum Testen auf M7 Daten. Um auf M7 Daten von einem durch den Expert Advisor aufgerufenen Indikator zuzugreifen, müssen sie den M5 Zeitrahmen angeben.

4. Überprüfung.

Wir werden einen einfachen Expert Advisor verwenden, der Positionen beim Überschneiden von 2 MAs (2MA.mq4 im Anhang) öffnet und schließt. Achtung! Dieser Expert Advisor ist nur für den Betrieb im Strategietester vorgesehen.

extern int TimeFrame=0;
extern double Lots=0.1;
extern int FastMAPeriod=13;
extern int FastMAMethod=0;
extern int FastMAPrice=0;
extern int SlowMAPeriod=21;
extern int SlowMAMethod=0;
extern int SlowMAPrice=0;

int start(){
      double fast_ma_1=iMA(NULL,TimeFrame,FastMAPeriod,0,FastMAMethod,FastMAPrice,1);
      double slow_ma_1=iMA(NULL,TimeFrame,SlowMAPeriod,0,SlowMAMethod,SlowMAPrice,1);
      double fast_ma_2=iMA(NULL,TimeFrame,FastMAPeriod,0,FastMAMethod,FastMAPrice,2);
      double slow_ma_2=iMA(NULL,TimeFrame,SlowMAPeriod,0,SlowMAMethod,SlowMAPrice,2);
      static int bt=0;
      static int st=0;
         if(fast_ma_1>slow_ma_1){
            if(fast_ma_2<=slow_ma_2){
               if(st>0)OrderClose(st,Lots,Ask,0,CLR_NONE);
               st=0;
               if(OrdersTotal()==0)bt=OrderSend(Symbol(),OP_BUY,Lots,Ask,0,0,0,"",0,0,CLR_NONE);
            }
         }
         if(fast_ma_1<slow_ma_1){
            if(fast_ma_2>=slow_ma_2){
               if(bt>0)OrderClose(bt,Lots,Bid,0,CLR_NONE);
               bt=0;            
               if(OrdersTotal()==0)st=OrderSend(Symbol(),OP_SELL,Lots,Bid,0,0,0,"",0,0,CLR_NONE);
            }
         }         
   return(0);
}

4.1. Expert Advisor auf einem Einzelnen Atypischen Zeitrahmen.

Öffnen Sie den Strategietester (Ansicht - Strategietester oder Strg+R). wählen Sie den Expert Advisor 2MA, Symbol - EURUSD, Zeitrahmen - M1, öffnen Sie das Expert Advisor Eigenschaften-Fenster ("Expert Advisor Optionen" Schaltfläche im Strategietester) und setzten Sie den Wert der TimeFrame Variable auf 1 oder 0. Starten Sie das Testen und wenn es abgeschlossen ist, öffnen Sie das Chart ("Chart öffnen" Schaltfläche im Strategietester) um sicherzustellen, das der Test korrekt durchgeführt wurde.

4.2. Expert Advisor auf einem Einzelnen Atypischen Zeitrahmen, der sich von dem Zeitrahmen des Strategietesters unterscheidet.

In dem Eigenschaften-Fenster des Expert Advisors setzen Sie die TimeFrame Variable auf gleich 5 und beginnen den Test. Öffnen Sie das Chart, ändern Sie den Chart-Zeitrahmen auf M5 und setzen Sie zwei einfache MAs mit den Perioden 12 und 21, basierend auf den Schlusskursen, um sicherzustellen, dass der Test richtig durchgeführt wurde.

4.3. Zwei Zeitrahmen Expert Advisor.

Der Expert Advisor, den wir verwenden werden, öffnet Positionen an dem Schnittpunkt von zwei MAs auf einem Zeitrahmen, bestätigt durch die Position von zwei MAs auf einem längeren Zeitrahmen (2MA2TF.mq4 im Anhang). Achtung! Dieser Expert Advisor ist nur für den Betrieb im Strategietester vorgesehen.

int start(){
      double fast_ma_1=iMA(NULL,TimeFrame,FastMAPeriod,0,FastMAMethod,FastMAPrice,1);
      double slow_ma_1=iMA(NULL,TimeFrame,SlowMAPeriod,0,SlowMAMethod,SlowMAPrice,1);
      double fast_ma_2=iMA(NULL,TimeFrame,FastMAPeriod,0,FastMAMethod,FastMAPrice,2);
      double slow_ma_2=iMA(NULL,TimeFrame,SlowMAPeriod,0,SlowMAMethod,SlowMAPrice,2);
      
      double _fast_ma_1=iMA(NULL,MA2TimeFrame,FastMAPeriod,0,FastMAMethod,FastMAPrice,1);
      double _slow_ma_1=iMA(NULL,MA2TimeFrame,SlowMAPeriod,0,SlowMAMethod,SlowMAPrice,1);
      
      static int bt=0;
      static int st=0;
         if(fast_ma_1>slow_ma_1){
            if(fast_ma_2<=slow_ma_2){
               if(_fast_ma_1>_slow_ma_1){
                  if(st>0)OrderClose(st,Lots,Ask,0,CLR_NONE);
                  st=0;
                  if(OrdersTotal()==0)bt=OrderSend(Symbol(),OP_BUY,Lots,Ask,0,0,0,"",0,0,CLR_NONE);
               }
            }
         }
         if(fast_ma_1<slow_ma_1){
            if(fast_ma_2>=slow_ma_2){
               if(_fast_ma_1<_slow_ma_1){
                  if(bt>0)OrderClose(bt,Lots,Bid,0,CLR_NONE);
                  bt=0;            
                  if(OrdersTotal()==0)st=OrderSend(Symbol(),OP_SELL,Lots,Bid,0,0,0,"",0,0,CLR_NONE);
               }
            }
         }         
   return(0);
}

Die folgenden Werte sind als Standard eingestellt: TimeFrame - 1, MA2TimeFrame - 5. Wählen Sie den M1 Zeitrahmen im Strategietester und starten Sie den Test. Dann öffnen Sie das Chart und verwenden vertikale Linien an den Punkten der Order-Öffnung und den Punkte der Überschneidung der MAs, an denen keine Order geöffnet wurde. , wobei Sie von M1 auf M5 umschalten, um sicherzustellen, das der Test richtig ausgeführt wurde.


Fazit

Diese einfachen Manipulationen erweitern Horizonte beim Testen von Expert Advisors! Der einzige Nachteil ist das Fehlen von automatischen Aktualisierungen. Wiederholung von Zeit zu Zeit, z.B. einmal in der Woche, der in 1. bis 3. beschriebenen Vorgänge: Löschen aller Daten zu Testzwecken im Terminal, sowie Export und Import von atypischen Zeitrahmen zum Testen, sind ein Augenblick an Arbeit für den Nutzen einer solchen großartigen Erweiterung der Fähigkeiten des Strategietesters.

Übersetzt aus dem Englischen von MetaQuotes Ltd.
Originalartikel: https://www.mql5.com/en/articles/1368

Beigefügte Dateien |
2MA.mq4 (1.29 KB)
2MA2TF.mq4 (1.64 KB)
Grafische Kontrolle der Externen Parameter von Indikatoren Grafische Kontrolle der Externen Parameter von Indikatoren
Externe Variablen von Indikatoren werden über ein spezielles Fenster gesteuert, in dem Parameter geändert werden können und der Indikator wieder gestartet wird. Der offensichtliche Nachteil dieser Bearbeitung, ergibt sich aus der Notwendigkeit die benötigten Parameter auf dem Bildschirm anzuzeigen und den Indikator grafisch zu steuern.
Money Management neu aufgegriffen Money Management neu aufgegriffen
Der Artikel befasst sich mit einigen Fragen, die auftreten, wenn Trader verschiedene Money-Management-Systeme für Forex-Trading verwenden. Experimentelle Daten aus der Durchführung von Trading-Geschäften mit unterschiedlichen Money-Management (MM) Methoden werden ebenfalls beschrieben.
Zeichnen Horizontaler Durchbruch-Ebenen mit Fractals Zeichnen Horizontaler Durchbruch-Ebenen mit Fractals
Der Artikel beschreibt das Erstellen eines Indikators, der die Support/Resistance Ebenen mit Up/Down Fractals anzeigt.
Erstellung und Ausgabe von Handelsberichten sowie Mitteilungsversand per SMS Erstellung und Ausgabe von Handelsberichten sowie Mitteilungsversand per SMS
Börsenhändler haben nicht immer Zeit und Lust stundenlang an Ihrem Ausgabegerät für Geschäftsvorgänge zu sitzen. Besonders dann nicht, wenn ihre Handelssysteme mehr oder weniger formelgestützt arbeiten und in der Lage sind, einige Marktlagen automatisch zu erkennen. In diesem Beitrag wird beschrieben, wie man einen Bericht über Handelsergebnisse mithilfe eines Expert-Systems, eines Indikators oder eines Skripts in Form einer Datei im HTML-Format erstellt und mittels FTP auf einen Webserver lädt. Überdies wird die Frage des Versandes von Mitteilungen über Handelsereignisse per E-Mail sowie per SMS an Mobiltelefone erörtert.