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
Versuchen Sie, das Terminal auf Version 1065 zu aktualisieren. Bei früheren Versionen trat ein Fehler bei der Neuinitialisierung auf, wenn der Zeitrahmen geändert wurde. Könnte helfen :)
https://www.mql5.com/ru/forum/187690
Ich habe Terminal 5.00 b1571
Sie können die Variablenwerte irgendwo speichern, z. B. in Globals, und sie nach der Übersetzung auslesen und wiederherstellen.
Und dann wird Deinit sein Werk vollenden und alles verderben. Es macht keinen Sinn, ein reguläres Init und Deinit zu verwenden, wenn Sie Ihr eigenes Init und Deinit erstellen.
Dieses Problem ist auch bei mir aufgetreten. (
Und dann wird Deinit sein Werk vollenden und alles ruinieren. Es macht keinen Sinn, ein reguläres Init und Deinit zu verwenden, wenn Sie Ihr eigenes Init und Deinit erstellen.
Dieses Problem ist auch bei mir aufgetreten. (
Ich stimme voll und ganz zu (kein Sinn in regelmäßigen Init und Deinit)
Versuchen Sie vielleicht, grafischen Objekten einen TF-Punkt als Teil ihres Namenspräfixes zuzuweisen,
und dann etwas wie dieses anwenden:
Ja, so etwas musste ich tun, aber das ist nur eine Teillösung.
Sie können dasselbe mit Variablen über eine Ressource oder Dateien tun, aber dies ist eine separate zusätzliche Ressource, die durch die Korrektur von MT5 hätte vermieden werden können
Überfrachtung des Codes mit unnötigen Nebenfunktionen, Prüfungen usw. (WITHOUT....)
Ich habe immer gedacht (vergeblich), dass ich bei einem Wechsel der TF zuerst die alte TF deinitiere und dann Init auf der neuen. Dies ist ein logischer Ablauf, auf den ich mich bei der Entwicklung von Expert Advisors und Indikatoren verlassen habe. Und nun stellt sich heraus, dass es sich um einen echten Unsinn mit Störungen der Ereignisfolge handelt...
Bei der Arbeit mit Diagrammen und grafischen Objekten fiel mir manchmal auf, dass etwas nicht stimmte, und ich musste mehrmals zwischen den TFs wechseln, um zu sehen, ob alles richtig angezeigt wurde.
Jetzt sind es die Codes, bei denen sich etwas in den deinites ändert und dann ändern sich auch die inites zurück... und es stellt sich heraus, dass die Reihenfolge umgekehrt ist!!! Das ist einfach eine schreckliche Logik. Wer hat sich das ausgedacht?
Das erste, was mir in den Sinn kommt, ist, dass in meinem Deinit der vorherige Zustand (gedrückte/freigegebene Tasten) in den globalen Variablen gespeichert wird und dann die Tasten entsprechend den gespeicherten Werten in den Inits gesetzt werden. Und es sind die Tasten, die sich nicht immer korrekt zurücksetzen lassen. Das ist das erste, woran ich mich erinnere, vielleicht finde ich ja noch etwas anderes... Ich werde mich morgen umsehen.
Vielen Dank an die Entwickler, sie haben sich viel Mühe gegeben...
In Deinit alle Daten in Globals schreiben. Setzen Sie eine der Globals als Semaphore überGlobalVariableSetOnCondition.
In Init write, wenn der Semaphorstatus "data dumped" ist, dann lesen und arbeiten, indem der Semaphor auf "read all" gesetzt wird.
Wenn die Semaphore "unverständlich" ist, warten wir einfach auf die Semaphore (entweder durch eine Schleife Sleep oder OnTimer).
Wenn es überhaupt keine Semaphore gibt, bedeutet das, dass wir zum ersten Mal starten und alles zählen und gleichzeitig eine Semaphore für die nicht zukünftige Änderung der TF erstellen.
Was ist so kompliziert an einer solchen Umsetzung? Einmal mit einer Bibliothek verschreiben und das war's.
In Deinit alle Daten in Globals schreiben. Setzen Sie eine der Globals als Semaphore überGlobalVariableSetOnCondition.
In Init write, dass, wenn die Semaphore im "data dumped"-Status ist, wir lesen und arbeiten, indem wir die Semaphore auf "read all"-Status setzen.
Wenn die Semaphore "unlesbar" ist, warten wir einfach auf die Rückkehr der Semaphore (entweder über die Schleifen Sleep oder OnTimer).
Was ist so kompliziert an einer solchen Umsetzung? Einmal in der Bibliothek schreiben und das war's.
Ich wusste gar nicht, dass es ein solches Problem gibt. Ich hatte auf eine Deiniti-Init-Sequenz gehofft und nicht auf eine umgekehrte. Wenn man die Probleme kennt, kann man sie auch lösen. Aber es scheint mir, dass es auf der Ebene der Terminal-Logik gelöst werden sollte und nicht mit Krücken, die jetzt in jedes Programm eingefügt werden sollen...
Dies ist keine Krücke, sondern eine einfache Lösung. Die Frage ist nur, wer sie umsetzt - die Entwickler oder die Nutzer. In beiden Fällen müssen Sie Zeit investieren und den Text einmal schreiben. Wenn die Benutzer es können, haben wir es geschrieben und brauchen die Frage nicht mehr zu diskutieren. Ich habe den Thread gerade selbst gelesen, und mir kam sofort eine Lösung in den Sinn. Was gibt es da zu erforschen? Man kann etwas lange verlangen oder es schnell selbst schreiben.