Test-Visualisierung. Funktionalität-Erweiterung.

Andrey Khatimlianskii | 2 Februar, 2016

Einführung

Im 196-en Bild des Client Terminals MetaTrader 4 gibt es die Visualisierungsfunktion des Testens. Sie ermöglicht den Prüfungsprozess des Expertentestes auf einem völlig neuen Level zu kontrollieren. Nun kann der Trader-Programmierer jede Aktion seines Experten durch die Überprüfung seiner Arbeit in der History beobachten!

Die Information über die Verwendung des Visualizers finden Sie im Artikel Experten-Testen im Client Terminal MetaTrader 4. Der Einblick. In diesem Artikel wird beschrieben, wie man den Strategie-Tester sehr ähnlich mit dem Terminal erstellen kann.

Darstellung des Problems

Was fehlt bei der Test-Visualisierung, um eine vollständige Analyse durchzuführen? Ich denke, in erster Linie ist es - die Titels "Handels" und "Kontohistory".

Wie viele Positionen sind geöffnet? Wie schnell werden die Pendig Orders ausgelöst? Mit welchem Gewinn wurde die vorherige Position geschlossen? Wie viele Marge wird im Moment benutzt und wie weit ist es noch bis zum MarginCall-Level? Während eines realen Handelns suchen wir Antworten auf diese und viele andere Fragen in Titeln "Handels" und "Kontohistory". Was soll man aber bei einem Test machen? Die Antwort ist klar - die Titeln müssen zum Visualizer hinzugefügt werden.

Technische Beschränkungen

Die optimale Lösung des Problems wäre es, zwei Indikatoren in einem Fenster für die Titels "Handel" und "Kontohistory" zu erstellen. Aber dann erwartet uns ein Problem - der Indikator auf der Visualizersgrafik, der keinen Zugriff zum ("virtuellen") Konto hat. Alle Daten, auch die Liste der offenen Positionen, bekommt er aus dem aktiven Arbeitskonto.

Jedenfalls haben wir keine bessere Weise, die Information darzustellen, deshalb werden wir Indikatoren sowieso verwenden. Aber diese Indikatoren werden nicht vollwertig sein. Ihre einzige Aufgabe sind die Unterfenster der Grafik, die sie erstellen. Man muss dann nur diese Informationsfenster ausfüllen.

Das zweite Problem ist, welches wir da auch lösen müssen, ist die Beschränkung des Fensters "Kontohistory". Das Erstellen eines vollständigen Fensters mit einer Bildlaufleiste und mit anderen bequemen Funktionen hätte zu viel Zeit gebraucht, und das ist sehr zweifelhaft, dass es nützlich wäre. Schließlich haben wir den Titel "Ergebnisse" des Testers, sie enthält praktisch alle Informationen über die Operationen.

Unsere "Kontohistory" wird nur die aktuelle Information anzeigen. Zum Beispiel, die letzten 10 geschlossenen Trades.

Die Vorbereitung auf die Verwendung

Am Anfang laden Sie die alle nötigen Daten aus CodeBase runter:

  • Die Include-Datei VisualTestingTools.mq4 - im Verzeichnis "\MetaTrader 4\experts\include\";
  • Zwei Indikatoren - vTerminal.mq4 und vHistory.mq4 - im Verzeichnis "\MetaTrader 4\experts\indicators\";
  • und den Test-Experten VisualizationTestExpert.mq4 - im Verzeichnis "\MetaTrader 4\experts\".
Dann öffnen Sie und kompilieren Sie (F5) beide Indikatoren, und falls es erforderlich ist, auch den Experten.

Der zweite Schritt wird das Erstellen der Vorlage tester.tpl. Dafür stellen Sie das Aussehen der Grafik (Farbschema, Gitterlinien, Skala) ein, "hängen" zu ihr die Indikatoren vTerminal.mq4 und vHistory.mq4, an, schalten Sie den Autoscroll an, und verwenden Sie den Befehl "Speichern Vorlage" aus dem Kontextmenü der Grafik:


Sie können es aus CodeBase runterladen und die Vorlage verwenden, die ich erstellt habe - Speichern Sie es einfach im Verzeichniss "\MetaTrader 4\templates\".

Integration in willkürlichen Experten

Die Funktionen, die die Informationsdarstellung realisieren, sind in der Include-Datei VisualTestingTools.mq4. Vor allem muss man sie zum Experten hinzufügen -, vor der Funktionsanzeige muss diese Zeile eingefügt werden:

#include <VisualTestingTools.mq4>

Danach fügen Sie den Ausruf der Funktionen ein, welche die grafischen Objekten erstellen und die Information erneuern. Zwei in der Funktion init() des Experten, und zwei in der Funktion start(). Wenn der Experte keine Funktionen init() hat, muss man sie deklarieren:

int init()
{
    vTerminalInit();
    vHistoryInit();
    return(0);
}
 
int start()
{
    vTerminalRefresh();
    vHistoryRefresh();
 
    // Der Code des Experten
 
    return(0);
}

Sie können den Experten VisualizationTestExpert.mq4 verwenden, in dem alle Änderungen bereits erledigt wurden.

Externe Variable

Nach dem Hinzufügen der Datei VisualTestingTools.mq4 wird im Experten der Block der externen Variablen erscheinen "< - - - VisualTestingTools - - - >":





Ihr Ziel ist schon intuitiv klar, aber ich möchte trotzdem darüber mehr erzählen:


Verwendung

Das kommende Video stellt den Testprozess des Experten VisualizationTestExpert.mq4 dar, mit den hinzugefügten Titeln "Handeln" und "Kontohistory" im Visualisierungsmodus:




Meiner Meinung nach ist es nicht schlecht geworden.


Mögliche Probleme

Man muss da noch eine Besonderheit erwähnen, die mit der Verwendung der Indikatoren vTerminal und vHistory verbunden ist.
Die Funktion, die für die Suche des Indikatorsfensters (WindowFind) verantwortlich ist, funktioniert nicht beim Testen. Deshalb müssen die Nummer der Indikatoren-Unterfenster für eine korrekte Funktionalität klar eingegeben werden. Deswegen wurden eben die Variablen vTerminal_SubWindow und vHistory_SubWindow hinzugefügt.

Wenn es in der Vorlage tester.tpl andere Indikatoren angewendet werden, die in einem spezialen Fenster angezeigt werden, muss man die "Nummer" der Indikatoren vTerminal und vHistory entsprechend ihren aktuellen Positionen eingeben: der höchster - №1, der tiefste - №2, und so weiter. Wenn die Vorlage nur mit zwei Indikatoren verwendet wird, braucht man nicht die Werte der Variablen vTerminal_SubWindow und vHistory_SubWindow zu ändern.

Abschluss

Im Artikel wurden Programm-Mittels betrachtet, welche den Testprozess des Experten Advisors im Visualisierungsmodus maximal ähnlich mit dem realen Handeln ermöglichen. Jetzt kann man eine Liste von geöffneten und geschlossenen Trades sehen und noch den Status des "virtuellen" Kontos.


Es wurde der Erstellungsprozess und der Speichersprozess einer Vorlage für eine Grafik beschrieben, es wurde auch das Hinzufügen der Programme zum Experten dargestellt, und schließlich wurden die mögliche Probleme betrachtet.