Das Problem der Umstellung von MT4 auf MT5. Oder, genauer gesagt, die Unfähigkeit, einige Algorithmen in MT5 ohne Fehler auszuführen. - Seite 4
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Es gibt 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() wird 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 schon früher nützlich.
Nein, es wird sicherlich keine Vorschläge geben, die Logik der Arbeit mit Grafiken zu ändern - der plattformübergreifende Code sollte auf dieselbe Weise funktionieren.
Wenn der Benutzer auf die Schaltfläche geklickt hat, aber nichts sieht, kann es durchaus sein, dass tatsächlich alles vorhanden ist, nur die Grafik noch nicht aktualisiert wurde (sie aktualisiert sich erst mit dem Eintreffen des Häkchens).
Nein, es wird sicherlich nicht vorgeschlagen, die Grafiklogik zu ändern - der plattformübergreifende Code sollte auf dieselbe Weise funktionieren.
Das Einzige, was ich vorschlagen kann, um die Schaltflächen zu verbessern, ist, dass es in jedem Fall, wenn die erforderliche Zeitreihe noch nicht verfügbar ist, nicht möglich ist, eine Grafik auf ihren Daten zu erstellen. In diesem Fall müssen wir den Moment abwarten, in dem die Daten verfügbar sind, und die Schaltflächen während der Wartezeit inaktiv machen - zum Beispiel ähnlich wie bei Windows-Oberflächen: Wenn keine Aktion auf der Schaltfläche verfügbar ist, wird die Schaltfläche ausgegraut. Diese Logik kann für beide Plattformen vorhanden sein, so dass es keinen Unterschied im Code gibt.
Ich habe ChartRedraw() ausgelöst, wenn ich große Blöcke verlasse, z.B. OnChartEvent() und andere. An dieser Funktion ist also nichts auszusetzen.
Über Tooltips. Sie sind wie ein Indikator dafür, dass alles funktioniert, wenn Sie auf eine Zahl oder ein Symbol klicken.
Wenn Sie auf die Zahl und das Symbol klicken, muss eines der Elemente OnChartEvent() - CHARTEVENT_OBJECT_CLICK ausgelöst werden. Sie wird nicht ausgelöst, wenn der Tooltip nicht erscheint. Ich würde gerne wissen, warum das passiert. CHARTEVENT_OBJECT_CLICK funktioniert nicht .
Und ich werde den Zugang zu Zeitreihen genau im Auge behalten.
Ich habe ChartRedraw() ausgelöst, wenn ich große Blöcke verlasse, z.B. OnChartEvent() und andere. An dieser Funktion ist also nichts auszusetzen.
Über Tooltips. Sie sind wie ein Indikator dafür, dass alles funktioniert, wenn Sie auf eine Zahl oder ein Symbol klicken.
Wenn Sie auf die Zahl und das Symbol klicken, muss eines der Elemente OnChartEvent() - CHARTEVENT_OBJECT_CLICK ausgelöst werden. Sie wird nicht ausgelöst, wenn der Tooltip nicht erscheint. Ich würde gerne wissen, warum das passiert. CHARTEVENT_OBJECT_CLICK funktioniert nicht .
Und ich werde den Zugang zu Zeitreihen genau im Auge behalten.
Loggen Sie ganz am Anfang des Graph Event Handlers den Parameter sparam - dann wird jede Aktion protokolliert. Dann beginnen Sie, die Ausgabe einzuschränken - wenn es ein Objektklick-Ereignis gibt (id==CHARTEVENT_OBJECT_CLICK), dann geben Sie sparam in das Protokoll aus. Und so kommen Sie langsam zur Ursache.
Loggen Sie ganz am Anfang des Graph Event Handlers den Parameter sparam - dann wird jede Aktion protokolliert. Dann beginnen Sie, die Ausgabe einzuschränken - wenn es ein Objektklick-Ereignis gibt (id== CHARTEVENT_OBJECT_CLICK), dann geben Sie sparam in das Protokoll aus. Und so kommen Sie langsam zur Ursache.
Um Probleme mit der Zahlen- und Symbolbindung zu vermeiden, müssen Sie die Priorität von Zahlen und Symbolen mit OBJPROP_ZORDER erhöhen.
In MT4 funktioniert es auch ohne diese Funktion. Allerdings habe ich die Priorität in MT4 vorsichtshalber erhöht. Außerdem hatten die Wellensymbole einen höheren Stellenwert als die Zahlen.
Ich habe das Problem gelöst.
Ich versuche, alle Zeitreihen nach 2 Minuten zu ändern - ich wähle verschiedene Varianten für eine möglichst reibungslose Durchführung dieser Aufgabe.
Der Prozess hat begonnen...
Um Probleme mit der Zahlen- und Symbolbindung zu vermeiden, müssen Sie die Priorität von Zahlen und Symbolen mit OBJPROP_ZORDER erhöhen.
In MT4 funktioniert es auch ohne diese Funktion. Allerdings habe ich die Priorität in MT4 vorsichtshalber erhöht. Außerdem hatten die Wellensymbole einen höheren Stellenwert als die Zahlen.
Ich habe das Problem gelöst.
Ich versuche, alle Zeitreihen nach 2 Minuten zu ändern - ich wähle verschiedene Varianten für eine möglichst reibungslose Durchführung dieser Aufgabe.
Der Prozess hat begonnen...
Glätte ist hier keine Option :)
Es gibt Bremsen.
Aber wir müssen uns mit dem begnügen, was wir haben.
Es ist unmöglich, die Unermesslichkeit zu begreifen).
Glätte ist hier keine Option :)
Es ist unmöglich, sie zu trennen. Wenn mindestens ein Handel nicht aktualisiert wird, kann der Indikator einige grafische Konstruktionen falsch darstellen.
Andererseits habe ich die Verfügbarkeit von Zeitreihen vor OnCalculate und OnChartEvent überprüft. Wie vorgeschlagen.
Die Aktualisierung von Zeitreihen und die Überprüfung der Verfügbarkeit von Zeitreihen verursachen erhebliche Verzögerungen.
Es kommt immer noch zu Unterbrechungen beim Zugriff auf die Zeitreihe. Wie ich bereits bei der Erstellung des Zweigs in einem der ersten Beiträge sagte. Dies bestätigt, dass wir die Zeitreihen programmatisch aktualisieren müssen.
Dies ist die erste.
Zweitens. Warum muss sich jeder Entwickler die Mühe machen, den Zugriff auf Zeitreihen zu organisieren?
Warum gibt es nicht irgendeinen zusätzlichen "Mechanismus", der diese Schwierigkeiten beseitigt?
Wenn jemand diesen Ärger braucht, verbietet ihm niemand, das zu benutzen, was jetzt verfügbar ist. Und für diejenigen, die der Meinung sind, dass ein universeller alternativer Zugang zu Zeitreihen in Ordnung ist, ist es besser, wenn dieser Zugang von den Entwicklern gemacht wird.
Mehrere Leute haben mich gebeten, ein Programm von MT4 nach MT5 zu übersetzen. Ich habe es getan. Ich bin mit der Übersetzung nicht zufrieden. Aber solange ich das Programm heruntergeladen habe, habe ich keine Beschwerden. Vielleicht sind sie ja damit zufrieden. Obwohl ich das bezweifle.
Ich möchte noch etwas von meiner Seite hinzufügen. Ich habe aufgehört, mit der Optimierung des Zugriffs auf Zeitreihen zu experimentieren. Dies ist eine unproduktive Nutzung der Zeit. Es gibt noch mehr interessante Dinge zu tun. Diejenigen, die daran interessiert sind, sollten mit MT5 arbeiten. Das Einzige, was aus MT5 herausgekaut werden kann, ist die Kurshistorie. Für den Einsatz im NS-Unterricht.
Andererseits wurde die Verfügbarkeit der Zeitreihen vor den Funktionen OnCalculate und OnChartEvent geprüft. Wie vorgeschlagen.
Die Aktualisierung von Zeitreihen und die Überprüfung der Verfügbarkeit von Zeitreihen führt zu starken Verlangsamungen.
Es wurde vorgeschlagen, dies mit einer Zeitschaltuhr alle anderthalb Minuten zu tun. Nicht vor jedem Tick, und schon gar nicht bei einem Chart-Ereignis.
Der Zugang zu Zeitreihen im MT5 ist wirklich nicht ideal. Aber wenn Sie ein Problem lösen müssen, anstatt eine Ausrede zu finden, ist es möglich.