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

 
Eugeni Neumoin:

Ich habe versucht, die Frage zu beantworten. Die Daten sind nicht verfügbar.

Das Protokoll befindet sich in der QuickInfo. Der Code für den Tooltip ist vorgegeben. Die Zeitreihe wurde erstellt. Es wird ein Diagramm mit W1-Zeitreihen erstellt. Dostap ist abwesend. Die Funktion iBarShift erzeugt einen Fehler. Der gleiche Fehler tritt in MT4 nicht auf.

Wieder einmal ignorieren Sie die Aufforderung, den Code und das Ergebnis der Arbeit zu zeigen.

Bitte stellen Sie einen reproduzierbaren MQL5-Code zur Verfügung.

 
Eugeni Neumoin:

Artem, waren Sie derjenige, der meinen Beitrag im Diskussionsthread zum Artikel gelöscht hat? Wo habe ich auf die Anfrage eines Forumsmitglieds geantwortet?

Ich habe gerade das Thema angesprochen, das in diesem Forumsthread angesprochen wurde. Und ich war verärgert über diese unbekümmerte Haltung. Deshalb habe ich diesen Forumsbeitrag erstellt.

======

Ich hatte schon früher Meinungsverschiedenheiten in diesem Forum. Sie wollen hier nicht diskutieren. Es gibt viele Foren, in denen man ohne Zensur viel sagen kann.

Im Jahr 2005 hat ein Moderator (HQ) etwas Ähnliches im Alpari-Forum gemacht. Und dann zog fast das gesamte Forum von Alpari zu Onyx um.

Nein, ich habe nichts gelöscht.

 
Vladimir Karputov:

Wieder einmal ignorieren Sie die Aufforderung, den Code und das Ergebnis der Arbeit zu zeigen.

Bitte stellen Sie reproduzierbaren MQL5-Code zur Verfügung.

Das Problem ist, dass der Code etwa 50 000 Zeilen umfasst. Ich werde sie nicht öffentlich bekannt geben.

Die Situation ist in der Schwebe. Aber... Ich werde versuchen, einen anderen Code zu erstellen. Sie wird auch nicht klein sein.

Und es wird Zeit brauchen.

Ich hoffe, Sie haben meine Links im Sprachführer, auf den ich mich beziehe, gelesen. Dort steht schwarz auf weiß von jemandem bei Metakvotes, dass der Datenzugang jederzeit beendet werden kann.

Hier ist das vollständige Zitat aus dem Sprachenhandbuch:

Verfügbarkeit der Daten.

Die Verfügbarkeit von Daten im HCC-Format oder sogar im gebrauchsfertigen HC-Format bedeutet nicht immer, dass diese Daten uneingeschränkt für die Anzeige in einem Diagramm oder für die Verwendung in mql5-Programmen zur Verfügung stehen.

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 hat damit zu tun, 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.

Die Kurshistorie für alle Zeitrahmen wird aus den gemeinsamen Daten im HCC-Format erstellt und jede Aktualisierung des Servers führt zur Aktualisierung der Daten für alle Zeitrahmen und zur Neuberechnung der Indikatoren. Daherkann der Zugriff auf die Daten verweigert werden, auch wenn diese Daten gerade eben noch verfügbar waren.

Sie können es auch einfacher machen. Ich habe bereits mehrere Leute dazu gebracht, dieses Programm zu kaufen. Wenn ich Beschwerden von ihnen über diesen Thread erhalte, werde ich ihre Nachrichten hier veröffentlichen. Und lassen Sie alle wissen, dass dies von den Entwicklern der Sprache vorgeschrieben ist: DerZugang zu Daten kann verweigert werden, auch wenn diese Daten gerade noch verfügbar waren.

 
Eugeni Neumoin:


Geben Sie die Terminaleinstellungen zusammen mit dem Code an: Anzahl der Balken im Diagramm.

 
Vladimir Karputov:

Geben Sie die Terminaleinstellungen zusammen mit dem Code an: Anzahl der Balken im Diagramm.

Die Anzahl der Balken ist die Standardeinstellung. Ungefähr 100.000. Und in den obigen Beispielen wird der Zugang zu 271 Bars verweigert.

 
Eugeni Neumoin:

Die Anzahl der Balken ist voreingestellt. Ungefähr 100.000. Und in den obigen Beispielen wird der Zugang zu 271 Bars verweigert.

Wenn man bereits auf H1 arbeitet, ist dies eine vernachlässigbare Anzahl von Balken.

Also: reproduzierbarer Code, Terminaleinstellungen(Anzahl der Balken im Diagramm).


Ohne dieses Minimum gibt es einfach nichts zu diskutieren - denn bisher ist es Luft.

 
Eugeni Neumoin:

Die Anzahl der Balken ist voreingestellt. Ungefähr 100.000. Und in den obigen Beispielen wird der Zugang zu 271 Bars verweigert.

Alle zwei Minuten müssen wir Daten von allen im Indikator verwendeten Zeitrahmen und Symbolen abrufen.

Im Handler OnTimer(), mit anderen Worten - im Timer, einmal alle 90 Sekunden auf alle Timeframes anwenden, die für die Arbeit des Indikators notwendig sind. Sie können jede Kopierfunktion verwenden. Holen Sie sich die Daten einfach "mitten im Nirgendwo", zum Beispiel vom ersten oder aktuellen Balken für jeden verwendeten Zeitrahmen. Dies reicht aus, um alle Daten für alle Zeiträume auf dem neuesten Stand zu halten.

Und prüfen Sie gleich zu Beginn von OnCalculate(), was die Funktion, die auf die Daten der gewünschten Zeiträume zugreift, zurückgibt. Wenn -1 zurückgegeben wird, wird der Vorgang vor dem nächsten Tick beendet.

 
Artyom Trishkin:

Alle zwei Minuten sollten Sie Daten von allen im Indikator verwendeten Zeitrahmen und Symbolen erhalten.

Im Handler OnTimer(), mit anderen Worten - im Timer, alle 90 Sekunden oder so adressieren Sie alle Timeframes, die für die Arbeit des Indikators notwendig sind. Sie können jede Kopierfunktion verwenden. Holen Sie sich einfach "nirgendwo" Daten, zum Beispiel vom ersten oder aktuellen Balken für jeden der verwendeten Zeitrahmen. Dies reicht aus, um alle Daten für alle Zeiträume auf dem neuesten Stand zu halten.

Und überprüfen Sie gleich zu Beginn von OnCalculate(), was von der Funktion zurückgegeben wird, die auf die Daten der gewünschten Zeiträume zugreift. Wenn -1, dann vor dem nächsten Tick beenden.

Kein Problem mit OnCalculate(). Die gesamte GUI funktioniert über OnChartEvent() . Es gibt mehr als 400 Schaltflächen in der grafischen Benutzeroberfläche. Einige der Schaltflächen interagieren in keiner Weise mit der Zeitreihe. Die Funktionen OnCalculate() und OnTrade() können bis zum nächsten Tick warten. Dies ist psychologisch nicht spürbar. Und mit OnChartEvent() ist es noch komplizierter. Hier ist die menschliche Psychologie im Spiel. Der Programmbenutzer drückt die GUI-Taste. Und er/sie bekommt nicht die Antwort, die er/sie sich wünscht. Wie ist seine/ihre Reaktion? Eine der Reaktionen ist, dass er/sie die gleiche Taste ein zweites Mal drückt. Ich habe es so eingerichtet, dass ein zweiter Druck auf viele der Tasten die mit dieser Taste verbundene Funktion deaktiviert. Ich nehme Ihren Vorschlag vorweg, die Funktion der Schaltfläche auf andere Weise zu deaktivieren. Aber es gibt das gleiche Programm für MT4. Dort funktioniert es normal. Es wird sich zeigen, dass MT4 einen Algorithmus für die Interaktion mit der grafischen Oberfläche hat, während MT5 einen anderen hat. Ein solches Verhalten desselben Programms kann nur zur Ablehnung führen.

Ich tat etwas ähnliches, wenn die Übersetzung zu MT5 - ich aktiviert Ausfahrt von OnChartEvent(). Ich will nicht lügen, deshalb ist die GUI gerade gestorben.

Und in meinem Fall erfolgt der Verweis auf die Zeitreihe in OnTimer() nach 5 Minuten. Ich werde es nach 2 Minuten tun. Ich werde prüfen, was passieren wird.

Artem, Ihre Vorschläge waren auch früher schon nützlich.

 
Vladimir Karputov:

Wenn man bereits auf H1 arbeitet, ist die Anzahl der Balken vernachlässigbar.

Also: reproduzierbarer Code, Terminaleinstellungen(Anzahl der Balken im Diagramm).


Ohne dieses Minimum gibt es einfach nichts zu diskutieren - denn bisher ist es Luft.

Bitte mischen Sie sich nicht weiter in die Probleme ein, die ich im Forum anspreche.

Die Kommunikation mit Ihnen war weder vorher noch jetzt von Nutzen.

Sie können etwas in anderen Bereichen des Forums schreiben. Und an meinen Filialen bitte nicht teilnehmen.

 
Artyom Trishkin:

Ich habe alle Zeitrahmen so eingestellt, dass sie alle zwei Minuten aufgerufen werden. Die Überprüfung des Zugriffs auf Zeitrahmen inOnCalculate() scheint keine Schwierigkeiten bei der Programmausführung zu verursachen.

Aber die Überprüfung inOnChartEvent() wirkt sich auf den Vorgang aus. In einigen Fällen weigert sich die grafische Benutzeroberfläche zu arbeiten.

Ich werde beobachten, wie das Programm funktioniert, wenn alle zwei Minuten einmal auf alle tf's zugegriffen wird.

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

Übrigens habe ich einen weiteren Unterschied zwischen MT5 und MT4 gefunden.

Die Anbindung der grafischen Werkzeuge über die grafische Schnittstelle erfolgt an die Anzahl der Zagzag-Extremwerte oder Symbole der Wellenauszeichnung.

Die Bindung wird durchgeführt, wenn das Programm eine Zahl oder ein Symbol "sieht". Lassen Sie mich erklären, was damit gemeint ist. Wenn Sie den Mauszeiger über eine Zahl oder ein Symbol bewegen, wird eine QuickInfo angezeigt.

Wenn der Tooltip erscheint, "sieht" das Programm die Zahl oder das Symbol. Wenn keine QuickInfo vorhanden ist, bleibt die Zahl oder das Symbol unsichtbar. Das grafische Werkzeug ist nicht angeschlossen. Daher wird das grafische Werkzeug nicht in der Tabelle angezeigt.

Wenn z.B. Andrews' Pitchfork bereits an diese Zahl oder dieses Symbol gebunden ist (ich habe es nicht mit anderen grafischen Tools überprüft), erscheint der Tooltip in MT4. Aber der Tooltip erscheint im MT5 nur sehr selten. Wenn ich jedoch die mit der angegebenen Nummer verknüpfte Andrews' Pitchfork ausblende, wird der Tooltip normal angezeigt.

Ich habe das Gefühl, dass MT5 bei der Anzeige des Tooltips weniger empfindlich ist, wenn sich andere grafische Objekte in der Nähe der Zahl befinden. Ich schließe aber nicht aus, dass es daran liegt, dass MT5 einige zusätzliche Zeitreihenaktualisierungen vornehmen muss, die in MT4 nicht verfügbar sind. Diese zusätzlichen Updates können zu einer Verzögerung bei einigen MT5-Funktionen führen. (Dies ist meine Fantasie. Ich kenne das Innenleben von MT5 nicht).

Использование аналитических объектов - Графики котировок, технический и фундаментальный анализ - MetaTrader 5
Использование аналитических объектов - Графики котировок, технический и фундаментальный анализ - MetaTrader 5
  • www.metatrader5.com
Определение трендов, построение каналов, выявление циклов и уровней поддержки/сопротивления — все эти и многие другие задачи решаются при помощи аналитических объектов. Всего в торговой платформе доступно 46 таких инструментов. Среди них имеются геометрические фигуры, различные каналы, инструменты Ганна, Фибоначчи, Эллиотта и многое другое. В...