Tester im Terminal MetaTrader 4: Man sollte ihn kennen

MetaQuotes | 19 Februar, 2016


Einführung

Arbeiten an den Finanzmärkten ist ohne ein Handelssystem nicht möglich. Trader verbringen viel Zeit und Mühe in der Entwicklung von Regeln zum Öffnen und Schließen von Positionen, empirisch ausgewählten Methoden zum Ändern von Positionen mittels Traling Stop. Hier wird das Wissen aus verschiedenen Feldern der Wissenschaft angewandt. Und wenn die Strategie erstellt ist, ist das erste, was zu tun ist, das Mechanische Trading-System (MTS) auf historischen Daten zu testen. Es bedeutet, dass der Tester der wichtigste Teil von jedem Programm wird.


Zwei Arten der Modellierung:

Nicht alle Programme für Technische Analyse (TA) haben die Möglichkeit zum Testen, schon gar nicht jedes Terminal! Auch wenn ein Programm angibt einen Tester zu haben und die Option zum Testen besitzt, kann es Fehler oder architektonische Einschränkungen und Verbote haben. Fehler haben. Deshalb war es während der Entwicklung des Testers für das MetaTrader 4 Terminal sehr wichtig, die architektonischen Lösungen im Voraus aufzunehmen, die das Bestehen einer ganzem Klasse an Strategien behindern, basierend auf dem Wissen der Zukunft. Es gibt zwei Wege des Programmtests für jede Strategie:

Das Dreieck "Current Time" bezeichnet eine Stelle, an der der Tester sich zum gegenwärtigen Zeitpunkt befindet. Im ersten Fall sehen wir die vergangene Zeit (Last), wo der Tester Daten verarbeitet hat, und die zukünftige Zeit (Future), in welcher der Tester arbeitet. Beide, Vergangenheit und Zukunft, sind bereits berechnet (Indikatoren, Schlusskurse, Hoch und Tief), der Tester folgt nur dieser Sequenz. Und wenn es eine Möglichkeit gibt die Zukunft zu sehen, (real oder Fehler), benötigen die Ergebnisse des Tests eine gründliche Überprüfung. Und ausschließen bekannter Möglichkeiten stellt nicht sicher, dass es keine anderen Möglichkeiten gibt. Dies ist letztendlich ein ständiges Problem für einen Tester-Entwickler oder Tester-Benutzer.

In dem zweiten Fall haben wir nur die vergangene Zeit (Last), es gibt grundsätzlich keine Zukunft (ein dunkles Feld). In diesem Ansatz haben wir immer nur die Information über die Vergangenheit, und keine Informationen über die Zukunft, wie im wirklichen Trading. Mit jedem neuen Tick (Kursänderung) im Tester, bewegen wir uns in die Gegenwart, das Current-Time Dreieck bewegt sich nach rechts auf die neue bekannte Zeit zu und erhalten neue Kurse. Jeder neue Tick erstellt die Gegenwart, erhöht die Information über die Vergangenheit und hat weiter die dunkle unbekannte Zukunft vor sich. In diesem Fall hat der Tester grundsätzlich keine Möglichkeit eine Zukunft zu sehen, ungeachtet der Fehler, die ein Trader beim Schreiben einer Strategie begehen kann.

Genau das ist der Unterschied zwischen den zwei Ansätzen. Der erste Ansatz der Erstellung des Testers bietet die illusionäre Einfachheit und Schnelligkeit des Tests, die zweite gibt die Gewissheit, dass alle geschriebenen Strategien sich in der absolut gleichen Weise verhalten werden, wie in Echtzeit-Trading bei gleichen Kursänderungen. Deshalb werden die Sequenzen, modelliert für den Tester, als Dateien gespeichert, die Momentaufnahmen des Balken-Zustands enthalten (fxt Datei), die wie ein gewöhnliches Chart geöffnet werden können, mit dem Menü "Datei" - >> "Datei offline öffnen".


Die Tester-Dateien sind mit einem Symbol mit dem Buchstaben G (generated) gekennzeichnet und bieten die Informationen über die Art der Modellierung, den Bereich der modellierten Kursänderungen, Anzahl an Balken und Zeitrahmen:

zum Beispiel, wenn wir die Datei EURUSD M15 öffnen, sehen wir den Weg, in dem ein M15 Balken für den Tester modelliert wurde:



Das Bild zeigt den Fortschritt eines Balkens im 15-Minuten Zeitrahmen. Beim Testen eines Expert Advisors hat der Tester diese 15-Minuten (2006.04.21 10:00) Kerze in einer genau solchen Sequenz gesehen. Die Anzahl der Kursänderungen in einem Minuten-Balken ist gleich zu der Anzahl der Kerzen-Änderungen während des Tests. So sieht der Tester zu jedem Zeitpunkt einen korrekten Kurs Open (der fest ist und gleich zu Open[0]), korrekte maximal und minimal Kurse (sie sich während des Zeitraums des Balkenfortschritts ändern können), gleich zu dem aktuellen High [0] und Low[0], und dem letzten bekannten Kurs Bid, gleich zu dem aktuellen Schlusskurs Close[0], der sich ändert bevor der Balken schließt. Volumen werden ebenfalls maximal korrekt modelliert, wie es auf dem wachsenden grünen Histogramm von Volumina ersichtlich ist, wie auf einem einfachen Diagramm. Die rote gebrochene Linie steht für den Indikator Moving Average (Simple Moving Average) mit der Periode 1. Dieser Moving Average zeigt die Position des Schlusskurses (Close) zu jedem Zeitpunkt während des Tests.

Wichtig! Der Tester in MetaTrader 4 verarbeitet jede Kursänderung und lässt keinen Weg in die Zukunft zu tauchen..


Modellierung aus Verschiedenen Zeitrahmen eines Getesteten Symbols

Der Tester in MetaTrader 4 ermöglicht nicht nur den getesten Zeitrahmen zu sehen, sondern auch andere - höhere und niedrigere - Zeitrahmen. Auf diese Weise, wenn wir einen Expert Advisor auf den Zeitrahmen EURUSD M15 testen, können wir die Werte der Indikatoren für EURUSD H1 oder EURUSD M5 sehen. Außerdem können wir die maximalen und minimalen Kurse des aktuellen Null Balkens auf jedem verfügbare EURUSD Zeitrahmen sehen. Wenn wir den maximalen Kurs des aktuellen Tages erhalten müssen, zeigen wir einfach den Wert iHigh(NULL,PERIOD_D1,0) an. Es ist wie im Online-Trading. Und es macht keinen Unterschied auf welchem Zeitraum wir den Expert Advisor testen, oder auf dem Chart auf dessen Zeitrahmen er im Echtzeit-Modus.

Dadurch ist es die Aufgabe des Testers nicht nur den aktuellen Zeitrahmen korrekt zu modellieren, sondern auch alle anderen benötigten Zeitrahmen. Diese Aufgabe wird in Tester auf die folgende Weise gelöst: nicht nur der Balken-Fortschritt des aktuellen Null-Balkens wird modelliert, sondern auch alle anderen Zeitrahmen werden auf die gleiche Weise modelliert. Der Empfang von jedem neuen Tick ändert die Information über den Zustand des Null-Balkens auf jedem Zeitrahmen, alles wird synchron ausgeführt. Hier ist ein Bild:



Die blaue Farbe zeigt sie abgeschlossenen Balken, die grüne Farbe - den aktuell ändernden Null-Balken. Die Zahlen +1 bezeichnen den Empfang eines neuen Tick. Jeder Tick wird sofort auf allen benötigten modellierten Zeitrahmen empfangen. Um sicher zu sein, können Sie den Test des einfachen Expert Advisor CheckModelling.mq4 starten, der die für den Tester verfügbaren Kurse zu jedem Zeitpunkt anzeigt.

Alle angeforderten Zeitrahmen (und nicht nur Kurse, sondern auch Volumen) werden korrekt modelliert. Der Tester sieht synchrone Kursfortschritte auf jedem Zeitrahmen, wie im wirklichen Leben:


Es ist klar, dass ein Kurs-Tief für den 15-Minuten Zeitrahmen sich von dem Kurs-Tief eines höheren Zeitrahmens unterscheidet. Das gleiche gilt für das Kurs-Hoch. Allerdings kann der Kurs Bid auf allen Zeitrahmen beim Empfang des Tick der gleiche sein.

Wichtig: alle Zeitrahmen der getesteten Symbole werden auch korrekt modelliert - Eröffnungskurse, Hoch, Tief und Schlusskurs werden 100% korrekt modelliert. Volumen höherer Zeitrahmen werden auch 100% korrekt modelliert.


Modellierung von Kursen auf andere Symbole

Die Menge der modellierten Daten für genaues Testen auf die Historie ist manchmal groß und kann mehr Speicher- und Prozessorressourcen erfordern. Der Tester in MetaTrader 4 ermöglicht es nicht Portfolio-Tests zu betreiben, aber Computertechnologien entwickeln sich so schnell, dass wir, wahrscheinlich, bald in der Lage sein werden genaue Tests komplexer Strategien durchzuführen, mit offenen Positionen auf zahlreiche Symbole. Dennoch ermöglich der Tester in MetaTrader 4 den Empfang von Informationen über Kurse anderer Symbole, die sich von den getesteten unterscheiden. Aber in diesem Fall wird keine Modellierung betrieben, die werden extrahiert wie sie sind. Der Null-Balken ist vereinfacht einzuführen am Anfang der Verarbeitung des Folgenden: High[0]=Low[0]=Close[0]=Open[0], Volume[0]=1 der in die Lage versetzt den Kurs am Anfang des Balkens zu kennen, aber nicht den Kurs am Ende. Um dies sicherzustellen, testen Sie einfach einen simplen Expert Advisor auf EURUSD in dem Modus "Jeder Tick".

//+------------------------------------------------------------------+
//|                                               CheckModelling.mq4 |
//|                      Copyright © 2007, MetaQuotes Software Corp. |
//|                                        https://www.metaquotes.net/     |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, MetaQuotes Software Corp."
#property link      "https://www.metaquotes.net/"
 
//---- input parameters
extern int       DayS=21;
extern int       MonthS=4;
extern int       YearS=2006;
extern int       HourS=10;
extern int       MinuteS=00;
extern int       CounterS=20;
int counter;
int start()
  {
//----
   if (counter>CounterS) return;
   if (Year()<2006) return;
   if (Month()<MonthS) return;
   if (Day()<DayS) return;
   if (Hour()<HourS) return;
   if (Minute()<MinuteS) return;
   Print("My time frame   "," Open=",Open[0],"  High=",High[0],"   Low=",Low[0],
      "  Close=",Close[0],"  Volume=",Volume[0],"  Bid=",Bid);
   Print("30 minute frame "," Open=",iOpen(NULL,PERIOD_M30,0),"  High=",iHigh(NULL,PERIOD_M30,0),
      "   Low=",iLow(NULL,PERIOD_M30,0),"  Close=",iClose(NULL,PERIOD_M30,0),
      "  Volume=",iVolume(NULL,PERIOD_M30,0),"  Bid=",Bid);
   Print("1 hour frame    "," Open=",iOpen(NULL,PERIOD_H1,0),"  High=",iHigh(NULL,PERIOD_H1,0),
      "   Low=",iLow(NULL,PERIOD_H1,0),"  Close=",iClose(NULL,PERIOD_H1,0),
      "  Volume=",iVolume(NULL,PERIOD_H1,0),"  Bid=",Bid);
   Print("4 hour frame    "," Open=",iOpen(NULL,PERIOD_H4,0),"  High=",iHigh(NULL,PERIOD_H4,0),
      "   Low=",iLow(NULL,PERIOD_H4,0),"  Close=",iClose(NULL,PERIOD_H4,0),
      "  Volume=",iVolume(NULL,PERIOD_H4,0),"  Bid=",Bid);
 
   counter++;  
//----
   return(0);
  }
//+------------------------------------------------------------------+

Berechnung dfer Indikatoren während der Modellierung

Vor zehn Jahren bestimmte unzureichende Leistung von Heim-Computern und Arbeitsstationen Einschränkungen von Software-Entwicklern. Beschränkter Arbeitsspeicher, Prozessorfrequenz unter 100 MHz - all dies ermöglichte nur die Verwendung platzsparender Arten der Berechnung und des Testens von Handelsstrategien. Intrabar Tests existierten noch nicht, alle notwendigen Indikatoren wurden vorher berechnet und getestet in einer fertigen, unveränderlichen Form. Zu dieser Zeit war dies eine einzelne Lösung, die Einschränkungen beim Testen festlegte. In diesem Ansatz erhalten wir korrekte Indikator-Werte nur für den Zeitpunkt des Schließens des Balkens, und die Verwendung dieser Daten meint tatsächlich eintauchen in die Zukunft.

Der Tester in MetaTrader 4 erhält keine berechneten Daten, er erhält nur modellierte Kursentwicklung, und auf Grundlage der neu eingehenden Kurse werden alle notwendigen Indikatoren im Verlauf des Tests berechnet. Das heißt, alle Indikatoren werden auf die gleiche Weise berechnet, wie im Online-Betrieb. Dies ist ein ausreichender Vorteil des Testers, aber wenn der Algorithmus des Indikators nicht optimal ist, kann ein EA Test wesentlich verlangsamt werden. Die Indikator-Berechnung im Tester, ist so schnell wie in dem Terminal und ein nicht optimierter Algorithmus kann unbemerkt bleiben. Aber im MetaTrader 4 Tester, während der Berechnung von Millionen von Balken (a Minuten Historie von EURUSD aus 1999 enthält fast drei Millionen Balken), wird jede Nicht-Optimum offensichtlich. Vergessen Sie nicht, dass jede Tick-Modellierung eines Minuten-Balken nicht einen, sondern mehrere Ticks ergibt, von denen jeder durch den Tester berechnet wird.

Heutzutage besitzen Prozessoren Gigabytes an operativem Speicher und mehrere Gigahertz Frequenz, die 32-Bit Architektur wird durch 64,Bit Systeme ersetzt, sogar Multiprocessing erschien. Aber es gibt noch immer viele Menschen, die mit den Kategorien des vergangenen Jahrhunderts arbeiten und alle Nachteile der vorherigen Generation von TA Programmen und Entwicklern, auf den MetaTrader 4 Tester beziehen. Solche Menschen fürchten die Intrabar Modellierung, weil sie diese als eine fehlerhafte Tester-Operation betrachten. Der Tester in MetaTrdaer 4 beweist nicht nur die Möglichkeit einer korrekten Kurs-Modellierung auf jeden Zeitrahmen, sondern auch die Notwendigkeit von genau diesem Ansatz, in Historien-basierten Strategietests.

Sie können das Video ansehen und die Kursentwicklung und die Indikator-Berechnung im Tester einschätzen:


Wichtig: Der Tester führt ein reales Testmodell durch, das bestimmte Ressourcen erfordert.


Häufige Fragen, die sich aus der Unkenntnis der Korrekten Kurs-Modellierung im Tester ergeben

MetaTrader 4 wurde offiziell am 1. Juli 2005 veröffentlicht, und seitdem tauchen die gleichen Fragen in verschiedenen Foren auf, und die Fragen sind verbunden mit fehlerhaftem Tester-Betrieb. Hier sind die häufigsten Fragen, entstanden aus den Mythen über vergangenes-Jahr Tester.


Fazit

Der Tester in MetaTrader 4 ist das Ergebnis einer langjährigen Erfahrung im Schreiben mehrerer Generationen einer Handelsplattform seit dem Jahr 2000. Es wurde alles getan, um dem Trader eine Möglichkeit zum Testen von Strategien zu bieten, mit der maximal möglichen Genauigkeit. Dadurch entfällt die Notwendigkeit eines mehrere Monate langen Tests einer neuen Handelsidee im Echtzeit-Modus. Allein das Wissen über alle Optionen des Testers hilft Ihnen Zeit zu sparen und die Wichtigkeit der korrekten Entwicklung von Indikatoren und EAs zu erkennen.