Leinwand ist cool! - Seite 81

 
Dmitry Fedoseev mit Gegenständen zu arbeiten.

Die Lösung des Problems liegt in der EA:

Vielleicht wird ObjectFind() nicht benötigt.

Wenn Sie den Code mit dem Problem angehängt hätten, wäre das Problem schon gestern gelöst worden

Das ist überhaupt nicht das Problem.
Dieses Problem (OnChartEvent freezing ) gibt es nur in MT4, und es ist überhaupt nicht offensichtlich. Ich habe mich selbst sehr lange gequält. Aber es wurde schon vor einem Jahr in diesem Thread diskutiert.

 
Nikolai Semko #:

Das ist überhaupt nicht das Problem.
Dieses Problem besteht nur im MT4, und es ist überhaupt nicht offensichtlich. Ich habe mich selbst sehr lange gequält. Aber es wurde in diesem Thread schon vor etwa einem Jahr diskutiert.

Ich weiß überhaupt nicht, was das Problem ist, ich habe nur geschrieben, was es verursacht und wie es gelöst wird. Aber Sie können weiter leiden...

 
Dmitry Fedoseev #:

Und ich weiß gar nicht, was das Problem ist, ich habe nur geschrieben, was es verursacht und wie es gelöst wird. Aber Sie können weiter leiden.

Diese Worte sollten in Stein gemeißelt sein! :))
 
Dmitry Fedoseev #:

Und ich weiß gar nicht, was das Problem ist, ich habe nur geschrieben, was es verursacht und wie es gelöst wird. Aber Sie können weiter leiden.

Das Deunit-Problem hat damit nichts zu tun. Dieses Problem tritt nur im MT5 auf. Und wir sprechen hier von MT4.

 
Nikolai Semko #:

Sie sind ein seltsamer Mensch.
Sie selbst wollen, dass andere Ihren Code und Hunderte von Zeilen verstehen, wenn Sie eine Frage stellen, aber Sie versuchen nicht einmal, in die Antwort einzudringen und in den Code von hundert Zeilen zu schauen.

Okay. Ich werde das Leben einfacher machen.
Übersetzen Sie den gesamten Code von OnChartEvent in OnTimer. Setzen Sie den Timer auf 30 Millisekunden. Sie müssen nur globale Variablen (nicht Terminal) eingeben, die in OnChartEvent aktualisiert und in OnTimer zurückgesetzt werden sollen (die bool sind) .
Variablen können
wie folgt sein

Das war mir gar nicht so klar. Aus dem Link, den ich vorhin angegeben habe, habe ich gelernt, dass das Problem alt ist und seine Lösung sogar von Autoren mit mehr als 10 000 Verkäufen auf dem Markt mehr als einmal gesucht wurde.

Und dies gilt für alle MT4 Expert Advisors mit Objekten, was bedeutet, dass eine große Anzahl von Benutzern mit diesem Problem konfrontiert ist. Sie schreiben die Autoren auf dem Markt an, und sie kennen die Lösung nicht. Deshalb war es so wichtig, dieses Problem zu lösen.

Wenn ich mir das GIF (proof of workability) ansehe, bin ich entschlossen, diesen Ansatz in meinen Produkten umzusetzen. Ich werde mich wahrscheinlich hinsetzen und experimentieren und morgen berichten.
 
Vitaliy Kuznetsov #:

Für mich war es gar nicht so offensichtlich. Aus dem Link, den ich vorhin angegeben habe, erfuhr ich, dass das Problem alt ist und seine Lösung sogar von Autoren mit mehr als 10 000 Verkäufen auf dem Markt mehr als einmal gesucht wurde.

Und dies gilt für alle MT4 Expert Advisors mit Objekten, was bedeutet, dass eine große Anzahl von Benutzern mit diesem Problem konfrontiert ist. Sie schreiben die Autoren auf dem Markt an, und sie kennen die Lösung nicht. Deshalb war es so wichtig, dieses Problem zu lösen.

Mit Blick auf die GIF bin ich entschlossen, diesen Ansatz in meinen Produkten umzusetzen. Ich werde mich wahrscheinlich hinsetzen, experimentieren und morgen Bericht erstatten.

Vielleicht kann dasselbe im Expert Advisor gemacht werden.
Aber es funktioniert ohne Verzögerungen.

 
Nikolai Semko #:

Vielleicht kann das Gleiche im EA gemacht werden.
Aber es funktioniert ohne Verzögerungen.

Erstens: Danke!

Hmm, es scheint innerhalb des gegebenen Codes zu funktionieren. Aber immer noch Konflikte mit EAs. Zum Beispiel mit diesem hier - https://www.mql5.com/ru/code/35440.

Ich habe es auch mit anderen EAs überprüft. Ich sollte versuchen, den Code des EAs zu verbessern. Das Problem ist immer noch relevant.
cm partial closing position
cm partial closing position
  • www.mql5.com
Советник закрывает позиции частями и переводит их в безубыток.
 
Vitaliy Kuznetsov #:

Erstens: Danke!

Hmm, es scheint zu funktionieren innerhalb der gegebenen Code. Aber immer noch Konflikte mit EAs. Zum Beispiel mit diesem hier - https://www.mql5.com/ru/code/35440.

Ich habe es auch mit anderen EAs überprüft. Ich sollte versuchen, den Code des EAs zu verbessern. Es ist immer noch ein Problem.

Ich sehe keine Lags.
Ja, Sie sollten auch den Code im EA so anpassen, dass es keine Berechnungen in OnChartEvent gibt.
Die Regel ist einfach:
- globale Variablen (nicht Terminal) von Ereignissen und Koordinaten sollten in OnChartEvent gefüllt werden, aber keine Funktionen mit umständlichen Berechnungen davon ausführen .
- Alle Aufrufe solcher Funktionen sollten aus dem Timer entsprechend den Ereignisvariablen erfolgen,
- nachdem die Ereignisse verarbeitet wurden, sollten Sie daran denken, diese Ereignisse im Timer zurückzusetzen, damit Sie bei der nächsten Iteration des Timers nicht dasselbe noch einmal ausführen.

Ich wiederhole - dies ist ein Fehler von OnChartEvent Einfrieren nur in MT4

Das Lustige ist, dass, wenn MQ wird diesen Fehler zu beheben, die offenbar elementar ist ( OnChartEventeinfriert, wenn etwa 10 Millisekunden Berechnungen darin stattfinden) und so einfach mit Hilfe eines Timers behoben wird, dann werden viele Leute nach dem Neukompilieren ihrer Indikatoren oder Expert Advisors, in denen OnChartEvent aktiv verwendet wird, feststellen, dass alles fliegt:)))
Oder vielleicht ist es ein künstlicher Bug, um die Leute zum Umstieg auf MT5 zu bewegen ;))))

 
Nikolai Semko #:

Ich sehe keine Verzögerungen.
Ja, Sie sollten auch den Code im EA so anpassen, dass es keine Berechnungen in OnChartEvent gibt .
Die Regel ist einfach:
- globale Variablen (nicht Terminal) von Ereignissen und Koordinaten sollten in OnChartEvent gefüllt werden, aber keine Funktionen mit umständlichen Berechnungen davon ausführen .
- Alle Aufrufe solcher Funktionen sollten aus dem Timer entsprechend den Ereignisvariablen erfolgen,
- nachdem die Ereignisse verarbeitet wurden, sollten Sie daran denken, diese Ereignisse im Timer zurückzusetzen, damit Sie bei der nächsten Iteration des Timers nicht dasselbe noch einmal ausführen.

Ich wiederhole - dies ist ein Fehler von OnChartEvent Einfrieren nur in MT4

Das Lustige ist, dass, wenn MQ wird diesen Fehler zu beheben, die offenbar elementar ist ( OnChartEventeinfriert, wenn etwa 10 Millisekunden Berechnungen darin stattfinden) und so einfach mit Hilfe eines Timers behoben wird, dann werden viele Leute nach dem Neukompilieren ihrer Indikatoren oder Expert Advisors, in denen OnChartEvent aktiv verwendet wird, feststellen, dass alles fliegt:)))
Oder vielleicht ist es ein künstlicher Bug, um die Leute zum Umstieg auf MT5 zu bewegen ;))))

Es stellt sich heraus, dass die Methode der normalen Indikator-Code-Verbesserung den Konflikt mit EAs in geschlossenem Code, die Objekte verwenden, nicht lösen kann.

Ich hoffe, dass die Verbesserung des EAs den Konflikt mit allen Dashboard-Indikatoren global lösen wird (was meine Aufgabe ist).

Ich habe in dem MT4 build 1353 Thread geschrieben, vielleicht werden die Terminal-Programmierer darauf achten.

P.S. Ich habe Änderungen in den Eulen und etwas Skis nicht gehen ...

 
Vitaliy Kuznetsov #:


P.S. Edited die Eulen und etwas Skier nicht gehen....

Sind Sie sicher, dass in OnChartEvent nichts mit Schleifen und Aufrufen anderer Funktionen übrig ist?
Messen Sie
mit GetMicrosecondCount() die Berechnungszeit dessen, was in OnTimer (oder OnChartEvent ) passiert.

Grund der Beschwerde: