Schnellere Berechnungen mit dem MQL5 Cloud Network

MetaQuotes | 26 Januar, 2016


Multithread-Testing in MetaTrader 5

Die Liste der Vorteile der neuen Handelsplattform MetaTrader 5 ist lang und man kann behaupten, dass sie für technische Analysen und den Handel auf Finanzmärkten besser ist als andere Programme. Es gibt noch ein weiteres schlagendes Argument für die Plattform. Dieses letzte Argument ist der Strategietester im MetaTrader 5 Client Terminal. In diesem Beitrag beschreiben wir seine großartigen Funktionen und erklären, warum die Entwickler von MetaQuotes Software Corp. so stolz darauf sind.

Das Client Terminal der 5. Generation bietet nicht nur die neue leistungsstarke und schnelle MQL5-Sprache für die Programmierung von Handelsstrategien, sondern auch einen brandneuen Strategietester, der von Grund auf neu konzipiert wurde. Der Tester wird nicht nur zum Abrufen der Ergebnisse von Handelsstrategien genutzt, die mit historischen Daten getestet wurden, sondern ermöglicht auch ihre Optimierung, also das Finden der optimalen Parameter.

Die Strategieoptimierung besteht aus der mehrmaligen Durchführung einer Handelsstrategie über denselben historischen Zeitraum mit unterschiedlichen Parametern, von denen die Strategie abhängt. Dies ist eine Standardaufgabe von Massenberechnungen, die parallelisiert werden können, und, wie Sie sich wahrscheinlich vorstellen können, der Tester in MetaTrader 5 ist Multithread-fähig! Was das bedeutet, sehen wir uns nun anhand eines Beispiels für die Optimierung eines Expert Advisors aus dem Standardpaket an.


Testbedingungen

Zum oben aufgeführten Zweck nutzen wir einen Computer mit Intel Core i7 (8 Kerne, 3,07 GHz) und 12 GB Arbeitsspeicher, Windows 7 64-bit und MetaTrader 5 Build 1075.

Der Expert Advisor Moving Average.mq5 aus dem Standardpaket wird mit den folgenden Einstellungen getestet:

Zu optimierende Parameter:

Zu optimierende Parameter


Optimierung mit lokalen Agenten

Führen wir die Optimierung zunächst auf lokalen Agenten durch. Passend zur Anzahl von Kernen haben wir acht Testagenten. Deaktivieren Sie die Verwendung von Remote-Agenten aus dem lokalen Netzwerk und die Agenten des MQL5 Cloud Network:

Aktivieren/Deaktivieren von Gruppen von Agenten

Öffnen Sie am Ende der Optimierung das Logbuch: 14.040 Durchläufe auf 8 lokalen Agenten haben 1 Stunde, 3 Minuten und 44 Sekunden gedauert.

2015.02.05 16:44:38	Statistics	locals 14040 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
2015.02.05 16:44:38	Statistics	optimization passed in 1 hours 03 minutes 46 seconds
2015.02.05 16:44:38	Tester	optimization finished, total passes 14040


Optimierung mithilfe einer lokalen Farm von Agenten

Wie können mehrere Aufgaben parallel ausgeführt werden? Natürlich können Sie einen Prozessor mit vielen Kernen kaufen. Allerdings können Sie dadurch die Zahl gleichzeitig ausgeführter Aufgaben nicht erhöhen. Der Strategietester löst dieses Problem. Sie können Ihre eigene Farm von Verarbeitungsagenten in Ihrem lokalen Netzwerk erstellen.


Wie erstelle ich eine Farm von Agenten?

Agenten sollten auf jedem Computer im lokalen Netzwerk installiert werden. Wenn MetaTrader 5 bereits auf einem Computer installiert ist, öffnen Sie den Testagenten-Manager mithilfe des entsprechenden Befehls aus dem Menü "Tools".

Strategietester – Agenten-Manager

Andernfalls laden Sie die spezielle Anwendung für die Verwaltung von Agenten, MetaTrader 5 Strategy Tester Agent, herunter und befolgen Sie den einfachen Installationsprozess.

MetaTrader 5 Strategy Tester Agent

Öffnen Sie im Manager die Registerkarte Agents:

  1. Wählen Sie die Anzahl der zu installierenden Agenten. Die Agenten werden auf Basis der Anzahl logischer Kerne installiert. 
  2. Geben Sie das Passwort ein, das für die Verbindung dieser Agenten verwendet werden soll.
  3. Wählen Sie einen Port-Bereich für die Verbindung.
  4. Klicken Sie auf Add (Hinzufügen).

Das ist alles. Die Agenten stehen für die Verwendung auf anderen Computern im lokalen Netzwerk zur Verfügung.


Wie kann ich meine Agenten verbinden?

Die Agenten werden mit wenigen Mausklicks verbunden. Öffnen Sie den Strategietester im Terminal und wählen Sie die Registerkarte "Agents". Wählen Sie "Local Network Farm" und klicken Sie im Kontextmenü auf "Add".

Hinzufügen von Remote-Agenten

Am schnellsten und einfachsten ist es, das lokale Netzwerk automatisch nach einem Bereich von IP-Adressen und Ports zu durchsuchen. Wählen Sie sie aus und geben Sie das Passwort für die Verbindung der Agenten ein, das Sie während der Installation festgelegt haben.

Suche nach Agenten im lokalen Netzwerk

Klicken Sie auf "Fertigstellen" und alle gefundenen Agenten stehen für das Testing bereit.


Geschwindigkeitstest

Wie haben 8 lokale Agenten um 20 Remote-Agenten ergänzt. Somit verfügen wir insgesamt über 28 Agenten. Das ist 3,5 Mal so viel wie ursprünglich. Optimieren wir unseren Expert Advisor und sehen wir, wie schnell die Optimierung durchläuft.

2015.02.05 15:14:44    Statistics    locals 3412 tasks (24%), remote 10628 tasks (75%), cloud 0 tasks (0%)
2015.02.05 15:14:44    Statistics    optimization passed in 15 minutes 47 seconds
2015.02.05 15:14:44    Tester    optimization finished, total passes 14040

Drei Viertel der Aufgaben wurden von Remote-Agenten ausgeführt. Die Optimierungszeit wurde auf 15 Minuten und 47 Sekunden reduziert – fast 4 Mal schneller als ursprünglich.

Das ist eine beeindruckende Beschleunigung, doch diese Lösung steht nicht jedermann zur Verfügung. Aber keine Sorge. Es gibt eine Möglichkeit, den EA noch schneller zu optimieren. Lassen Sie uns Agenten aus dem MQL5 Cloud Network ausprobieren!


Optimierung mithilfe des MQL5 Cloud Network

Diesmal nutzen wir anstatt lokaler Agenten Agenten aus dem MQL5 Cloud Network. Klicken Sie auf den Button "Start" und beobachten Sie den Fortschritt der Optimierung. Das Video zeigt den Fortschritt in Echtzeit.


Dank MQL5 Cloud Network ist der Optimierungsprozess 150 Mal schneller!

Während der Optimierung verteilt jeder Knoten des MQL5 Cloud Network Aufgaben (einzelne Durchläufe) an verfügbare Agenten. Die Optimierung dauerte nur 26 Sekunden – eine 147-fache (!) Beschleunigung. In der Praxis müssen Händler teilweise hunderttausende Optimierungsläufe in angemessener Frist durchführen. Mit dem Tester in MetaTrader 5 brauchen Sie nur eine Stunde für Berechnungen im MQL5 Cloud Network, mit denen Sie ohne das Netzwerk mehrere Tage verbringen würden. Nun haben Sie mit einem Mausklick Zugriff auf tausende von Kernen, um eine Aufgabe zu lösen. Und die Lösung steht allen zur Verfügung! Doch wie funktioniert sie?


MQL5 Cloud Network vereint tausende Computer

Das MQL5 Cloud Network besteht aus Knoten – dedizierten Servern, mit denen sich Testagenten zum Durchführen von Aufgaben verbinden. Diese Knoten sind Manager (Pooler), die Agenten aus aller Welt in größeren Pools auf Basis ihrer geographischen Lage sammeln. Im Ruhemodus sendet jeder Agent eine Benachrichtigung darüber, dass er bereit ist, eine Aufgabe zu übernehmen. Das Intervall zwischen solchen Benachrichtigungen hängt von der aktuellen Auslastung des MQL5 Cloud Network ab.

Jeder Knoten des Netzwerks wird von MetaTrader 5 gleichzeitig als Zugriffspunkt auf das MQL5 Cloud Network genutzt. Ein Terminal verbindet sich mithilfe der MQL5.com-Kontodaten mit ihnen. Die Liste der Server des MQL5 Cloud Network und die Anzahl der Cloud-Agenten, die darüber verfügbar sind, finden Sie im Terminal, Tester-Fenster, Registerkarte "Agents".

Ein Agent gilt als frei, also im Ruhezustand, wenn er nicht mit der Durchführung seiner eigenen lokalen Aufgaben von einem lokalen Computer oder lokalen Netzwerk beschäftigt ist. Wenn ein Agent beschäftigt ist, versucht er nicht, Aufgaben aus dem MQL5 Cloud Network zu übernehmen. Einige Minuten nach der Fertigstellung der lokalen Berechnungen verbindet sich der Agent mit dem nächsten Knoten des MQL5 Cloud Network und bietet seine Dienste an. Somit arbeiten Ihre Testagenten nur dann im Netzwerk, wenn Sie sie gerade nicht brauchen. Natürlich geschieht die Arbeit der Agenten im Netzwerk in Übereinstimmung mit dem festgelegten Zeitplan.

Dank der einfachen Installation und den wenigen erforderlichen Einstellungen des MetaTrader 5 Agents Manager sind tausende von Testagenten jederzeit im Netzwerk verfügbar. Die allgemeinen Statistiken der Agenten des MQL5 Cloud Network und abgeschlossenen Aufgaben stehen auf der Hauptseite des Projekts unter https://cloud.mql5.com zur Verfügung.


Verteiltes Rechnen mit Agenten des MQL5 Cloud Network

Wie bei der herkömmlichen Optimierung müssen Sie alle Testoptionen und die Eingabeparameter des Expert Advisors festlegen. Denken Sie vorher daran, Ihre Login-Daten für MQL5.community in den Einstellungen des Terminals anzugeben und die Nutzung des MQL5 Cloud Network zu genehmigen. Die vier erforderlichen Schritte sind in der Abbildung illustriert.

Optimierung mithilfe des MQL5 Cloud Network

Klicken Sie auf den Button "Start", um den Optimierungsprozess zu starten. Das Terminal bereitet eine Aufgabe für die Testagenten vor, die Folgendes beinhaltet:

Das MetaTrader-5-Terminal kommuniziert mit den Knoten des MQL5 Cloud Network und weist jedem Knoten ein separates Paket von Aufgaben für die Durchführung bestimmter Durchläufe zu. Dabei ist jeder Knoten im Grunde genommen ein Proxy-Server, da er eine Aufgabe und ein Paket von Durchläufen erhält und anschließend beginnt, diese Aufgaben an mit ihm verbundene Agenten zu verteilen. In diesem Fall werden die Daten von Expert Advisors, Indikatoren, Bibliotheken und Datendateien nicht auf den Festplattenlaufwerken der Server des MQL5 Cloud Network gespeichert.

Außerdem werden EX5-Dateien aus Vertraulichkeitsgründen nicht auf den Festplattenlaufwerken von Cloud-Agenten gespeichert. Datendateien werden auf einer Festplatte gespeichert, doch die Daten werden nach der Optimierung gelöscht.

Das ist schon das ganze Verfahren der Kommunikation zwischen Ihrem Client Terminal und dem MQL5 Cloud Network – es sendet Aufgabenpakete an das Netzwerk und wartet auf die Ergebnisse.


Synchronisierung in der Cloud und Verteilung historischer Daten an Agenten

Jeder Knoten des MQL5 Cloud Network behält die Historie erforderlicher Symbole und sendet sie auf Anfrage an die verbundenen Agenten. Verfügt der Knoten über keine Historie des Symbols XYZ von Broker ABC, lädt er die erforderlichen historischen Daten automatisch von Ihrem Terminal herunter. Deshalb sollte Ihr Terminal bereit sein, eine entsprechende Historie zur Verfügung zu stellen.

Wir empfehlen, dass Sie einen einzelnen Vorabtest einer Strategie auf Ihrem Computer durchführen, bevor Sie ihn an das MQL5 Cloud Network senden. Diese Herangehensweise stellt Downloads und Synchronisierung aller erforderlichen historischen Daten von einem Handelsserver bereit.

Grundsätzlich sind auf einem modernen Computer 4 bis 8 Agenten installiert, die historischen Daten werden allerdings in einem einzelnen Ordner im Installationsverzeichnis von MQL5 Strategy Tester Agent gespeichert. Alle durch einen MQL5 Strategy Tester-Manager installierten Cloud-Agenten erhalten die historischen Daten aus diesem Ordner. Wenn 8 Agenten installiert und alle für das MQL5 Cloud Network verfügbar sind, werden die erforderlichen historischen Daten nur einmal heruntergeladen. Damit sparen Sie Traffic und Festplattenspeicher. Zusätzlich ist es eine bequeme Art, um die Synchronisierung zwischen Cloud-Agenten und Knoten des verteilten Rechennetzwerks durchzuführen.

Somit werden allen Agenten, die die Optimierung einer Handelsstrategie in einem bestimmten Zeitintervall und für ein bestimmtes Symbol durchführen, die gleichen historischen Daten und die gleiche Marktumgebung zur Verfügung gestellt.


Warmlaufen

Wie wird die Optimierung auf einem lokalen Computer ausgeführt? Falls Sie 8 Prozessorkerne haben, stehen Ihnen normalerweise 8 lokale Standardagenten zur Verfügung. Wenn Sie auf "Start" klicken, werden Aufgaben an lokale Agenten verteilt, die erforderlichen historischen Daten heruntergeladen (falls erforderlich) und der Prozess beginnt. In diesem Fall beginnt die Optimierung praktisch ohne Verzögerung. Doch wenn Sie Aufgaben an das MQL5 Cloud Network verteilen, ändert sich dieses Verfahren ein wenig.

Cloud-Agenten sind nicht permanent mit den Netzwerkmanagern verbunden, da dies technisch nicht gerechtfertigt und zu kostspielig wäre. Stattdessen senden die Agenten regelmäßig Anfragen an die Server des MQL5 Cloud Network, ob es neue Aufgaben für sie gibt. Dies geschieht oft genug, um eine schnelle Mobilisierung der erforderlichen Menge an Agenten zur gewährleisten, und selten genug, um das Netzwerk nicht mit solchen Meldungen zu überlasten. Wenn Sie also die Optimierung ausführen, können Sie die wachsende Zahl der Agenten beobachten, die sich mit der Ausführung Ihrer Aufgaben verbinden. Sie sehen in Echtzeit, wie Cloud-Agenten auf das MQL5 Cloud Network zugreifen und Aufgaben für bestimmte Durchläufe erhalten.

Falls es keine Aufgaben gibt, kontaktieren die Agenten die Manager ziemlich selten. Dieses Bild ändert sich, wenn ein Befehl zur Berechnung von tausenden (oder zehntausenden) von Aufgaben eingeht. Es lässt sich sagen, dass die Aktivität des MQL5 Cloud Network steigt und die Menge an Anfragen von Agenten nach neuen Aufgaben nach dem Abschluss der Aufgabe abnimmt. Und wenn beispielsweise nach dem Abschluss einer Aufgabe aus Europa ein Befehl für andere Aufgaben aus Asien eingeht, ist das Netzwerk für einen schnellen Start bereit. Dieses Verhalten des Netzwerks lässt sich als "Warmlaufen" bezeichnen.

Durchführen von Berechnungen mit dem MQL5 Cloud Network

Damit ist das MQL5 Cloud Network wieder bereit, neue Aufgaben anzunehmen, um sie in kürzester Zeit auszuführen.


Nutzen Sie das MQL5 Cloud Network!

Die Phrase "Zeit ist Geld" wird von Jahr zu Jahr relevanter und wir können es uns nicht leisten, etliche Stunden oder Tage auf wichtige Berechnungen zu warten. Während dieser Beitrag verfasst wird, sorgt das MQL5 Cloud Network für eine hundertfache Beschleunigung von Berechnungen. Mit seinem weiteren Wachstum kann der Zeitgewinn auf tausendfach oder noch mehr wachsen. Zusätzlich können Sie dank des verteilten Rechennetzwerks nicht nur Aufgaben zur Strategieoptimierung lösen,

sondern auch ein Programm in MQL5 entwickeln, das massive mathematische Berechnungen umsetzt und riesige Mengen an CPU-Ressourcen benötigt. Die MQL5-Sprache, in der Programme für das MetaTrader-5-Terminal geschrieben werden, ist sehr nahe an C++ und ermöglicht Ihnen die einfache Übertragung von Algorithmen, die in anderen Hochsprachen geschrieben sind.

Eine wichtige Funktion des Testers im MetaTrader-5-Terminal ist, dass schwierige mathematische Aufgaben zum Finden von Lösungen mit großen Sätzen von Eingabevariablen einfach unter Testagenten parallelisiert werden können. Und Sie müssen dafür keinen besonderen Code schreiben. Verbinden Sie sich einfach mit dem verteilten MQL5 Cloud Network!