Wünsche für MT5 - Seite 51

 
Yedelkin:

Erläuterung. Wenn ein Expert Advisor keine Ticks für das Symbol verarbeitet, an dessen Chart er angehängt ist, dann führt die kontinuierliche Erzeugung vonNewTick-Ereignissen für dieses Symbol zu einem Überlauf der Warteschlange der von diesem Expert Advisor verarbeiteten Ereignisse.


https://www.mql5.com/ru/docs/runtime/running

Alle vom Client-Terminal generierten Ereignisse werden in der gemeinsamen Warteschlange gespeichert. Die Ereignisse werden also nacheinander in der Reihenfolge ihres Eingangs verarbeitet. Die einzige Ausnahme ist das Ereignis NewTick. Befindet sich bereits ein Ereignis in der Warteschlange oder wird das Ereignis gerade verarbeitet, wird ein neues NewTick-Ereignis nicht in die Warteschlange gestellt.

Die Ereigniswarteschlange hat eine begrenzte Größe. Wenn die Warteschlange voll ist, werden alte Ereignisse ohne Bearbeitung entfernt, um Platz für neue Ereignisse zu schaffen. Aus diesem Grund wird dringend empfohlen, effiziente Ereignisbehandlungsprogramme zu schreiben und keine Endlosschleifen zu verwenden (außer bei Skripten, die ein einzelnes Startereignis behandeln).

Документация по MQL5: Программы MQL5 / Выполнение программ
Документация по MQL5: Программы MQL5 / Выполнение программ
  • www.mql5.com
Программы MQL5 / Выполнение программ - Документация по MQL5
 
Rosh:

https://www.mql5.com/ru/docs/runtime/running

Der Client-Terminal speichert alle auftretenden Ereignisse in einer gemeinsamen Warteschlange. Auf diese Weise werden die Ereignisse nacheinander in der Reihenfolge ihres Eingangs verarbeitet. Die Ausnahme ist das Ereignis NewTick. Befindet sich bereits ein Ereignis in der Warteschlange oder wird das Ereignis gerade verarbeitet, wird kein neues NewTick-Ereignis in die Warteschlange gestellt.

Die Ereigniswarteschlange hat eine begrenzte Größe. Wenn die Warteschlange voll ist, werden alte Ereignisse ohne Bearbeitung entfernt, um Platz für neue Ereignisse zu schaffen. Aus diesem Grund wird dringend empfohlen, effiziente Ereignisbehandlungsprogramme zu schreiben und keine Endlosschleifen zu verwenden (eine Ausnahme bilden Skripte, die ein einzelnes Startereignis behandeln).

Somit gilt die Regel "ein NewTick-Ereignis für die gesamte gemeinsame Warteschlange" immer, unabhängig vom Vorhandensein oder Nichtvorhandensein der Funktion OnTick() im EA. Danke für die Klarstellung!

Es gibt noch eine Frage zur Abschaltung der unnötigen Tick-Erzeugung im Prüfgerät.

 

Yedelkin:

Es bleibt die Frage, wie man die Erzeugung unnötiger Häkchen im Prüfgerät unterbinden kann.

Verarbeiten Sie sie dort nicht, dann ist logischerweise alles in Ordnung.

 
Interesting:

Verarbeiten Sie sie dort nicht, dann ist logischerweise alles in Ordnung.

Ich gehe davon aus, dass die Häkchen im Tester zwangsweise über den gesamten Test-/Optimierungszeitraum erzeugt werden. Sind Sie damit einverstanden? Wenn dies der Fall ist, werden die Ticks zwangsweise für das Symbol generiert, an das der Expert Advisor angehängt ist, und die (Ticks) werden von diesem EA nicht verarbeitet. D.h. obwohl es für dieses Symbol keine Tick-Verarbeitung gibt (Ihr Vorschlag), wird der Prüfer Zeit mit der Tick-Erzeugung verschwenden. Wenn ich etwas nicht verstehe, bin ich gerne bereit, Neues zu lernen.

 
Yedelkin:

Nun, ich sage es Ihnen noch einmal: Der Expert Advisor arbeitet überhaupt nicht mit dem Symbol, an das er angehängt ist. Und er muss keine SL und TP für dieses Symbol verfolgen. Das heißt, der Expert Advisor benötigt keine Ticks für dieses Symbol. EA wird nur bei Bedarf an das Symbol angehängt, da es zumindest irgendwo angehängt sein muss, um zu laufen.

Ähm ... Und warum sollten Sie den Expert Advisor mit einem Symbol testen, mit dem Sie nicht handeln? Testen Sie denjenigen, mit dem Sie handeln wollen.

Und wenn Sie überhaupt nicht handeln müssen, dann brauchen Sie auch nicht zu testen - arbeiten Sie mit dem Kursverlauf des in Echtzeit laufenden EA.

 
Rosh:

Der Client-Terminal speichert alle auftretenden Ereignisse in einer gemeinsamen Warteschlange. Auf diese Weise werden die Ereignisse nacheinander in der Reihenfolge ihres Eingangs verarbeitet.

Rashid, was passiert mit den Ereignissen, die nicht vom EA/Skript/Indikator behandelt werden? Genau darum ging es in der Frage.

Werden sie wirklich in die Warteschlange gestellt und erst wieder entfernt, wenn die Verarbeitung des Ereignisses, für das die Antwort bestimmt ist, aktiviert wird?

Oder habe ich immer noch Recht, wenn ich davon ausgehe, dass jeder seine eigene Warteschlange hat und dort nur die Ereignisse gesammelt werden, die bearbeitet werden müssen?

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - Документация по MQL5
 
Yedelkin:

Ich gehe davon aus, dass die Häkchen im Tester zwangsweise erzeugt werden, und zwar für die gesamte Test-/Optimierungsphase. Sind Sie damit einverstanden? Wenn ja, werden die Ticks zwangsweise für das Symbol generiert, an das der EA angehängt ist, und die (Ticks) werden von diesem EA nicht verarbeitet. D.h. trotz der fehlenden Verarbeitung von Ticks für dieses Symbol (Ihr Vorschlag), wird der Tester seine Zeit damit verschwenden, sie zu generieren. Wenn es etwas gibt, das ich nicht verstehe, bin ich gerne bereit, neue Dinge zu lernen.

Sprechen wir für den Modus "Alle Zecken".

Ich verstehe, dass sie nicht nur zwangsweise erzeugt werden, und alle Symbole ausgewählt und in der Expert Advisor gehandelt (keine Möglichkeit, ohne sie).

Ticks auf dem in den Tester-Einstellungen ausgewählten Symbol (Hauptsymbol) können in OnTick behandelt werden oder nicht (in diesem Fall, wenn diese Art von Ereignis bereits behandelt wird oder in der Warteschlange vorhanden ist, wird es ihr nicht hinzugefügt).

Zumindest habe ich die Logik des Entwicklers so verstanden.

Anhand der von Ihnen beschriebenen Aufgabe erhalten wir Informationen über die Ticks der zusätzlichen Symbole mit den benutzerdefinierten Ereignissen, die sich auf das ChartEvent beziehen. Das ChartEvent gelangt in die Warteschlange und wird ausgeführt oder gelöscht, wenn diese voll ist.

Aus den obigen Ausführungen wird deutlich, dass, wenn die Verarbeitung von Ticks von "zusätzlichen Symbolen" (außerhalb des Expert Advisors) ineffektiv durchgeführt wird, die ChartEvent-Verarbeitung ein Problem darstellt und den gesamten Stapel der Ereignis-Warteschlange verschmutzen wird.

Ich verstehe zwar die Logik Ihres Expert Advisors nicht ganz, aber unter diesen Bedingungen würde ich einen Block in einen Timer einbauen, um Informationen über die Preise aller Symbole und andere wichtige Informationen über zusätzliche Symbole zu sammeln. Und mit ChartEvent würde ich nur Informationen über das Erscheinen eines neuen Balkens übertragen.

Sie können auch Informationen über andere Symbole im OnTick-Block verarbeiten (wenn dieser verwendet wird), wie es in MT4 der Fall ist. Aber der Timer hat hier einen gewissen Vorteil, denn der Timer wird periodisch abgearbeitet und nicht mehr als einmal pro Sekunde.

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Типы событий графика - Документация по MQL5
 
komposter:

Rashid, was passiert mit Ereignissen, die nicht vom EA/Skript/Indikator behandelt werden? Das war doch die Frage, oder?

Werden sie wirklich in eine Warteschlange gestellt und erst wieder entfernt, wenn die Verarbeitung des Ereignisses, für das die Antwort bestimmt ist, aktiviert wird?

Oder habe ich immer noch Recht, wenn ich davon ausgehe, dass jeder seine eigene Warteschlange hat und dort nur die Ereignisse gesammelt werden, die bearbeitet werden müssen?

Soweit ich das verstanden habe, werden die Ereignisse in der Warteschlange "fallengelassen", wenn ein neues Ereignis eintrifft (wenn die Warteschlange voll ist).
 
komposter:

Rashid, was passiert mit Ereignissen, die nicht vom EA/Skript/Indikator behandelt werden? Das war doch die Frage, oder?

Werden sie wirklich in eine Warteschlange gestellt und erst dann aus dieser entfernt, wenn die Ereignisverarbeitung, für die die Antwort bestimmt ist, aktiviert wird?

Oder habe ich immer noch Recht, wenn ich annehme, dass jede Warteschlange ihre eigene hat und nur die Ereignisse, die verarbeitet werden müssen, dort gesammelt werden?

Antwort der Entwickler:

Jeder Expert Advisor/Skript/Indikator hat seine eigene Warteschlange. Natürlich wird nichts in der Warteschlange eingefroren, wenn der Handler nicht verfügbar ist. Nun, wenn es keinen Handler gibt, wird er ausgelesen und übersprungen.

 
komposter:

Ähm ... Warum sollten Sie einen EA auf einem Instrument testen, mit dem Sie nicht handeln?

Wahrscheinlich haben Sie meine Beiträge nicht aufmerksam gelesen, in denen ich das Funktionsprinzip bereits dargelegt habe. Ich schlage vor, das Thema an dieser Stelle zu beenden.

Ich möchte erklären, warum ich das getan habe, aber auf jeden Fall danke, ich habe mit Ihrer Hilfe viel gelernt.