Test Visualisierung: Handelshistorie

Andrey Khatimlianskii | 26 Januar, 2016

1. Motivation

Beginnend mit Build 196 bietet das MetaTrader 4 Client Terminal eine Test-Visualisierungsfunktion. Sie ermöglicht das Kontrollieren von Expert Advisor Tests auf einem völlig neuen Niveau. Nun kann der Trading-Programmierer jede Aktion von seinem oder ihrem Expert Advisor beobachten, durch prüfen seiner Operationen in der Historie!

Sie können über die Verwendung des Visualisierers unter Testing of Expert Advisors in the MetaTrader 4 Client Terminal: An Outward Glance lesen. In meinem vorherigen Artikel mit dem Namen Testing Visualization: Functionality Enhancement, wurde beschrieben wie eine "Trade" Registerkarte für das Testen realisiert wird. Wir werden die "Kontohistorie" Registerkarte hier hinzufügen.


2. Die Aufgabe und wie sie verwirklicht wird

Zunächst einmal müssen wir uns darüber im Klaren sein, dass wir keine Schattenkopie der "Kontohistorie" erstellen können. Um sie zu erstellen, müssten wir ein komplettes Programm mit der Verwendung von DLLs schreiben. Aber wir benötigen dies überhaupt nicht, da die "Testergebnis" Registerkarte des Testers fast alle Informationen über die gemachten Operationen enthält.

Unsere Aufgabe ist es aktuelle Informationen darzustellen. Dies kann sehr praktisch sein, wenn die Arbeit des Expert Advisor analysiert wird. Es besteht während der gesamten Zeit keine Notwendigkeit zwischen den Registerkarten zu wechseln.

Da es nicht sehr viel Platz auf dem Monitor gibt und die Einrichtung einer Scrollfunktion keine sehr einfache Aufgabe ist, werden wir nur die jüngsten Ereignisse darstellen.

Was übrig bleibt, ist daran zu erinnern, dass ein Unterfenster erstellt wird, in dem die Historie angezeigt wird, es notwendig ist einen Inkator zu erstellen und dem Chart hinzuzufügen, das Template mit dem Namen Tester.tpl zu erstellen oder im Template <Expert Template< (Sie können den Indikator direkt aus diesem Artikel herunterladen).

Ein Template für das Testen speichern

Ein Template für das Testen speichern

Nun können wir anfangen den Expert Advisor vorzubereiten.

Das ist nicht sehr schwierig, entweder:


...
double _Commission = 0.0; string _Comment = ""; datetime _Expiration = -1;
 
#include <VisualTestingTools.mq4>
 
int init()
  {
    if(FastEMAPeriod >= SlowEMAPeriod) 
        return(-1);
    vTerminalInit();
    vHistoryInit();
    return(0);
  }
 
int start()
  {
    if(FastEMAPeriod >= SlowEMAPeriod)
        return(-1);
    vTerminalRefresh();
    vHistoryRefresh();
 
    int _GetLastError = 0;
...


3. Testen

Lassen Sie uns nun versuchen den neuen Experten zu testen. Dafür öffnen wir das Strategietester Fenster, wählen den CrossMACD_DeLuxe_VisualHistory im Experten Menü und drücken Sie dessen Eigenschaften-Taste.

Strategietester Fenster

Strategietester Fenster

Der Experte hat einige neue externe Variablen erhalten - sie werden in enthaltenen Datei mit dem Namen VisualTestingTools.mql4 deklariert. Einige von ihnen sind für die Steuerung der "Terminal" Registerkarte gedacht, aber die meisten von ihnen sind gemeinsam:

Stellen Sie die gewünschten Werte von Variablen ein und drücken Sie OK. Prüfen Sie, ob die Visualisierung eingeschaltet ist und beginnen Sie zu testen:

Test Visualisierung: 'Terminal' und 'Kontohistorie' Fenster wurden geladen

Der EA hat eine Position eröffnet, und diese wird im 'Terminal' Fenster visualisiert

Sobald die Position geschlossen wurde, wird sie in die 'Kontohistorie' verschoben und wird durch eine andere ersetzt. Beachten Sie, dass das Stop Loss Feld in Rot hervorgehoben ist - die Position wurde durch den Stopp Loss geschlossen.

Die zweite Position wurde durch den Take Profit geschlossen. Beachten Sie, dass die neueste Position oben in der Kontohistorie angezeigt wird. So sehen Sie immer die jüngsten Ereignisse.

So sieht unser virtuelles Terminal nach einigen Minuten aus.


4. Mögliche Probleme

Das in dem Artikel Testing Visualization: Functionality Enhancement beschriebene Problem gilt auch für den vHistory Indikator: Wenn der Indikator nicht im zweiten Unterfenster im Template durch den Tester verwendet wird, sollte der ordnungsgemäße Ablauf von verantwortlichen Funktionen für die Kontohistorie durch die explizit angegebene Unterfenster-Nummer bereitgestellt werden:

vHistory_win = WindowFind( "vHistory" );
    if ( IsTesting() ) { vHistory_win = 2; }


5. Fazit

Screenshots, die zeigen wie die Registerkarte Kontohistorie in verschiedenen unten angegebenen Situationen aussieht.