English Русский 中文 Español 日本語 Português
Experten-Testen im Client Terminal MetaTrader 4. Der Einblick

Experten-Testen im Client Terminal MetaTrader 4. Der Einblick

MetaTrader 4Tester | 2 Februar 2016, 08:18
1 153 0
Slava
Slava

Um einen Test durchzuführen, müssen Sie das Fenster "Tester" öffnen, wenn es noch nicht geöffnet ist. Das kann man auf verschiedene Arten machen: gehen Sie auf "Ansicht-Strategietester" im Hauptmenü, oder es ist auch die Kombination Strg + R, Sie können auch auf den "Strategietester" in der Werkzeugleiste klicken oder aus dem Kontextmenü der Grafik, zu der der Expert hinzugefügt ist, da wählen Sie "Expert Advisors-Strategietester" aus oder drücken Sie F6.

Bevor der Test gestartet wird, muss ein Expert-Advisor ausgewählt werden. Der kann aus einer Popup-Liste ausgewählt werden oder ziehen Sie es mit der Maus aus dem Fenster "Navigator" und lassen Sie ihn im Fenster "Tester" bleiben. Es kann auch ein Werkzeug-Symbol für die Testen mit der gleichen Methode ausgewählt werden - Wählen Sie es in der Popup-Liste aus oder ziehen Sie es aus dem Fenster "Marktübersicht". F6 ermöglicht die gleichzeitige Auswahl der Experten, des Symbols und der aktiven Periode der Grafik, aber dafür muss der Experte zur Grafik hinzugefügt werden.

Es ist auch notwendig, eine Methode der historischen Datenmodellierung auszuwählen. Einige Handelsstrategien sind nicht von den Preisbewegungen in der Bar abhängig, sie handeln schon auf gebildeten Bars. Ob das aktuelle Bar vollständig gebildet ist, können Sie nach der Erscheinung eines neuen Bars erfahren. Der Modellierungsmodus "Eröffnungspreise" ist gerade für solchen Experten vorgesehen. Geben Sie bitte Acht, wenn es im Experten die Entscheidungen abgesehen von Daten des aktuellen Bars getroffen werden, denn ein Test eines solchen Experten im Modell "Eröffnungspreise" wird nicht korrekt! In der Regel sind die Experten, die nach der Bestätigung des Arbeitendes vom Bar weiter arbeiten, haben den folgenden Code, um den Anfang des nächsten Bars zu überprüfen:

static datetime prevtime=0;
...
if(prevtime == Time[0]) return(0);
prevtime = Time[0];

In allen anderen Fällen muss das Modell "Jeder Tick" verwendet werden. Es wird nicht empfohlen, das Modell "Kontrollpunkte" beim Test zu verwenden. Dieses Modell ist für eine grobe Arbeitsschätzung des Experten im Optimierungsmodus vorgesehen. Seit genetische Algorithmen der Optimierung im Strategietester erstellt wurden, gibt es keine Notwendigkeit mehr, das Modell "Kontrollpunkte" zu verwenden. Für die Modellierung der historischen Daten in jedem Tick braucht man möglichst viele Minutendaten zu haben. Wenn es keine Minutendaten zur Verfügung stehen, werden Fünf-Minutendaten für die Modellierung verwendet. Wenn sie auch nicht zur Verfügung stehen, werden die fünfzehn Minutendaten verwendet usw. Entsprechend wird aber die Modellierungsqualität verringern.

Wenn die Taste "Start" angeklickt wird, wird es zuerst die Testreihe der Preisänderung erzeugt, die in der Datei mit der Erweiterung FXT zwischengespeichert wird. Alle FXT-Dateien werden im Verzeichnis <client_terminal_dir>\tester\history gespeichert und haben den Typnamen SSSSSSPP_M.fxt, wo:

  • SSSSSS - ist ein Symbol des getesteten Werkzeugs;
  • PP - der Periode-Wert des getesteten Werkzeugs, in Minuten;
  • M - das Test-Modell (0 - "Alle Ticks", 1 - "Kontrollpunkte", 2 - "Eröffnungspreise").

In der FXT-Datei werden die aktuellen Einstellungen des Finansinstrumentes und des aktuellen Kontos geschrieben. Das Client-Terminal empfängt diese Einstellungen automatisch aus dem Handelsserver. So wird beim Test eine reale Server-Funktionalität simuliert: Berechnungen der Margin-Calls, Rollover, Kommissionen, Abgaben usw. Wenn es keine Verbindung momentan gibt, dann werden die letzten bekannten Einstellungen von dem Handel-Server verwendet, zu dem das Client Terminal zuletzt verbunden war. Eine FXT-Datei wird jedes Mal bei jedem Klick auf "Start" neu gebildet. Na jetzt kommt die Frage: Warum braucht man diese Datei, wenn sie sich jedes Mal neu bildet? Erstens, es können so viele Tick-Daten sein, dass sie alle im Computer-RAM nicht passen, also es wird ein externer Speicher benötigt, um diese Daten daraus Block um Block nehmen zu können, was besonders wichtig bei der Optimierung ist. Zweitens können wir kontrollieren, welche Reihenfolge der Tester generiert hat. Diese Datei kann man unabhängig öffnen, um die Modellierungsentwicklung der Bars-Preise visuell zu kontrollieren.


Also, warum braucht man die Daten neu zu berechnen, die bereits entstanden sind?

  • Erstens gibt es oft eine Notwendigkeit, den Test über den neuesten historischen Daten durchzuführen.
  • Zweitens kommt es sehr oft bei der ersten Generation von Tick-Daten vor, dass nicht alle Daten der kleineren Timeframes vom Server zu dem Moment heruntergeladen sein können, in dem die Reihenfolge des Testes schon generiert ist. Die Sache ist die, dass die Daten-herunterladen ist asynchron, denn der Server gibt dem Client keine Benachrichtigung, dass alle angeforderten Daten bereits übertragen worden sind. Aber wir können sicher sein, dass alle angeforderten Daten innerhalb von 1 bis 2 Minuten empfangen werden.
  • Drittens, und das ist ein wichtiger Punkt, man kann seine Benutzerkonten bei verschiedenen Brokern haben. Und verschiedene Broker bieten nicht nur verschiedene Handelsbedingungen (Bitte denken Sie daran, dass der Titel der FXT-Datei die wichtige Informationen enthält, mit der man die Handel-Server-Funktionalität simulieren kann) an, sondern auch die Menge und die Qualität der historischen Daten.
  • Viertens passiert es sehr oft, dass die falsch ausgerichteten Daten von verschiedenen Timeframes und aus verschiedenen Quellen im Client-Terminal sind. Das Problem ist sehr aktuell geworden, nachdem im Client-Terminal die Download-Möglichkeit der großen History-Mengen für die Grundwährungspaare erstellt wurde. Viele Händler während der Arbeit mit echten Brokern hatten Daten aus dem MetaQuotes Server runtergeladen. Das ist ein sehr wichtiger Punkt, der auf die Modellierungsqualität einen Einfluss hat. Um die Aufmerksamkeit auf dieses Problem zu lenken, wird der Tester einen Fehlerbericht von falsch ausgerichteten Daten für unterschiedliche Timeframes schreiben. Welche Fehler sind sie? Zum Beispiel, wenn die Preise-Limits High und Low des generierten Bars überschreiten werden, oder wenn die Ticks-Menge des generierten Bars überschreiten wird.

Es muss erklärt werden, wie eine Test-Reihenfolge gebildet wird, wenn die Anfangsdatum und Enddatum verwendet werden (die entsprechende Einstellung muss aktiviert werden, das Hacken "Use date"). Eine Test-Reihenfolge fängt nicht vom Anfangsdatum an. Bevor der Tester beginnt, Ticks zu generieren, stellt der Tester 1000 fertiger nicht modellierbare Bars am Anfang der Reihenfolge. Wenn die anfängliche Bars weniger werden, dann werden alle Bars vom Anfang der History verwendet, aber nicht weniger als 100. Also, wenn das Anfangsdatum sehr nahe vom Anfang der gesamten History geordnet ist, dann kann die Ticksgenerierung später nach dem angegebenen Datum beginnen. Wir müssen zumindest 100 Bars liefern, bevor der Test beginnt. Die ersten Bars in der Reihenfolge sind dafür nötig, damit der Expert-Advisor die Indikatoren korrekt zählen könnte, die auf Basis der vorherigen Daten entstanden sind (das betrifft besonders der gleitenden Mittelwerten). So sieht eine erzeugte Reihenfolge aus, welche die Entwicklung eines Bars auf Basis der modellierten Ticks mit dem eingestellten Anfangsdatum 2007.08.01 zeigt:

Die Modellierung wird beendet, wenn das Enddatum erreicht wird. Die Preisdaten ab 00.00 Uhr des Enddatums werden im Test keine Teilnahme nehmen und werden nicht in der erzeugten Reihenfolge berechnet. Wenn die Datums angegebenen werden, die nicht in den Rahmen der History oder "Use date" sind, dann kann bei der Generierung die ganze History teilnehmen (aber nicht die ersten 100 Bars). Die Einstellung der maximalen Anzahl der Bars in der Grafik hat keinen Sinn für die Modellierung - da wird die ganze History verwendet, die auf der Festplatte bleibt.

Wenn es während der Bildung der Test-Reihenfolge klar wird, dass es weniger historischen Daten sind als 100 Bars, dann wird es im Testjournal die Nachricht "TestGenerator: deficient data" erscheinen, und der Tester wird nicht gestartet. Es ist auch möglich, dass es überhaupt keine Daten gibt, meistens passiert es wegen dem falsch angegeben Datumsbereich, und dann erscheint im Testerjournal die Nachricht "TestGenerator: no history data". In einem solchen Fall muss eine notwendige Anzahl von historischen Daten geliefert werden, dafür kann man die entsprechende Grafik manuell öffnen und mit der Taste PageUp, die Daten runterladen. Danach starten Sie den Tester neu.

Vor dem Start des Testers ist es notwendig, die Eingabeparameter des getesteten Experten einzustellen. Geben Sie bitte Acht besonderes auf die Währung des Deposites. Zum Beispiel, es gibt beim geöffneten Konto des Typs micex kein Testergebnis des Experten für's Symbol GAZP, wenn als Deposites Währung nicht RUB gegeben wird (dieses Symbol kann man manuell eintragen, wobei, dass es ihn nicht in der Popup-Liste gibt):


Der Titel "Eingabeparameter" wird nur dann verfügbar, wenn externe Variablen im Experten angezeigt werden. Verschiedene Kombinationen von Eingabeparameter kann man als Set-Dateien unter verschiedenen Namen (die Taste "Speichern") speichern und sie künftig (die Taste "Laden") verwenden.


Durch Klicken auf die Taste "Ändern Expert Advisor" wird zur Bearbeitung der MetaEditor aufgerufen, der für diesen Zweck mit dem geöffneten Experten geöffnet wird. Diese Taste, genauso wie andere wird beim Start des Testers blockiert. Allerdings lässt der MetaEditor immer noch zu, den Experten neu zu kompilieren, wenn er sogar noch beim Test beteiligt ist. Bei einem anderen Start des Testers wird der neu kompilierte Expert Advisor automatisch für den neuen Test neugeladen.

Nachdem, wie der Testprozess beendet wurde, kann man die Grafik öffnen, in der Pfeile mit Handelsoperationen und im Testprozess verwendeten Indikatoren gezeichnet werden. Allerdings gibt es ein Problem damit, dass diese Indikatoren mit standardmäßigen Farben angezeigt werden. Zum Beispiel, wenn die gleitenden Mittelwerten mit unterschiedlichen Mittelungszeiträumen verwendet werden, dann werden sie alle in roten angezeigt, was natürlich nicht sehr praktisch ist. Die Farben der Indikatoren können manuell geändert werden, aber es gibt eine andere Lösung dieses Problems. Wenn man eine Vorlage mit dem Namen <expert_name> im Voraus erstellt. Wenn tpl (zum Beispiel, Moving Average.tpl) mit hinzugefügten Indikatoren gibt, dann wird diese Vorlage bei der Eröffnung der "getesteten" Grafik verwendet. Wenn es keine entsprechende Vorlage gibt, wird die Vorlage tester.tpl verwendet.

Der Strategie-Tester unterstützt die so genannte Visualisierung des Testprozess.


Wenn die "Visualisierung" aktiviert ist, wird eine "Debugging" Grafik automatisch beim Serverstart mit den Vorlagen von <expert_name>. tpl oder tester.tpl geöffnet. Der aktuelle Zustand der Test-Reihenfolge wird in der Grafik angezeigt. Der Geschwindigkeitswechsel der Visualisierung wird durch den Einsatz des Schiebers erreicht, wenn er nach links bewegt wird, wird es langsamer, nach rechts wird es schneller. Um eine Pause zu machen, kann man entweder "||" drücken oder die Taste Pause auf der Tastatur, um nach der Pause weiter zu arbeiten - drücken Sie auf ">>" oder wieder auf die Taste Pause. Im Pause-Status kann man F12 drücken, um die Visualisierung Schritt um Schritt manuell bereitzustellen. Man kann auch das Datum eingeben und auf die Taste "Weiter zu" drücken. In diesem Fall wird die Grafik nicht neu gezeichnet, bis der Tester das angegebene Datum nicht erreicht, was im Wesentlichen den Prozess beschleunigt. Nachdem der Test beendet ist (indem Sie auf die Taste "Stop" gedrückt haben), wird der Status der historischen Daten an seiner Haltestelle auf der Grafik angezeigt.

Beim Zuschauen der Test-Grafik wird der Doppelklick auf einen ihren Teil die Umschaltung auf den Ergebnisse-Titel anwenden und wählt der entsprechenden Position aus. Wenn die Test-Grafik eröffnet wurde ("Visualisierung" aktiviert oder es wurde auf "Charts öffnen" gedrückt), wird der Doppelklick auf eine Stelle im Titel "Ergebnisse" die Grafik ins entsprechende Datum verschieben.

Um eine Handelsstrategie zu optimieren, muss man mindestens zwei Schritte durchführen. Das Hacken "Optimierung" im Titel "Einstellungen" aktivieren und in den Eigenschaften des Titels "Parameter" stellen Sie die Anfangs- und Endwerte ein, und noch den Änderungsschritt für optimierten Parameter.


Also, wenn ein Experte keine Eingabeparameter hat, dann kann er nicht optimiert werden. Der Optimierungsprozess kann durch die Einrichtung von Optimierungsgrenzen beschleunigt werden.


Wenn der entsprechende Grenzwert erreicht ist, stoppt der Tester die Testrunde und startet eine neue, mit der nächsten Parameterkombination. Hierbei ist die Testrunde, die aufgrund der Begrenzung beendet wurde, wird als nicht erfolgreiche gefunden und wird nicht in der Ergebnisseliste der Optimierung eingetragen. Die Testrunde mit Verlusten werden auch als nicht erfolgreiche gefunden. Um die erfolglosen Testrunden in die Liste der Optimierungsergebnisse einzutragen, ist es notwendig, das Hacken im Kontextmenü des Titels "Optimierung Ergebnisse" von "Weiter nutzlos Ergebnisse zu" wegzunehmen.

Ein sehr häufiger Grund für Ansprüche wie "Strategie Optimizer funktioniert nicht" ist eben das, dass die erfolglosen Ergebnisse standardmäßig nicht in der Liste eingetragen werden. In diesem Fall wird im Tester-Journal die Nachricht "NNN results have been discarded as insignificant" erscheinen.

Um die Prozessoptimierung zu beschleunigen, wurde die Zwischenspeicherung der Ergebnisse umgesetzt. Wenn bei der wiederholten Optimierungsrunde der Tester im Cache kein Ergebnis gefunden hat, welches der aktuellen Parameterkombination nicht entspricht, dann wird das gefundene Ergebnis ohne Experten-Ausführung verwendet. Auf dieser Weise kann man den Arbeitsprozess der Optimierung beenden, denn der nächste Start der Epxerte-Optimierung mit gleichen Parametern ermöglicht, den Cache zu bekommen, der zuvor berechnete Ergebnisse enthält und von dem Punkt weiter zu berechnen, wo die Testerrunde unterbrochenen wurde. Wenn die Testdaten geändert wurden oder der Experte wurde neu kompiliert, oder seine Bibliotheken wurden geändert, dann wird der Optimierer-Cache zurückgesetzt und alle Berechnungen werden neuberechnet.

Man muss sagen, dass die Ausführung einer einzelnen Testerrunde eine bestimmte Neuberechnung der Ticks von der testeten Reihenfolge verursacht. Deshalb wird der Cache beim nächsten Start des Optimizers zurückgesetzt und beginnt neu zu bilden!

Der Tester kann nicht die Bibliothek-Änderungen im zweiten Level und höher kontrollieren(das heißt die Bibliotheken, die aus Bibliotheken aufgerufen werden)! Deshalb muss man in solchen Fällen den Cache selbst zurücksetzen, zum Beispiel durch eine Neukompilation des Experten. Die Dateien mit zwischengespeicherten Daten des Optimizers werden im Verzeichnis tester\caches gespeichert

Der Caching der Optimierungsergebnisse hilft auch bei der Aktivierung des genetischen Algorithmus. Der genetische Algorithmus der Optimierung kann in den Eigenschaften des Experten im Titel "Testing" aktiviert werden.


Die Parameter des genetischen Algorithmus werden automatisch definiert.
  • Die Populationsgröße hängt von der Anzahl aller möglichen Parameterkombinationen ab und kann Werte von 64 bis 256 haben.
  • Die minimale Anzahl von Generationen hängt von der Populationsgröße ab und kann Werte von 15 bis 31 haben.
  • Auf dieser Weise ist die minimale Anzahl der Runde vom genetischen Optinizers liegt im Bereich von 960 bis 7936.
  • Die Kreuzungswahrscheinlichkeit ist 100%. Die Gene werden zufällig gekreuzt, dabei kann eine Einheit nicht mit sich selbst kreuzen.
  • Die Mutationswahrscheinlichkeit ist 10%.
  • Die Inversionswahrscheinlichkeit ist 10%.
  • Die Genetische Optimierung wird beendet, wenn der Genpool innerhalb von 10 Generationen nicht verbessert wird, es ist vorausgesetzt, dass die minimale Anzahl von Generationen so erzeugt werden muss.

Das Test-Journal ist im Verzeichnis tester\logs. Ihre Dateien haben die Erweiterung log. Jedem Tag entspricht da eine log-Datei. Die Testers Logs werden automatisch in 5 Tagen gelöscht. Man kann auch im Kontextmenü des Titels "Journal" den Punkt "Löschen alle Journals" auswählen. So wird der Inhalt in "Journal" gelöscht, alle log-Dateien werden entfernt.

Da die Massendatenausgabe ins Journal während des Testes möglich ist, kann die ganze Information in den Titel "Journal" nicht eingetragen werden, aber es wird garantiert in die log-Datei eingetragen. Bei der Optimierung wird keine Ausgabe ins Journal durchgeführt.

Nach dem Testenden kann man mehr Platz für RAN-Speicher bekommen. Dafür ist es ausreichend, das Fenster "Tester" zu schließen, entweder über die Hauptmenü oder durch Strg-R, oder mit der Taste "Strategie Tester" aus Werkzeugleiste.

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

Zehn grundlegende Fehler eines Traderanfängers Zehn grundlegende Fehler eines Traderanfängers
Zehn grundlegende Fehler eines Traderanfängers: Das Handeln auf der Marktöffnung, Übermäßige Eile bei der Einnahme des Gewinns, Hinzufügen zu einer Verlustposition, Schließung der Positionen beginnend mit der besten, Rachsucht, die am meisten bevorzugten Positionen, das Handeln mit dem Prinzip "Gekauft, für ewig Gekauft", Schließung der rentablen strategischen Position am ersten Tag, Schließung der Position nach dem Eröffnungssignal der gegenüberliegenden Position, Zweifel.
Geheimnisse des Client Terminals MetaTrader 4: Alarm-System Geheimnisse des Client Terminals MetaTrader 4: Alarm-System
Wie Sie immer die aktuelle Lage im Terminal und auf Ihrem Konto wissen können, und dabei nicht immer wieder das Bildschirm angucken. Systemereignisse; Benutzerereignisse; Sounds und ausführbare Dateien; E-Mails; Zugriff-Einstellungen zum SMTP-Server; Veröffentlichen; Zugriff-Einstellungen zum FTP-Server.
Trading-Strategien Trading-Strategien
Alle Kategorien, die Trading-Strategien klassifizieren, sind völlig willkürlich. Die folgende Klassifikation soll die grundlegenden Unterschiede zwischen möglichen Ansätzen zum Handel betonen.
Geheimnisse des Client Terminals MetaTrader 4 Geheimnisse des Client Terminals MetaTrader 4
21 Arten dein Leben zu vereinfachen: versteckte Möglichkeiten des Client Terminals MetaTrader 4 Vollbildmodus; Tastenkombinationen; mobile Navigationszeile; Fenster minimalisieren; Favoriten; Den Trafik verlangsamen; Nachrichten deaktivieren; Kombinationen von Symbolen; Das Fenster Pop-up Preise; Vorlagen für Testgrafiken und unabhängigen Grafiken; Profilen; Fadenkreuz; das Lineal; die Grafik Bar um Bar durchgucken; die Konto-History auf der Grafik; die Typs von Pendig-Orders; Stop-Loss und Take-Profit ändern; die Entfernung annullieren; Drücken einer Grafik.