English Русский 中文 Español 日本語 Português 한국어 Français Italiano Türkçe
Hier sind der neue MetaTrader 5 und MQL5

Hier sind der neue MetaTrader 5 und MQL5

MetaTrader 5Beispiele | 11 Januar 2016, 09:10
1 736 0
Yuriy Zaytsev
Yuriy Zaytsev

Ich beschreibe nur kurz ein paar wichtige Momente.


Abb. 1. Das ist nicht Photoshop. Das ist MQL5.

Fast alles, woran ich und andere in MQL5 und MT5 interessiert waren, wurde auf einem sehr hohen Niveau umgesetzt.

Die grundlegende Veränderung in MQL5 ist das Erscheinen der objektorientierten Programmierung. Ich werde nicht zu tief in die Details gehen, sondern merke nur an, dass erfahrene Programmierer mehr Möglichkeiten erhalten. Für all jene, die MQL4 mochten und OOP nicht kennen, habe ich gute Neuigkeiten: Die Entwickler lassen die Möglichkeit offen, MQL5 im Stil von MQL4 ohne OOP zu schreiben. Der Unterschied liegt in der Funktionalität, die neu erlernt werden muss.

Nehmen wir ein einfaches Beispiel: Die Variablen Ask und Bid existieren nicht mehr. Um die Bid-Werte zu erhalten, sollte die folgende Funktion aufgerufen werden:

SymbolInfoDouble(Symbol(),SYMBOL_BID);

Die häufig verwendeten Low[0] oder iLow ( Symbol(), PERIOD_D1, 0 ) existieren nicht mehr, doch Sie können sie einfach rekonstruieren. Die neuen Funktionen für die Arbeit mit historischen Daten schaffen Möglichkeiten, die historischen Daten von einem Punkt zu einem anderen, von einem bestimmten Bar oder von einem bestimmten Zeitpunkt zum anderen bestimmten Zeitpunkt in den Speicher einzulesen. Vorher wurde beim Lesen einer Datenserie der gesamte sichtbare Bereich in den Speicher geladen. Die Daten wurden eingelesen, ob Sie es wollten oder nicht. Und wenn Sie M1 lesen mussten, wurde es von 1999 (sofern eine Historie verfügbar war) bis zum aktuellen Datum, der aktuellen Stunde und der aktuellen Minute gelesen.

Jetzt ist es möglich, nur den erforderlichen Bereich zu lesen, wodurch viel Zeit und Speicher gespart wird.

MqlRates rates_arrayG[];
Int Bar=30; // read only 30 bars stating from the zero one
iCopBar=CopyRates(Symbol(),PERIOD_M1,0,Bar,rates_arrayG);

Diese Funktion spart Zeit und Speicher.

Sie brauchen keine Angst vor dieser Änderung der Funktionalität zu haben. Wir werden einfach etwas Zeit brauchen, um die neuen entsprechenden Funktionen zu lernen.

Einige funktionale Innovationen, die ich von MQL erwartet habe:

  • OnTimer() – Funktion zum Verarbeiten von Timer-Ereignissen (Sie müssen keine Schleife des Expert Advisors mehr ausführen, damit er unabhängig von eingehenden Ticks mit einer bestimmten Periodizität arbeitet);
  • OnTrade() – Funktion zum Verarbeiten von Handelsereignissen – Öffnung oder Schließung einer Handelsposition oder Änderung des Volumens;
  • OnChartEvent() – Verarbeitung von Ereignissen mit der Maus oder Tastatur.

Gehen wir kurz darauf ein.

Die OnTimer()-Funktion wird aufgerufen, wenn der Timer vorher in der voreingestellten OnInit-Funktion (Verarbeiter von Initialisierungsereignissen des EA) initialisiert wird.

Beispiel:

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
   EventSetTimer(1); //each second we'll refer to OnTimer()
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit()
  {
   EventKillTimer(); // canceling of timer reference must be called at exit
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTimer()
  {
   MqlDateTime str1;
   TimeGMT(str1); // new function to get GMT time
   Comment(str1.hour
           ,str1.min
           ,str1.sec
           ,str1.day
           ,str1.mon
           ,str1.year
           ,str1.day_of_year
           ,OrdersTotal()
           ,PositionsTotal()
           );
  }

Auf diese Weise haben Sie nicht nur bei eingehenden Ticks die Kontrolle, wie es früher der Fall war, sondern auch über den Timer, der das Schreiben von in Echtzeit verwaltbaren Programmen ermöglicht. Mit dieser Möglichkeit können ausgeklügeltere Systeme erschaffen werden.

Mir hat die OnTrade()-Funktion sehr gut gefallen. Diese Funktion wird aufgerufen, wenn eines der folgenden Handelsereignisse ausgelöst wird: Platzierung eines Auftrags, Aktivierung von StopLoss oder TakeProfit, Änderung der StopLoss- oder TakeProfit-Niveaus, Platzierung/Löschung eines ausstehenden Auftrags.

Es ist nun viel einfacher, Ereignisse im Zusammenhang mit Handelstätigkeiten zu überwachen. Es sind keine Überprüfungsschleifen für den Status von Aufträgen bei Ticks oder Bars mehr erforderlich. Solche Schleifen werden in MQL4 eingesetzt und verringern die Performance des Programms deutlich, die für die Optimierung sehr wichtig ist.

Gehen wir näher auf die OnChartEvent()-Funktion ein. Die Funktion wird bei diversen Ereignissen aufgerufen. Ich habe es nicht geschafft, sie alle zu testen, doch die Liste ist beeindruckend:

  • CHARTEVENT_KEYDOWN – Knopfdruck-Ereignis;
  • CHARTEVENT_OBJECT_CLICK – Mausklick-Ereignis auf einem grafischen Objekt, das Teil eines Diagramms ist;
  • CHARTEVENT_OBJECT_DRAG – Ereignis der Verschiebung eines grafischen Objekts mit der Maus;
  • CHARTEVENT_OBJECT_ENDEDIT – Ereignis der Beendigung der Textbearbeitung;
  • CHARTEVENT_CUSTOM+n – Identifikator eines benutzerdefinierten Ereignisses;
  • CHARTEVENT_CUSTOM_LAST – das letzte Ereignis.

Die Möglichkeit, Handel und Grafiken auf einer neuen funktionalen Ebene zu verwalten – genau das, was uns die Entwickler versprachen.

Es gibt neue grafische Objekte, Buttons und Textfelder. Die Diagrammverwaltung ist fantastisch, es können sogar Bilder aus Dateien eingefügt werden. Diese Option bietet Personen, die spezielle Designs mögen, zahlreiche Möglichkeiten. Das ist nicht Photoshop. Das ist das Ergebnis der Möglichkeiten, die MQL5 und MetaTrader 5 bieten. Zu den neuen Funktionen gehört, dass Sie Ihre eigenen Buttons und Textfelder erstellen können, beispielsweise einen Button zum Schließen aller offenen Aufträge oder einen Button zum schnellen Kaufen und Verkaufen mit voreingestellten stop- und take-Parametern.


Abb. 2. Grafische Objekte ermöglichen die Erstellung eines Informationsfelds.

Abb. 2. Grafische Objekte ermöglichen die Erstellung eines Informationsfelds

Es gibt einen kleinen Makel: Es können keine Objekte aus Indikatoren erstellt werden. Das war so beabsichtigt, um die Performance der Indikatoren zu erhöhen. Die gute Nachricht ist, dass die Entwickler das verstehen und wahrscheinlich die Möglichkeit einbauen werden, mehrere Expert Advisors in einem Diagramm zu starten. So wird es uns möglich sein, EA-Indikatoren mit Objekten und ohne Handel zu erstellen. Solche Indikatoren können jetzt schon erstellt werden. Sie fungieren einfach als Indikatoren. Das Problem kann aktuell umgangen werden, indem man einen Handels-EA in einem Diagramm und den EA zum Erstellen von Objekten im zweiten startet und anschließend einen Austausch zwischen ihnen einrichtet.

Beispielsweise konnte ich meinen Durchbruchsindikator innerhalb von mehreren Stunden von MQL4 in MQL5 transformieren. Die meiste Zeit wurde vom Erlernen von Funktionen und vom Debugging beansprucht. Der Code wurde in MQL5 kürzer.

Was das Terminal selbst betrifft, war ich von der Anzahl von Timeframes beeinflusst. Meiner Meinung nach sind es sogar zu viele. Doch der Reichtum an Minuten-Timeframes kann für einige Händler nützlich sein. Es gibt nur noch einen Schritt zur Erstellung eines frei eingestellten Timeframes. Alle Daten werden jetzt nur noch als Minuten-Timeframes gespeichert. Somit gibt es keine Probleme mit der Synchronisierung unterschiedlicher Timeframes. Das ist eine sehr wichtige technologische Lösung.

Im HISTORY-Katalog gibt es jetzt keine Dateien für unterschiedliche Timeframes



Abb. 3. Die gesamte Historie wird in einer einzigen Datei gespeichert.

Eine weitere angenehme Neuerung ist, dass Logs jetzt bereinigt werden können.


Abb. 4. Mit einem Knopfdruck kann das EA-Logbuch bereinigt werden, um alle unnötigen Meldungen zu löschen

Dies ist nur ein kurzer Überblick über MetaTrader 5. Ich kann nicht alle neuen Funktionen des Systems in so kurzer Zeit beschreiben. Die Tests begannen am 09.09.2009. Das ist ein symbolisches Datum und ich bin sicher, dass es eine Glückszahl werden wird. Es sind ein paar Tage vergangen, seit ich die Beta-Version des MetaTrader-5-Terminals und MQL5 bekommen habe. Ich konnte noch nicht alle Funktionen ausprobieren, doch ich bin jetzt schon beeindruckt.

Die Zauberer bei MetaQuotes haben ein großartiges Produkt erschaffen. Ich bin Entwickler mit 25-jähriger Erfahrung, habe den Beginn vieler Projekte gesehen und kann dies mit Sicherheit sagen!

Viele Grüße,
Juri Saizew

Skype: yurazyuraz
yzh@mail.ru

Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalartikel: https://www.mql5.com/ru/articles/1

Eine neue Schiene: Benutzerdefinierte Indikatoren in MQL5 Eine neue Schiene: Benutzerdefinierte Indikatoren in MQL5
Ich werde nicht alle neuen Möglichkeiten und Funktionen des neuen Terminals und der Sprache aufzählen. Sie sind zahlreich und einige der Neuheiten sind eine Diskussion in einem eigenen Beitrag wert. Auch gibt es hier keinen Code, der mit objektorientierter Programmierung geschrieben wurde. Das Thema ist zu wichtig, um es nur im Kontext zusätzlicher Vorteile für Entwickler zu erwähnen. In diesem Beitrag gehen wir auf Indikatoren, ihre Struktur, Zeichnung, Typen und Programmierdetails im Vergleich zu MQL4 ein. Ich hoffe, dass dieser Beitrag für Einsteiger und erfahrene Entwickler hilfreich sein wird. Vielleicht entdeckt auch jemand etwas Neues.
MQL4 wie ein Traders Werkzeug oder Advanced Technical Analysis MQL4 wie ein Traders Werkzeug oder Advanced Technical Analysis
Trading ist vor allem eine Wahrscheinlichkeitsrechnung. Und das Sprichwort «Faulheit ist der Motor für den Fortschritt» zeigt uns den Grund, warum all diese Indikatoren und Handelssysteme entwickelt worden sind. Daraus folgt, dass der größte Teil von neuen Tradern schon die entwickelten Handelstheorien lernt. Aber es gibt immer noch Markt-Geheimnisse, und Werkzeuge für die Analyse der Preisbewegungen, existieren meistens in der Form von realisierten technischen Indikatoren, mathematischen und statistischen Paketen. Vielen Dank Bill Williams für seinen Beitrag in der Marktbewegungen-Theorie. Aber man soll damit nicht aufhören.
MQL5: Erstellen Ihres eigenen Indikators MQL5: Erstellen Ihres eigenen Indikators
Was ist ein Indikator? Es ist ein Satz berechneter Werte, die auf praktische Weise auf dem Bildschirm angezeigt werden sollen. Sätze von Werten werden in Programmen als Arrays dargestellt. Somit bedeutet das Erstellen eines Indikators, einen Algorithmus zu schreiben, der bestimmte Arrays bearbeitet (Preis-Arrays) und die Ergebnisse der Bearbeitung für andere Arrays (Indikator-Arrays) aufzeichnet. Durch die Beschreibung der Erstellung des True Strength Index zeigt der Autor, wie Indikatoren in MQL5 geschrieben werden.
Das Expertensystem "Kommentator". Die praktische Verwendung der eingebauten Indikatoren im MQL4-Programm Das Expertensystem "Kommentator". Die praktische Verwendung der eingebauten Indikatoren im MQL4-Programm
Der Artikel betrachtet die Verwendung der technischen Indikatoren beim Programmieren in der MQL4-Sprache.