Schneller Einstieg in MQL5

27 Januar 2016, 10:35
MetaQuotes Software Corp.
2
1 968

Wozu MQL5?

Es gibt viele Gründe, sich zum Erlernen der modernen Programmiersprache MQL5 für die Programmierung von Handelsstrategien zu entscheiden, und wir freuen uns über Ihre Wahl. Alte Programmierhasen können sich leicht in der Dokumentation zu der Sprache sowie in den hier vorliegenden Artikeln und Diensten orientieren. Aber wenn Sie die MetaTrader 5-Anwendung für Ausgabegeräte (das Client Terminal) gerade erst kennengelernt haben, kann im ersten Moment Vieles ungewohnt und unverständlich erscheinen.

Also, was nützt es Ihnen, sich in MQL5 auszukennen? Möglicherweise wollen Sie ja lernen, in einer modernen Sprache mit OOP-Unterstützung (Objektorientierte Programmierung) zu programmieren. Nach MQL5 können Sie sich bei Bedarf leicht andere anspruchsvolle Sprachen wie C++, C#, Java u. ä. aneignen. Das heißt natürlich nicht, dass sie einander sehr ähnlich wären, aber ihre wesentlichen Grundlagen haben viel gemeinsam.

Vielleicht beherrschen Sie aber auch bereits eine dieser Sprachen und möchten ein eigenes automatisches Handels- oder Informationsanalysesystem für den Einsatz auf den Finanzmärkten entwickeln. In diesem Fall wird Ihnen die Aneignung der eigens zu diesem Zweck entwickelten Fachsprache MQL5 keine Mühe bereiten.

Oder Sie kennen bereits MQL4, eine Sprache, auf der zahlreiche automatische Handelssysteme und Indikatoren für die beliebte Handelsplattform MetaTrader 4 beruhen? Dann dürfte es Sie kaum Mühe kosten, das gesamte Potenzial der neuen Sprache MQL5 und alle Vorzüge der neuen Entwicklungsumgebung MetaEditor 5 zu erkennen.

Die Gründe für das Erlernen von MQL5 mögen vielfältig sein, wir möchten Ihnen in diesem Beitrag einige Hinweise geben, wie Sie anfangen können und worauf Sie achten sollten. Also, fangen wir an!

Schneller Einstieg in MQL5

Möglichkeiten und Besonderheiten der Sprache

Die Sprache MetaQuotes Language 5 (MQL5) wurde von der MetaQuotes Software Corp. auf der Grundlage langjähriger Erfahrungen in der Erstellung von Informations- und Handelsplattformen mehrerer Generationen entwickelt. Die Hauptvorteile sind:

  • Die Syntax kommt derjenigen von C++ so nah wie möglich. Dadurch können Programme aus anderen Sprachen leicht übersetzt werden.
  • Die Verarbeitungsgeschwindigkeit von MQL5-Programmen steht der von C++ praktisch in nichts nach.
  • Umfangreiche integrierte Möglichkeiten zum Anlegen technischer Indikatoren, grafischer Objekte und eigener Benutzeroberflächen.
  • Integrierte OpenCL-Unterstützung.
  • Eine umfangreiche Standardbibliothek und zahlreiche Beispiele in der Codebasis.
  • Die Möglichkeit zur parallelen Ausführung mathematischer Optimierungsaufgaben für eine nahezu unbegrenzte Zahl an Strängen ohne die Notwendigkeit der Programmierung eines besonderen Codes.

Für Neulinge in Sachen Programmierung

Wenn Sie über keinerlei Erfahrung in der Programmierung komplexer Sprachen haben, können Sie ein beliebiges Lehrbuch zu C++ als Muster zum Erlernen der Grundlagen von MQL5 (Syntax, Datenarten, Variablen, Operatoren, Funktionen, OOP usw.) verwenden. Die Entwickler von MQL5 haben versucht, die größtmögliche Übereinstimmung mit der weit verbreiteten Sprache C++ zu gewährleisten.

Die Erfahrung lehrt, dass man MQL5 ohne Vorkenntnisse in wenigen Monaten lernen kann, wobei einige es sogar schaffen, sich in weniger als einem Jahr richtig gut darin auszukennen. Lesen Sie den Beitrag: Unbegrenzte Möglichkeiten mit MetaTrader 5 und MQL5, möglicherweise inspiriert er Sie zu etwas Vergleichbarem.

Für Kenner von MQL4

Vielleicht finden Sie den neuen Ansatz zum Anlegen von Indikatoren anfangs gewöhnungsbedürftig. Viele der neuen Funktionen zur Verarbeitung von Ereignissen werden Sie in Erstaunen versetzen und die C-artige Syntax sowie die neuen Datenarten mögen Ihnen ungewöhnlich erscheinen.

Aber nach einer Weile werden Sie die Vorzüge von MQL5 gegenüber MQL4 zu schätzen wissen Und, was halten Sie von den umfangreichen Möglichkeiten zur Arbeit mit Diagrammen und grafischen Objekten sowie der Möglichkeit, jede Abbildung quasi auf eine Leinwand zu zeichnen? Wenn Sie mit MQL5 vertraut sind, können Sie das alles selbst beurteilen.

Für professionelle Programmierer

Wenn Sie in einer der aktuellen Sprachen programmieren, sollten Sie MQL5 in kürzester Zeit problemlos beherrschen. Die OOP und das Ereignismodell kennen Sie bereits, jetzt müssen Sie sich nur noch die eigens für den algorithmengestützten Handel entwickelten Sonderfunktionen vertraut machen, als da wären:

Es gibt auch einige kleine Unterschiede in der Syntax, die der sicheren Codeprogrammierung und der optimalen Zeit für die Ausführung des Programms geschuldet sind:

  • Keine Anzeigerarithmetik. Objektanzeiger in MQL5 sind im Grunde Deskriptoren
  • Keine Ausnahmen
  • Datenfelder (Arrays) aller Art werden stets verknüpft (verlinkt)
  • Datenfelder (Arrays) dürfen nicht mehr als vierdimensional sein
  • Aus Funktionen können keine Datenfelder und Objekte ausgegeben werden sondern lediglich Objektanzeiger
  • Kein „goto“-Operator.

Wenn Sie noch keine Erfahrungen mit dem Handel gemacht haben, können sich bei der Programmierung des automatischen Handelssystems einige Fragen zu Handelsbegriffen und der Arbeit mit dem Strategieprüfprogramm ergeben. Für diesen Fall finden Sie in dem Bereich Artikel viele hilfreiche Beiträge wie:

Somit ist die Programmiersprache MQL5 für einen professionellen Programmierer ein Kinderspiel. Er muss sich vor allem mit dem Handel und den damit verbundenen Begriffen vertraut machen.


Einrichtung der MetaTrader 5-Anwendung auf dem Ausgabegerät

Das Installationsprogramm für die MetaTrader 5-Anwendung kann über die folgende Verknüpfung von der Webseite heruntergeladen werden: https://download.mql5.com/cdn/web/metaquotes.software.corp/mt5/mt5setup.exe. Die Installation selbst ist unproblematisch und erfordert lediglich ein paar Mausklicks. Wir empfehlen jedoch, die Anwendung nicht auf dem Laufwerk zu installieren, auf dem das Windows-Betriebssystem liegt. Das kommt daher, dass Microsoft ab Windows Vista mit dem Einsatz eines neuen Systems zur Überwachung der Benutzerkonten (UAC) begonnen hat.

Wenn Sie also kein erfahrener Systemadministrator sind oder nicht gerne in den zahlreichen verborgenen Verzeichnisse stöbern, geben Sie für die Installation der Anwendung einen von den „Program Files“ möglichst weit entfernten Ordner an, damit die Daten der Anwendung in demselben Verzeichnis gespeichert werden wie die MetaTrader 5-Anwendung selbst. Installieren Sie die Anwendung beispielsweise auf D:\, wenn sich das Betriebssystem auf C:\ befindet.

Ausführlichere Informationen zu den unterschiedlichen Funktionsweisen der MetaTrader 5-Anwendung je nach Installationspfad bietet der Abschnitt Erste Schritte → Anwendung starten in dem mitinstallierten Benutzerhandbuch.


Indikatoren, Skripte und Expert-Systeme

In MQL5 gibt es drei Hauptarten von Programmen, von denen jede für die Erfüllung ihres jeweiligen Aufgabenbereichs optimiert ist:

  • Ein Skript ist ein Programm zur einmaligen Ausführung in einem Kursdiagramm. Sobald die Ausführung das Ende der vorgegebenen Ereignisverarbeitungsfunktion OnStart() erreicht hat, ist das Skript abgeschlossen und wird aus dem Diagramm entfernt. Die Funktion OnStart() bezieht sich ausschließlich auf Skripte, und hier ist der einzige Startpunkt, an dem sich der ausführbare Programmcode befinden kann. Ein Skript kann eine Endlosschleife mit kleinen Unterbrechungen zwischen den Iterationen enthalten und somit bis zu seiner zwangsweisen Beendigung in einem Diagramm aktiv sein. In jedem Diagramm kann jedoch jeweils nur ein Skript ausgeführt werden.

  • Ein Indikator ist ein Programm zur Berechnung der Wertedatenfelder auf der Grundlage der Kursdaten. Die Datenfelder (Arrays) zur Speicherung der Indikatorwerte werden als Indikatorpuffer bezeichnet. Die in einem Indikator zulässige Anzahl von Puffern ist praktisch unbegrenzt.
    In jedem Diagramm können gleichzeitig mehrere Indikatoren, darunter auch mehrere Kopien eines Indikators, vorhanden sein und ausgeführt werden. Der Zugriff auf die Funktionen für die Arbeit mit Indikatoreigenschaften ist nur aus den Indikatoren möglich. Aus Skripten oder Expert-Systemen können sie nicht aufgerufen werden. Ein Programm gilt als Indikator, wenn er die Verarbeitungsfunktion OnCalculate() aufweist. Die Laufzeit eines Indikators ist unbegrenzt. Er wird solange ausgeführt, bis er aus dem Diagramm entfernt wird. Die Funktion OnCalculate() kann nur in Indikatoren aufgerufen werden.

  • Expert-Systeme oder Expert Advisors sind eine weitere Art von Programmen mit unbegrenzter Laufzeit. Sie können ebenfalls solange wie nötig in einem Diagramm ausgeführt werden. Üblicherweise verfügen diese Systeme über die erfolgt die Ereignisverarbeitungsfunktion OnTick(), die eindeutig darauf hinweist, dass wir es mit dem Quellcode eines Expert-Systems zu tun haben. In einem Diagramm kann jeweils nur ein Expert-System vorhanden sein.
    Der vornehmliche Zweck von Expert-Systemen besteht in der Automatisierung von Handelssystemen. Sie können jedoch auch reine Hilfsfunktionen erfüllen, etwa die Erstellung der grafischen Benutzeroberfläche für den manuellen Handel und/oder die Analyse und Abbildung der aktuellen Marktlage usw.

Beispiele für Indikatoren in MetaTrader 5

Für das Studium der Grundlagen von MQL5 ist es am besten, mit der Programmierung von Skripten anzufangen, in die man Beispiele aus der MQL5-Dokumentation einfügen kann, oder Beispielskripte aus der Codebasis zu benutzen. Anschließend kann man mit der Arbeit mit grafischen Objekten beginnen und in einem Demokonto Erfahrungen mit Handelsoperationen sammeln.

Als nächsten Schritt empfehlen wir die Programmierung eigener benutzerdefinierter Indikatoren sowie die Analyse von Beispielen aus der Codebasis und den Artikeln. Sobald Sie die Indikatoren beherrschen, verfügen Sie über das nötige Rüstzeug, um die Ereignisverarbeitungsfunktionen zu verstehen.

Das abschließende Ziel ist die Erstellung einfacher Expert-Systeme und ihre Prüfung anhand der Verlaufsdaten mithilfe des Strategieprüfprogramms von MetaTrader 5. In den Bereichen Expert-Systeme, Prüfprogramm und Handelssysteme werden diesem Thema zahlreiche Beiträge gewidmet.

Und schließlich wollen wir auch die interessanteste Möglichkeit bei der Programmierung eines automatischen Handelssystems in MQL5 nicht unerwähnt lassen, die Entwicklung eigener Module zur automatischen Erstellung von Expert-Systemen mithilfe des MQL5-Assistenten. Auch zu diesem Thema wurden viele Beiträge verfasst, und in der Codebasis sind zahlreiche fertige Module für MQL5-Assistenten verfügbar.


Das Ereignismodell

Ein MQL5-Programm wird nur beim Eintreten bestimmter Ereignisse aktiv. Dabei kann es sich um das Herunterladen und die Bereitstellung eines MQL5-Programms handeln, um das Eintreffen eines neuen Ticks (einer Kursänderung bei einem Kürzel), eine Änderung der Diagrammeigenschaften, die Änderung eines Kürzels oder eines Zeitraums in einem Diagramm, die Auslösung einer Pending Order usf.

Auf diese Weise ermöglicht das Ereignismodell das Schreiben interaktiver Programme in der einfachsten Form. Hier eröffnen sich umfangreiche Möglichkeiten zur Erstellung eigener grafischer Bedienfelder und einer angenehmen Benutzeroberfläche nach den Wünschen des jeweiligen Händlers. Die integrierten Funktionen zur Arbeit mit Diagrammen ermöglichen die Erstellung sowohl hinsichtlich der Leistung des Programms als auch bezüglich ihrer Gestaltung vollwertiger Anwendungen.

Ein einfaches Beispiel für die Ereignisverarbeitung in einem MQL5-Programm


Die Möglichkeit, mithilfe der Funktion EventChartCustom() für alle in MetaTrader 5 aktiven Diagramme eigene Ereignisse anzulegen, ermöglicht die Erstellung komplexer interaktiver Systeme. Die Erfassung und Verarbeitung der Ereignisse erfolgt durch die Funktion OnChartEvent(). Zur Veranschaulichung dieser Möglichkeiten empfehlen wir den Artikel Der Handelsablauf anhand der getätigten Abschlüsse und das Beispiel für die Funktion EventChartCustom().


Fehlerbehebung und Hilfe

Die MetaTrader 5-Anwendung und das Bearbeitungsprogramm MetaEditor 5 verfügen über eine umfassende integrierte Hilfe, die mit der Funktionstaste F1 aufgerufen wird. Alle Dokumente werden per LiveUpdate automatisch aktualisiert. Außerdem steht diese Hilfe auf der Webseite der Handelsplattform MetaTrader 5 auch online in verschiedenen Sprachen zur Verfügung:

Die wichtigste Lernquelle ist die Dokumentation zu MQL5, die nicht nur online unter der URL https://www.mql5.com/de/docs zu finden ist, sondern dort auch in den Formaten CHM und PDF und in mehreren Sprachen heruntergeladen werden kann.

Die Anwendung und das Bearbeitungsprogramm MetaEditor 5 sind eng miteinander verzahnt. Mit der Funktionstaste F4 kann man zwischen beiden hin und her springen. Das ist insbesondere bei der Codekorrektur sehr bequem, vor allem wenn Sie mehrere Programminstanzen geöffnet haben.

Die Fehlerbehebung für jedes MQL5-Programm kann in der Anwendung durch Betätigung der Funktionstaste F5 unmittelbar aus dem Bearbeitungsprogramm ausgeführt werden. Dabei wird das Diagramm, auf dem Ihr Programm (ein Skript, Indikator oder Expert-System) ausgeführt werden soll, automatisch geöffnet. Bei der Fehlerbehebung in Skripten müssen Sie daran denken, dass sich das Skript nach Abschluss der Arbeit der Funktion OnStart() selbsttätig entfernt. Deshalb wird der Fehlerbehebungsvorgang automatisch beendet und das „behandelte“ Diagramm geschlossen, ohne dass Ihre in dem Skript angelegten grafischen Elemente gespeichert werden. Legen Sie deshalb ganz hinten im Skript vor dem Operator return() einen Halte- oder Sleep()-Punkt mit einem sehr hohen Wert fest.

Der Fehlerbehebungsmodus ist sowohl zu Ermittlung von Fehlern in Ihrem Programm als auch für das Studieren und Erlernen von MQL5 unverzichtbar. Dazu können Sie nicht nur Haltepunkte in Ihrem Code einrichten, es gibt auch noch die Hilfsfunktion DebugBreak(), die nur anspricht, wenn das Programm im Fehlerbehebungsmodus läuft.

Und nicht zu vergessen ist die leistungsfähige in MetaTrader 5 integrierte Suchmaschine, mit deren Hilfe die benötigten Ergebnisse nicht nur in der Quelldatei oder dem Quellordner gesucht werden können sondern auch in den Artikeln, im Forum und in der Codebasis auf der Webseite der MQL5.Community.

Einstellung der Suchparameter in MetaEditor 5

Die erhaltenen Ergebnisse können anhand der erforderlichen Kategorien gefiltert werden. So bietet die Entwicklungsumgebung nicht nur über eine integrierte Hilfe zu dem Bearbeitungsprogramm und zu MQL5 sondern auch die Möglichkeit, hilfreiche Materialien auf der Webseite mql5.com zu finden.


Codeprofilierung

Die Entwicklungsumgebung von MetaEditor 5 bietet Entwicklern ein Gesamtpaket an Hilfsmitteln, das die Programmierung und Prüfung von Code erleichtert. Was fehlt dem Programmierer noch zu seinem Glück, wenn er die Fehlerbehebungsfunktion hat? Die Codeprofilierung natürlich. Bei der Profilierung handelt es sich um ein bequemes Verfahren zum Abrufen der Leistungseigenschaften eines Programms wie der Ausführungszeit seiner einzelnen Bestandteile (Funktionen und Zeilen).

Mithilfe der Profilierung erkennen Sie auch sofort etwaige Stellen in Ihrem Programms, an denen die meiste Zeit verloren geht. Sie können die am Code vorgenommenen Korrekturen unter dem Gesichtspunkt der Ausführungsgeschwindigkeit beurteilen und gegebenenfalls geeignetere Algorithmen suchen. Professionelle Entwickler wissen, welche Möglichkeiten ihnen das eröffnet, während es Neueinsteiger ihre Programme mit anderen Augen sehen lässt.  

Codeprofilierung in MetaTrader 5

Die Bildschirmaufnahme oben zeigt die Profilierung des im Forum vorgestellten Codes (s. https://www.mql5.com/en/forum/7144). Probieren Sie die Codeprofilierung aus, indem Sie den Code aus dem erwähnten Beitrag im Forum herunterladen.


MQL5 Storage: Zentrale Speicherung und Verwaltung eigener Entwicklungen

Eine weitere interessante und angenehme Hilfe bei der MQL5-Programmierung ist der eigene Speicherplatz für MQL5-Quellcodes. Wenn Sie ihn in Anspruch nehmen, haben Sie über das Bearbeitungsprogramm MetaEditor 5 stets und von überall Zugriff auf Ihre Dateien. Es können nicht nur MQL5-Programme gespeichert werden sondern auch Quellen in C++ (cpp, h) sowie Dateien in den Formaten BMP und WAV.

Ablegen einer Datei in MQL5 Storage

Sie können Ihre Codes hinzufügen und herausziehen, Änderungen rückgängig machen, kurz: Sie können alles tun, was moderne Unterversionssysteme (SVN) zu bieten haben. Außer mit dem MQL5 Storage unmittelbar aus dem MetaEditor 5 zu arbeiten, können Sie beliebige externe Instanzen verwenden, die Subversion 1.7 unterstützen, etwa Tortoise SVN.


Die Welt der Indikatoren, Diagramme und grafischen Objekte

Bei der Entwicklung von MetaTrader 5 wurden alle bei der Entwicklung seiner Vorgänger gemachten Erfahrungen berücksichtigt. Vor diesem Hintergrund können einige Nuancen auf den ersten Blick unerwartet erscheinen. So wird zur Berechnung der Indikatoren das Wertmodell verwendet, bei dem der Indikator ein Berechnungsglied darstellt. Und die Ergebnisse eines Indikators können von zahlreichen Expert-Systemen, Skripten und anderen Indikatoren ebenfalls verwendet werden. Das bedeutet auch, dass die Berechnung in nur einem Berechnungskern erfolgt, wenn ein und derselbe Indikator auf mehrere Diagramme mit gleichem Kürzel und Zeitraum angelegt wird. Dieser Ansatz spart Zeit und Speicherplatz.

Zudem können in MQL5 die Werte des einen Indikators anhand der Werte eines anderen Indikators oder mittels der Werte von Datenfeldern (Arrays) berechnet werden. Das ermöglicht die allgemeingültige und einfache Erstellung komplexer Indikatorberechnungen. Wie bereits erwähnt sind die Möglichkeiten zur grafischen Darstellung der Indikatorwerte in MQL5 mehr als ausreichend.

Alle Vorgänge zur Verwaltung der Eigenschaften der Diagramme und grafischen Objekte sind asynchron. Das erspart unnütze Wartezeiten, bis das Videosystem die Änderungen an der Farbe, dem Umfang usw. anzeigt. Wenn Sie das Ausführungsergebnis einer Funktion aus dem Bereich der grafischen Objekte oder der Diagrammoperationen unverzüglich haben müssen, rufen Sie die Funktion ChartRedraw() zur erzwungenen Neuzeichnung des Diagramms auf. Andernfalls erstellt die Anwendung das Diagramm bei der nächsten sich bietenden Gelegenheit automatisch neu.


Handelsoperationen

Der Handel erfolgt in MQL5 durch den Versand von Anfragen mithilfe der Funktion OrderSend(). Bei einer Anfrage handelt es sich um ein besonderes MqlTradeRequest-Gerüst, das mit den je nach benötigtem Handelsvorgang erforderlichen Werten gefüllt wird.

Man kann kaufen oder verkaufen, Pending Kauf- oder Verkaufsorders mit festgelegten Bedingungen platzieren oder bestehende Pending Orders löschen. Bei erfolgreicher Ausführung der Funktion OrderSend() wird das Ergebnis der Handelsanfrage in das Gerüst MqlTradeResult eingetragen.

In der ersten Zeit des Studiums von MQL5 werden Sie nicht umhin kommen, sich selbst mit der zutreffenden Füllung des MqlTradeRequest-Gerüsts auseinanderzusetzen. Für die Durchführung von Handelsoperationen gibt es in der Standardbibliothek die Klasse CTrade, die nachgerade dazu berufen ist, MQL5-Programmierern das Leben zu erleichtern:

Mit Aufträgen (Orders) arbeiten

OrderOpen

Platzieren einer Pending Order mit vorgegebenen Parametern

OrderModify

Änderung der Parameter einer Pending Order

OrderDelete

Löschen einer Pending Order

Mit Positionen arbeiten

PositionOpen

Eröffnung einer Position mit vorgegebenen Parametern

PositionModify

Änderung der Parameter einer Position

PositionClose

Schließen einer Position

Weitere Methoden

Buy

Eröffnung einer langen (long) Position mit vorgegebenen Parametern

Sell

Eröffnung einer kurzen (short) Position mit vorgegebenen Parametern

BuyLimit

Anlegen einer Pending Kauf-Order zu einem günstigeren als dem aktuellen Marktkurs

BuyStop

Anlegen einer Pending Kauf-Order zu einem schlechteren als dem aktuellen Marktkurs

SellLimit

Anlegen einer Pending Verkaufs-Order zu einem günstigeren als dem aktuellen Marktkurs

SellStop

Anlegen einer Pending Verkaufs-Order zu einem schlechteren als dem aktuellen Marktkurs


Ein Anwendungsbeispiel für die Klasse CTrade bietet das Muster-Expert-System MACD Sample im Lieferumfang der Anwendung. Sie finden es im Verzeichnis <terminal_directory\MQL5\Experts\Examples\MACD. Neben der Klasse CTrade finden Sie in der Abteilung Handelsklassen weitere Klassen für die Arbeit mit Aufträgen, Positionen, Abschlüssen usw.


Die Arbeit mit dem Strategieprüfprogramm in MetaTrader 5

Die MetaTrader 5-Anwendung ermöglicht nicht nur den Handel auf zahlreichen Finanzmärkten mithilfe von automatischen Handelssystemen, sie ist auch dazu gedacht, deren Ertragsfähigkeit und Stabilität gegen die Verlaufsdaten zu prüfen. Zu diesem Zweck beinhaltet sie ein Strategieprüfprogramm.

Dabei darf nicht vergessen werden, dass die Anwendung bei der Prüfung/Optimierung eines Expert-Systems als Steuerprogramm fungiert, das Aufgaben an bestimmte als Prüfinstanzen bezeichnete Dienste vergibt. Somit erfolgt die Prüfung in Form einer Kommunikation zwischen der Anwendung und den Prüfinstanzen. Das Prüfprogramm verschickt Aufgaben an die Instanzen und erhält im Gegenzug die Ergebnisse von deren Erledigung.

Optimierung des Handelssystems im Prüfprogramm der MetaTrader 5-Anwendung

Die Benachrichtigungen des Prüfprogramms und der Prüfinstanzen werden in einem Protokoll festgehalten. Bei der Prüfung können die Instanzen eine sehr große Anzahl an Benachrichtigungen versenden, die von dem Expert-System mithilfe der Funktionen Print() und Alert() erzeugt werden. Deshalb werden im Prüfprotokoll nicht alle von den Instanzen übermittelten Benachrichtigungen angezeigt, einige können ausgeblendet werden. Das geschieht, um eine Verlangsamung des Prüfvorgangs durch die Notwendigkeit der Anzeige aller Benachrichtigungen zu vermeiden.

Deshalb wird das Prüfprotokoll separat in dem Verzeichnis <terminal_folder>\tester\logs\ der Anwendung gespeichert, während die vollständigen Protokolle mit allen Benachrichtigungen in den entsprechenden Ordnern der Prüfinstanzen aufgezeichnet werden. Denken Sie daran, wenn Sie zur Analyse der Prüfung die vollständigen Protokolle benötigen. Glücklicherweise verfügt das Prüfprogramm über eine besondere Protokollanzeige mit allen Protokollen für das jeweils benötigte Intervall.

Neben der Prüfung gibt es den Optimierungsmodus für die Eingangsparameter des Expert-Systems, in dem das Prüfprogramm auf dutzende, hunderte oder sogar tausende Prüfinstanzen zurückgreifen kann (zum Beispiel über die MQL5-Cloud). In diesem Fall werden die Ausgabe und der Versand von Benachrichtigungen durch die Funktionen Print() und Alert() vollständig unterdrückt, um die ausgehenden Datenströme an das Prüfprogramm nicht zu belasten und Speicherplatz auf den lokalen Festplatten der Rechner zu sparen, auf denen sich die Prüfinstanzen befinden. Die einzige Ausnahme ist die Verarbeitungsfunktion OnInit(). Nur sie darf über die Funktion Print() eine Benachrichtigung an das Prüfprogramm ausgeben und übermitteln, die bei der Ermittlung der Ursache für das Scheitern der Bereitstellung oder die Ablehnung der Durchführung der Prüfung unter Einsatz der Funktion ExpertRemove() aus technischen Gründen behilflich sein kann.

Weitere interessante Informationen finden Sie in den Beiträgen im Abschnitt Prüfprogramm. Wir sind sicher, dass Sie die Möglichkeiten des Strategieprüfprogramms der MetaTrader 5-Anwendung für Ausgabegeräte zu schätzen wissen werden.


Auf zu neuen Ufern

Wer und was auch immer Sie sind, das Erlernen von MQL5 wird Ihnen neue Möglichkeiten eröffnen. Das kann das bessere Verständnis der Programmiersprachen, eine neue Sicht auf den Handel oder die Aneignung neuer Technologien sein. Die neue MetaTrader 5-Anwendung bietet so viel Neues, dass es wahrscheinlich keinen Entwickler gibt, der ihr gesamtes Potenzial ausgeschöpft hätte.

In diesem Beitrag wurden zahlreiche interessante Punkte nicht angesprochen, etwa die bequeme Arbeit mit DLLs, das Herunterladen von Programmen aus der Codebasis in das Bearbeitungsprogramm sowie ihren in der Anwendung Aufruf per Mausklick u. v. a. m. Wenn Sie die Lektüre einer umfangreichen Aufstellung aller Möglichkeiten nicht abschreckt, können Sie das gerne tun: MetaTrader 5 - Jenseits aller Vorstellungen!

Damit verabschieden wir uns und hoffen, Sie unter den ständigen Mitgliedern der MQL5.Community wiederzusehen!

Übersetzt aus dem Russischen von MetaQuotes Software Corp.
Originalartikel: https://www.mql5.com/ru/articles/447

Letzte Kommentare | Zur Diskussion im Händlerforum (2)
Otto Pauser
Otto Pauser | 25 Nov 2016 in 21:04
MetaQuotes Software Corp.:

Neuer Artikel Schneller Einstieg in MQL5 :

Autor: MetaQuotes Software Corp.

"Keine bedingte Kompilierung von #ifdef, #else, #endif" usf."

Diese Behauptung ist falsch oder falsch übersetzt !!!!!!!!!

Bedingte Kompilierung ist möglich! Bitte korrigieren!

Alexey Petrov
Alexey Petrov | 28 Nov 2016 in 08:36
Otto:

"Keine bedingte Kompilierung von #ifdef, #else, #endif" usf."

Diese Behauptung ist falsch oder falsch übersetzt !!!!!!!!!

Bedingte Kompilierung ist möglich! Bitte korrigieren!

Hallo,

ja, Sie haben Recht. Das ist ein relativ alter Artikel. Wir haben die veralteten Informationen geloescht. Danke

MfG
Erstellung eines automatischen Handelssystems ohne Zeitverlust Erstellung eines automatischen Handelssystems ohne Zeitverlust

Der Handel auf den Finanzmärkten ist mit einer Vielzahl von Risiken verbunden, unter denen das gefährlichste darin besteht, eine falsche Handelsentscheidung zu treffen. Jeder Händler träumt davon, sich selbst durch ein automatisches Handelssystem zu ersetzen, eine Maschine, stets in Bestform, unerschöpflich und frei von menschlichen Schwächen wie Angst, Raffgier und Ungeduld.

Gewinnbringende Algorithmen mit Trailing Stops Gewinnbringende Algorithmen mit Trailing Stops

Ziel dieses Artikels ist die Untersuchung der Einträglichkeit von Algorithmen mit unterschiedlichen Geschäftsein- und Ausstiegen anhand von automatisch nachgezogenen Verlustgrenzen (Trailing Stops). Die verwendeten Einstiegsarten sind zufälliger (random entry) und gegenläufiger Einstieg (reverse entry) und die verwendeten Stop-Grenzen die nachgezogene Verlust- (Trailing Stop) und die nachgezogene Gewinngrenze (Trailing Take). In dem Beitrag werden gewinnbringende Algorithmen mit einer Jahresertragsrate von etwa 30 % vorgestellt.

Handelsoperationen in MQL5 - Nichts leichter als das Handelsoperationen in MQL5 - Nichts leichter als das

Kaum ein Händler dürfte nicht auf dem Markt aktiv sein, um Geld zu verdienen, obwohl ein sich gewisser Teil vielleicht auch an der Teilnahme am Handelsgeschehen selbst erfreut. Aber Freude daran vermittelt nicht nur der manuelle Handel. Die Entwicklung automatischer Handelssysteme kann genauso begeisternd sein. Die Erstellung eines automatischen Expert-Systems für den Handel kann ein ebenso fesselndes Erlebnis sein, wie einen Krimi zu lesen.

Auftragsstrategien. Ein universelles automatisches Handelssystem Auftragsstrategien. Ein universelles automatisches Handelssystem

In diesem Beitrag dreht sich alles um Strategien, in denen bedingte Aufträge (Pending Orders) intensiv genutzt werden, um eine Metasprache, die geschaffen werden kann, um diese Strategien in Formelsprache zu beschreiben, und um die Verwendung eines universellen automatischen Handelssystems, dessen Arbeitsweise auf diesen Beschreibungen beruht.