Diskussion zum Artikel "Bibliothek für ein leichtes und schnelles Entwickeln vom Programmen für den MetaTrader (Teil X): Kompatibilität mit MQL4"

 

Neuer Artikel Bibliothek für ein leichtes und schnelles Entwickeln vom Programmen für den MetaTrader (Teil X): Kompatibilität mit MQL4 - Ereignisse der Positionseröffnung und der Aktivierung von Pending-Orders

In den vorherigen Artikeln haben wir begonnen, eine große plattformübergreifende Bibliothek zu erstellen, die die Entwicklung von Programmen für MetaTrader 5 und MetaTrader 4 Plattformen vereinfacht. Im neunten Teil haben wir begonnen, die Bibliotheksklassen für die Arbeit mit MQL4 zu verbessern. Hier werden wir die Bibliothek weiter verbessern, um ihre volle Kompatibilität mit MQL4 zu gewährleisten.

Tests

Überprüfen wir die vorgenommenen Änderungen. Kompilieren wir TestDoEasyPart10.mq4, starten es im Tester, öffnen und schließen Positionen, platzieren Pending-Orders, warten, bis eine von ihnen aktiviert ist und prüfen, ob Stopp-Loss und das Trailing aktiviert wird (Ändern von Positionen und offenen Aufträgen). Alle Ereignisse, die die Bibliothek für MQL4 "sieht", sollen im Journal des Testers angezeigt werden:


Wenn wir das Journal des Testers genau beachten, können wir feststellen, dass die Bibliothek immer noch nicht das Schließen von Positionen erkennt. Wenn die Pending-Order BuyLimit #3 ausgelöst wird, erscheint im Journal, dass [BuyLimit #3] aktiviert ist, was zur Position Buy #3 führt. Nun sieht die Bibliothek die Ereignisse der anstehenden Auftragsaktivierung und kennt einen Quellauftrag, aus dem eine Position stammt. Außerdem sehen wir ein leichtes Versäumnis in der Modifikationsfunktion — das Label der Pending-Order BuyStop #1, die durch Trailing modifiziert wurde, wird rot. Aber die Bibliothek sieht alle Ereignisse der Auftrags- und Positionsänderung.

Autor: Artyom Trishkin

 

Es gibt einen Fehler in MT4, der alles löscht, einschließlich HIDDEN-Objekte (was nicht der Fall sein sollte), wenn man die ← Backspace-Taste drückt.

Wenn Sie also ← Backspace drücken, können Sie leicht Ihre gesamte Schnittstelle löschen.

Im Allgemeinen fehlt in Ihrem MT4-Code eine Reaktion auf das Löschen von Steuerelementen, um sie neu zu erstellen.

 
Andrey Voytenko:

In MT4 gibt es einen Fehler, der alles löscht, einschließlich HIDDEN-Objekte (die nicht sein sollten), wenn man die ← Backspace-Taste drückt.

Durch Drücken von ← Backspace können Sie also leicht Ihre gesamte Oberfläche löschen.

Im Allgemeinen fehlt in Ihrem MT4-Code eine Reaktion auf das Löschen von Steuerelementen, um diese neu zu erstellen.

Dies sind keine Steuerelemente. Es sind Testschaltflächen. Eine grafische Bibliotheksshell ist in Vorbereitung. Später. Vielen Dank für die Warnung.
 

Trade.mqh wurde für den MT4 entwickelt.

Готовые советники из Мастера MQL5 работают в MetaTrader 4
Готовые советники из Мастера MQL5 работают в MetaTrader 4
  • www.mql5.com
Клиентские терминалы MetaTrader 4 и MetaTrader 5 предоставляют своим пользователям возможность легко создавать прототипы программ на языке MQL с помощью встроенного Мастера (MQL Wizard). Мастера обоих версий терминалов очень похожи, но все же имеют одно важное отличие. В Мастере MetaTrader 5 есть пункт генерации готовых советников, а в...
 
Ich schlage vor, sie
#ifdef __MQL5__
  #define __MQL5_NEW__
#else // __MQL5__
  #define __MQL4_NEW__
#endif // __MQL5__
an den Anfang der Bibel zu stellen. Und alle Bedingungen sollten auf New-Variante geändert werden. Dann wird es möglich sein, in MT5 die mt4-Variante der Bibliothek laufen, und in MT4 - die mt5-Variante der Bibliothek.
 
fxsaber:
Ich schlage vor, dies ganz am Anfang der Bibeln zu tun. Und alle Bedingungen sollten auf New-Variante geändert werden. Dann wird es möglich sein, in MT5 die mt4-Variante der Bibliothek auszuführen, und in MT4 - die mt5-Variante der Bibliothek.
Es gibt also nur eine Bibliotheksvariante
 
Artyom Trishkin:
Es gibt nur eine Bibliotheksvariante

Ich würde gerne die MT4-Logik der Bibliothek in MT5 ausführen können.

 
fxsaber:

Ich würde gerne die Logik der MT4-Bibliothek im MT5 ausführen können.

Ich verstehe den Vorschlag nicht, da die Logik für beide Plattformen die gleiche ist. Die Implementierung ist etwas anders.
 
Artyom Trishkin:
Ich habe den Vorschlag nicht verstanden, weil die Logik für beide Plattformen die gleiche ist. Die Implementierung ist etwas anders.

Ich verbinde MT4Orders vor Ihrer Bibliothek. Und ich möchte, dass die MT4-Variante in Ihre Bibliothek eingebunden wird.

Es gibt zwei Möglichkeiten, dies zu lösen

  1. Ich ersetze __MQLX__ in allen Quellen Ihrer Bibliothek. Das heißt, ich ändere die Bibliothek selbst, wenn auch halbautomatisch.
  2. Sie erstellen Makros, wie ich oben gezeigt habe. Um MT4-Logik in MT5 einzubinden, müssen Sie dann nichts mehr an Ihrer Bibliothek ändern.


Ich denke, es wird Sie interessieren, Ihre Bibliothek ausschließlich in MT5, aber in zwei Logikmodi zu vergleichen.


ZY Ich möchte auch in der Lage sein, Ihre Bibliothek in Virtual laufen zu lassen. Dazu benötige ich Zugriff auf den MT4-ähnlichen Teil der Bibliothek.

 
fxsaber:

Ich schließe MT4Orders vor Ihrer Bibliothek an. Und ich möchte die MT4-Variante in Ihrer Bibliothek verwenden.

Es gibt zwei Möglichkeiten, dies zu lösen

  1. Ich ersetze __MQLX__ in allen Quellen Ihrer Bibliothek. Das heißt, ich ändere die Bibliothek selbst, wenn auch halbautomatisch.
  2. Sie erstellen Makros, wie ich oben gezeigt habe. Um MT4-Logik in MT5 einzubinden, brauchen Sie dann nichts in Ihrer Bibliothek zu ändern.


Ich denke, es wäre interessant für Sie, Ihre Bibliothek ausschließlich in MT5, aber in zwei Logikmodi zu vergleichen.


ZY Ich möchte auch in der Lage sein, Ihre Bibliothek in Virtual laufen zu lassen. Zu diesem Zweck benötige ich Zugang zum MT4-ähnlichen Teil der Bibliothek.

Wir können das besprechen. Aber unter vier Augen. Im Moment wird die Bibliothek auf die gleiche Weise entwickelt - eine Logik für beide Plattformen. Die Bibliothek wurde als eine unabhängige Einheit konzipiert - eine für beide Plattformen. Mit der gleichen Logik, die weder dem MQL4-Stil noch dem MQL5-Stil widerspricht - alles ist gemeinsam.

ZY: Ich habe nicht verstanden, was mit dem Teil der Bibliothek im MQL4-Stil gemeint ist. Es gibt dort keine Trennung. Zeigen Sie mir die Stelle in der Bibliothek, die erwähnt wird.

 
Artyom Trishkin:

Wir können das diskutieren. Aber unter vier Augen. In der Zwischenzeit wird die Bibliothek auf die gleiche Weise entwickelt werden - eine Logik für beide Plattformen. Die Bibliothek wurde als eine unabhängige Einheit konzipiert - eine für beide Plattformen. Mit der gleichen Logik, die weder dem MQL4-Stil noch dem MQL5-Stil widerspricht - alles ist gemeinsam.

Ich habe Ihnen eine Version Ihrer Bibliothek geschickt, die im MT5 durch die von Ihnen vorgeschriebene Logik im MT4-Stil funktioniert.

ZY: Ich habe nicht verstanden, was mit dem MQL4-Stil-Teil der Bibliothek gemeint ist. Es gibt dort keine Trennung. Zeigen Sie mir die Stelle in der Bibliothek, die erwähnt wird.

Der Punkt ist, dass plattformübergreifende Bibliotheken eine viel höhere Wahrscheinlichkeit haben, dass der MQL4-artige Teil der Bibliothek funktioniert als der MQL5-artige. Wenn ich plattformübergreifende Bibliotheken verwende, ziehe ich es daher vor, ihre Logik im MQL4-Stil in MT5 zu verwenden. Es ist viel zuverlässiger in MT5.


Ich denke, dass Ihre Logik im MQL5-Stil in MT5 sehr lange braucht, um Fehler zu entdecken, während der MQL4-Stil nur eine minimale Anzahl von Fehlern und keine kritischen Fehler aufweist.