Schau, wie man Roboter kostenlos herunterladen kann
Finden Sie uns auf Twitter!
und werden Sie Mitglied unserer Fangruppe
Interessantes Skript?
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Hat Ihnen das Skript gefallen?
Bewerten Sie es im Terminal MetaTrader 5
Expert Advisors

Visualisierung von Optimierungsergebnissen in Echtzeit - Experte für den MetaTrader 5

Ansichten:
1195
Rating:
(48)
Veröffentlicht:
2016.06.13 12:19
Aktualisiert:
2016.11.22 07:34
MQL5 Freelance Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance

Der MetaTrader 5 Strategy Tester erlaubt statistische Parameter eines Handelssystems nach jedem Testlauf zu ermitteln.

Statistische Parameter können durch die TesterStatistics() Funktion abgefragt werden, die innerhalb der OnTester() und OnDeinit() Funktionen aufgerufen wird.

Mit der Einführung von Funktionen zum Arbgeiten mit Optimierungsergebnissen (FrameFirst(), FrameFilter(), FrameNext(), FrameInputs() und FrameAdd()) können Trader nun eine visuelle Optimierung durchführen. Die notwendigen Daten können direkt während einer Expert Advisor Optimierung oder der Lösung eines mathematischen Problems verarbeitet werden.

Wir werden die Details des Beispiels für die Visualisierung von Expert Advisor Testergebnissen während der Optimierung - wie im Artikel "Visualsierung einer Strategie im MetaTrader 5 Tester" beschrieben - untersuchen.


1. Visualisierung dre Kapitalkurvendynamik während der Optimierung

1.1. Herunterladen von Dateien

Der Moving Averages_With_Frames.mq5 Expert Advisor sollte in den Ordner terminal_data_folder\MQL5\Experts kopiert werden.

Die folgenden Dateien werden für die Arbeit des Expert Advisor verwendet:
  1. FrameGenerator.mqh - CFrameGenerator Klasse für Anzeige der Optimierungsergebnisse;
  2. SpecialChart.mqh - CSpecialChart Klasse für das zeichenn von verschiedenen Kaptial-Diagrammen;
  3. SimpleTable.mqh - CSimpleTable Klasse ist eine simple Tabelle mit zwei Spalten;
  4. ColorProgressBar.mqh - CСolorProgressBar Klasse ist ein Fortschrittsbalken mit zwei Farben.

Sie sollten in den Ornder terminal_data_folder\MQL5\Include kopiert werden.

Code Base Programme können automatisch mit dem MetaTrader 5 Terminal heruntergeladen werden (CodeBase Tab des "Toolbox" Fensters). Um das zu erreichen, wählen Sie "Download". Alle Codes werden heruntergeladen und in ihre Ordner kopiert.

Abb. 1. Herunterladen von CodeBase-Programmen mittels MetaTrader 5 Terminal

Abb. 1. Herunterladen von CodeBase-Programmen mittels MetaTrader 5 Terminal


1.2. Testen des Expert Advisor

Moving Averages_With_Frames.mq5 Expert Advisor sollte im Strategy Tester aufgerufen werden.

Testeinstellungen:

Moving Averages_With_Frames.mq5 Testeinstellungen

Abb. 2. Moving Averages_With_Frames.mq5 Testeinstellungen

Optimierungsoptionen:

Moving Averages_With_Frames.mq5 Optimierungsparameter

Abb.3. Moving Averages_With_Frames.mq5 Testeinstellungen


Während der Optimierung zeigt der Expert Advisor die Kaptialkruvendynamik und statistische Daten des Optimierungslaufes:

Abb. 4. Moving Averages_With_Frames.mq5 Optimierung

Abb. 4. Moving Averages_With_Frames.mq5 Optimierung

Optimierungsprozess:




1.3. Das Expert Advisor Bedienungsprinzip

Der Moving Averages_With_Frames.mq5 Expert Advisor wird erstellt basierend auf dem Moving Averages.mq5 der im Standard MetaTrader 5 Terminal package (MQL5\Experts\Examples\Moving Average) enthalten ist.

Der folgende Code wurde hinzugefügt zur Visualisierung der Ergebnisse:
//--- Verbindung des Codes für die Arbeit mit Optimierungsergebnissen
#include <FrameGenerator.mqh>
//--- Frames Generator
CFrameGenerator fg;
//+------------------------------------------------------------------+
//| Tester Funktion                                                  |
//+------------------------------------------------------------------+
double OnTester()
  {
//--- fügen Sie  Optimierungskriterien Berechnungsfunktion hier ein
   double TesterCritetia=MathAbs(TesterStatistics(STAT_SHARPE_RATIO)*TesterStatistics(STAT_PROFIT));
   TesterCritetia=TesterStatistics(STAT_PROFIT)>0?TesterCritetia:(-TesterCritetia);
//--- Aufruf nach jedem Test und Übermittlung der Optimierungskriterien als Parameter
   fg.OnTester(TesterCritetia);
//---
   return(TesterCritetia);
  }
//+------------------------------------------------------------------+
//| TesterInit Funktion                                              |
//+------------------------------------------------------------------+
void OnTesterInit()
  {
//--- Vorberietung des Charts für Anzeige von verschiedenen Kapitalkurven
   fg.OnTesterInit(3); // Parameter stellt die Anzahl der Kapitallinien im Chart ein
  }
//+------------------------------------------------------------------+
//| TesterPass Funktion                                              |
//+------------------------------------------------------------------+
void OnTesterPass()
  {
//--- Behandlung der erhaltenen Testergebnisse und Anzeige der Graphik
   fg.OnTesterPass();
  }
//+------------------------------------------------------------------+
//| TesterDeinit Funktion                                            |
//+------------------------------------------------------------------+
void OnTesterDeinit()
  {
//--- Optimierungsende
   fg.OnTesterDeinit();
  }
//+------------------------------------------------------------------+
//|  Chart Event Handling                                            |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
  {
//--- führt Frame-Anzeige nach der Optimierung aus, wenn auf den Header geklickt wird
   fg.OnChartEvent(id,lparam,dparam,sparam,100); // 100 ist eine Pause in ms zwischen den Aufzeichnungen
  }
//+------------------------------------------------------------------+

Dieser Code kann in jedem Expert Advisor ähnlich verwendet werden.

CFrameGenerator Klasse wird für die Arbeit mit Optimierungsergebnissen verwendet. Die Klasse enthält Methoden für das Handling von Strategy Tester Events (OnTester(), OnTesterInit(), OnTesterPass(), OnTesterDeinit()) und die Methode für Chartevents (OnChartEvent()). Verwendete graphische Objekte werden in der OnTesterInit() Methode der CFrameGenerator Klasse vorbereitet.

OnTester() Methode der CFrameGenerator Klasse wird von einem Testagent nach jedem Testdurchlauf aufgerufen. Diese Methode bietet Berechnung der Kapitalkurvendynamik basierend auf Handelsergebnissen. Der Chart der Kapitalkurve ist ein eindimensionales Array, dessen Länge von der Anzahl der ausgeführten Trades abhängt.

Dann wir die TesterStatistics() Funktion verwendet um statistische Daten (Nettogewinn, Profitfactor, Recovery Faktor, Anzahl von Trades, maximaler Drawdown in Prozent, benutzerdefinierte Optimierungskriterien) und ein Frame (Testdurchlauf Daten Array in unserem Fall) wird generiert, das mittels der FrameAdd() Funktion an das Terminal gesendet wird (vom Test-Agent).

Frames werden von der OnTesterPass() Methode der CFrameGenerator Klasse bezogen und gehandled. Die Frames Leseoperation wird durch die FrameNext() Funktion ausgeführt. Abfrage von Expert Advisor Eingabeparametern für die das Frame generiert wurde, wird von der FrameInputs() Funktion ausgeführt.

Nach dem Beziehn von Daten werden sie angezeigt und aktualisiert mittel der CSimpleTable, CColorProgressBar und CSpecialChart Klassenmethoden.

Es sollte beachteet weden, dass OnTester() Handling Funktionen im Test Agent ausgeführt werden, nachdem ein anderer akteuller Optimierungsdruchlauf beendet wurde. Das erlaubt die Verwendung von MQL5 Cloud Network verteilten Netzwerkkapazitäten um komplexe mathematische Berechnungen auszuführen. Um das zu erreichen, platzieren Sie den Berechnungsteil im OnTester Event Handler.

Das Beispiel für die Verwendung der Optimierung zur Beschleunigung von mathematischen Berechnungen (kontinuierliche Wavelet Transformation der Weierstrass Funktion) wird im Kapitel "Verwaltung von Optimierungsprozessen in Echtzeit und Transfer von großen Datenmengen von Agents zu MetaTrader 5" gezeigt.


2. Beispiel für die Arbeit mit CSimpleTable, CColorProgressBar und CSpecialChart Klassen

Die angehängten Test_SimpleTable.mq5 und Test_CSpecialChart.mq5 Skripten enthalten Beispiele für die Arbeit mit den CSimpleTable, CColorProgressBar und CSpecialChart Klassen. Sie sollten in den Ordner terminal_data_folder\MQL5\Scripts kopiert werden.

Abb. 5. Test_SimpleTable.mq5 Skript Ergebnisse

Abb. 5. Test_SimpleTable.mq5 Skript Ergebnisse

Abb. 6. Test_SimpleTable.mq5 Skript Ergebnisse

Abb. 6. Test_SimpleTable.mq5 Skript Ergebnisse


Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/914

EA_MARSI EA_MARSI

Der Expert Advisor basiert auf dem EMA_RSI_VA Indikator.

Chart_Period_Changer Chart_Period_Changer

Ein einfaches Skript zum Umschalten zwischen den Basis-Timeframes. Es erlaubt die Periode eines Charts mit Hilfe von Hotkeys umzustellen.

Beispiel für die Verwendung von IndicatorParameters() Beispiel für die Verwendung von IndicatorParameters()

Dieser Expert Advisor illustriert die Verwendung der IndicatorParameters() Funktion um Informationen über die Anzahl von Eingabeparametern, deren Typ und Wert zu beziehen.

Jolly Roger EA Version Jolly Roger EA Version

Inspiriert von Pirat's Expert Advisor welcher an der Automated Trading Championship 2011 teilnahm.