Das Problem der Umstellung von MT4 auf MT5. Oder, genauer gesagt, die Unfähigkeit, einige Algorithmen in MT5 ohne Fehler auszuführen. - Seite 12

 
Vict:

fxsaber hat recht - es gibt eine Möglichkeit

Es ist ein bisschen kitschig - EXPR wird zweimal berechnet, aber es ist trotzdem flexibler. Man kann nicht sagen, dass es universell ist (nur für arithmetische Typen. Der Fehlerwert muss gleich sein, was unangenehm ist. Versucht, um es über explizite Struktur/Funktionsspezialisierung zu arbeiten, aber es ist nicht möglich.

Grüße!

Ich würde gerne ein neues Thema eröffnen, ich kann das Problem nicht formulieren... Ich habe Probleme damit )))) Aber das Material ist recht frisch und interessant

Sie haben eine großartige Arbeit geleistet, möchte es zu beenden - Usability (@fxsaber hat alle seine Arbeit einmal mit einem inluder eingesteckt) ist praktisch!

Und damit das Ganze professionell aussieht, sollten Sie eine C++/C#-Syntax verwenden (oder sich ihr annähern).

 
Artyom Trishkin:

Ich kann Ihnen meine Meinung sagen:

Lasst uns in aller Ruhe aus dem machen, was wir im Moment haben, jammert nicht, helft mit, Fehler zu finden und fragt in der Erwartung, dass sie behoben werden - sie werden behoben und neue nette Funktionen erscheinen.

Ich bin mit diesem Ansatz einverstanden.

---------

Ich hatte teilweise schon bei den allerersten Versionen eine Art Cache. Das heißt, ich habe Arrays mit der Zeit, den Werten der Minima und den Werten der Maxima für die ersten 10 Zickzack-Extrema erstellt.

In der Version für MT5 habe ich auch ein Array mit Bar-Nummern hinzugefügt. Für die ersten 10 Extrema. Das hilft in den meisten Fällen. In MT5 sind nur Nicht-Standard-Bindungen betroffen.

Ich werde keinen vollständigen Cache für den verfügbaren Verlauf für alle 21 Zeiträume erstellen. Der Arbeitsspeicher Ihres Computers wird bei diesem Ansatz nicht ausreichen.

Zum Verständnis: Manche Enthusiasten zeigen bis zu 9 Indikatoren für MT4 auf einem Chart an. Es gibt viele Charts für verschiedene Währungspaare, die gleichzeitig geöffnet sind. Und sie alle haben 9 Kopien des Indikators. Diese Anwendung des Indikators ist für das von Putniuk erstellte System DML&EWA implementiert. Er selbst hat bis zu 72 Instanzen des Indikators ausgegeben. Das heißt, für 8 Währungspaare.

Bei dieser Verwendung wird der Speicher durch einen zusätzlichen Cache von 21 TFs zusammen mit 28 Puffern sehr stark belastet.

Dabei wird nur die Speicherbelastung berücksichtigt. Es ist zu mühsam, einen umfangreichen Code für die Verwendung des Cache anstelle der Funktionen iTime, iLow, iHight, iClose, iBarShift neu zu entwerfen

=================

Ich habe solche Marathons schon mehrmals hinter mir.

1. Ein Marathon über die Einbindung mehrerer externer Zickzack-Indikatoren in den Hauptteil des Programms. Die externen Indikatoren wurden abgeschafft, damit der Markt das Programm akzeptiert.

2. Umwandlung aller einfach gepufferten Zickzacklinien in doppelt gepufferte Linien. Dies dauerte etwa ein halbes Jahr.

3. Erstellen der grafischen Oberfläche. Das hat insgesamt etwas mehr als 2 Jahre gedauert. Etwa 3 Jahre. Und es gibt noch weitere interessante Ideen für grafische Schnittstellen. Aber ich habe noch nicht genug Mut, sie umzusetzen.

4. Ursprünglich wollte ich vor einem Jahr von MT4 auf MT5 umsteigen. Das ist mir damals nicht gelungen. Ich kann es jetzt tun. Aber ich bin mit der Qualität der Übersetzung nicht zufrieden.

Es gab auch noch andere Marathons.

Das Anlegen eines Caches kann in eine Sackgasse führen. Es ist gefährlich, sich damit anzulegen...

------------

Artem, Ihr Ansatz (oben zitiert) wird voll unterstützt.

 
Hier noch einmal ein Zitat aus dem ersten Beitrag:

...Zitat aus dem MQL5-Sprachführer. Unter der Überschrift Organisation des Datenzugriffs.

"...Zugänglichkeit der Daten

Die Verfügbarkeit von Daten im HCC-Format oder sogar im HC-Ready-Format bedeutet nicht immer die uneingeschränkte Verfügbarkeit dieser Daten für die Anzeige in einem Diagramm oder für die Verwendung in mql5-Programmen.

Beim Zugriff auf Kursdaten oder Indikatorwerte aus mql5-Programmen sollte man bedenken, dass nicht garantiert werden kann, dass sie zu einem bestimmten Zeitpunkt oder ab einem bestimmten Zeitpunkt verfügbar sind...".

--------------

Das Problem bleibt bestehen.

Das Programm verfügt über mehrere hundert Zugriffe auf die Kurshistorie in verschiedenen Teilen des Programms. Das Programmlisting enthält etwa 50 000 Zeichenfolgen.

Manchmal wird aufgrund der Besonderheiten des Zugriffs auf die Historie der Wert -1 zurückgegeben. Die Folge davon ist ein Fehler - ein Array Overrun. Es gibt auch andere Fehler. In einigen Fragmenten des Programms habe ich überprüft, ob beim Zugriff auf die Historie -1 zurückgegeben wird. Beim Empfang von -1 werden in diesem Fall die einzelnen Elementeder grafischen Konstruktionen nicht gezeichnet. Wenn wir dem Code ein paar hundert Prüfungen hinzufügen, wird dies zu Verzögerungen führen, die bereits aufgrund der Besonderheiten des Zugriffs auf die Historie bestehen.

Es ist auch möglich, ein Programm für MT5 zu erstellen. Aber dafür muss die gesamte Architektur geändert werden. Ich habe keine Zeit für solche Heldentaten.

Ich habe beschlossen, dass eine solche nutzlose Aufgabe nicht notwendig ist. Das Programm arbeitet mit MT4. Ich habe nicht vor, zu MT5 zu wechseln. Ich habe ZUP für MT5 kostenlos gemacht.

Ich habe ZUP für MT5 kostenlos gemacht, jeder der möchte, kann es herunterladen und sehen, wie es auf MT5 funktioniert. Und vergleichen Sie es auch mit meiner Version auf MT4.

Jetzt bin ich fertig mit MT5. Das ist reine Zeitverschwendung.

Ich habe ähnliche Nachrichten in einigen anderen Foren gepostet.

 
Renat Fatkhullin:
Und können Sie die Unzugänglichkeit der Daten reproduzierbar nachweisen?

Sie behaupten ohne nachvollziehbare Beweise.

In der Servicedesk wird beschrieben, wie man das Problem reproduzieren kann. Der Quellcode zum Reproduzieren des Problems ist ebenfalls vorhanden.

==========

Text aus der MQL5-Dokumentation https://www.mql5.com/ru/docs/series/timeseries_access :

Verfügbarkeit von Daten

Die Verfügbarkeit von Daten im HCC-Format oder sogar im gebrauchsfertigen HC-Format bedeutet nicht immer die uneingeschränkte Verfügbarkeit dieser Daten für die Anzeige in einem Diagramm oder für die Verwendung in mql5-Programmen.

Beim Zugriff auf Kursdaten oder Indikatorwerte aus mql5-Programmen sollte man bedenken, dass diese nicht garantiert zu einem bestimmten Zeitpunkt oder von einem bestimmten Zeitpunkt an verfügbar sind. Dies liegt daran, dass MetaTrader 5 nicht die vollständige Kopie der benötigten Daten für das mql5-Programm speichert, sondern einen direkten Zugriff auf die Terminal-Datenbank ermöglicht, um Ressourcen zu sparen.


Dieser Text bedeutet, ins Russische übersetzt, Folgendes. Unabhängig davon, was Sie tun, kann der Zugriff auf die Daten zu jeder Zeit nicht möglich sein.

Das heißt, es gibt keine Möglichkeit, Fehler aufgrund von Unterbrechungen des Datenzugriffs zu vermeiden.

So verstehe ich diesen Text.

Документация по MQL5 - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Документация по MQL5 - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
  • www.mql5.com
MetaQuotes Language 5 (MQL5) - язык программирования технических индикаторов, торговых роботов и вспомогательных приложений для автоматизации торговли на финансовых рынках. MQL5 является современным языком высокого уровня и разработан MetaQuotes Software Corp. для собственной торгово-информационной платформы. Синтаксис языка максимально близок...
Grund der Beschwerde: