Wünsche für MT5 - Seite 50

 

Yedelkin:

Nun, weil das Handbuch sagt, dass"das NewTick-Ereignis erzeugt wird wenn ein neuer Tick für das Symbol empfangen wird, an das der EA auf dem Diagramm angehängt ist", sollte der Empfang neuer Ticks zur Erzeugung vonNewTick-Ereignissen führen.

Der Frage nach zu urteilen, denken Sie, dass keine NewTick-Ereignisse erzeugt werden, wenn OnTick() deaktiviert ist? Im Referenzhandbuch habe ich solche Informationen jedoch nicht gefunden.

So sehe ich das auch - wenn es keinen Handler gibt, wird das Ereignis nicht in die Warteschlange gestellt. Das ist logisch, und ich sehe keinen Grund, darüber in der Hilfe zu schreiben.

Der Expert Advisor generiert eine große Anzahl von Ereignissen (Handelsereignisse, aus einem Chart, etc.), es ist nicht notwendig, sie alle zu verarbeiten.

Würden alle Ereignisse (auch die unbehandelten) in eine Warteschlange gestellt, würden einige EAs nicht funktionieren - ihr Ereignis würde nicht in die Warteschlange gelangen (z. B. wenn sie nur einmal täglich mit dem Timer arbeiten).

 
komposter:

Ich sehe das so: Wenn es keinen Handler gibt, wird das Ereignis nicht in die Warteschlange gestellt. Das ist logisch, und ich sehe keinen Grund, darüber in der Hilfe zu schreiben.

Der Expert Advisor erzeugt eine große Anzahl von Ereignissen (Handelsereignisse, Chart-Ereignisse usw.), die nicht alle verarbeitet werden müssen.

Würden alle Ereignisse (auch die unbehandelten) in dieselbe Warteschlange gestellt, könnten einige Expert Advisors nicht arbeiten - ihr Ereignis würde nicht in die Warteschlange gelangen (z. B. wenn der Timer nur einmal am Tag funktioniert).

Meiner Meinung nach müssen die beiden Arten von Ereignissen (NewTick und Timer) getrennt von den anderen verarbeitet werden.

Wahrscheinlich sollten wir auch Handelsereignisse (Trade) und Ereignisse für die Verarbeitung der Markttiefe (BookEvent) trennen.

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

Lizar, interessant,

Ich habe mich in den Schlussfolgerungen des Testerbetriebs geirrt. Offensichtlich habe ich die Demoprotokolle mit den Protokollen der Tester verwechselt. Die Gestaltung der

void OnChartEvent(const int id,           
                const long& lparam,   
                const double& dparam, 
                const string& sparam  
                )
  {
   if(id==CHARTEVENT_CUSTOM) TesterWithdrawal(1);
  }

funktioniert bei mir noch nicht. Es deutet darauf hin, dass das BenutzerereignisCHARTEVENT_CUSTOM von den Indikatoren auf den fremden Symbolen entweder nicht empfangen oder nicht verarbeitet wird.

 
komposter:

Ich glaube, dass dies der Fall ist - wenn es keinen Handler gibt, wird das Ereignis nicht in die Warteschlange gestellt.

Es wäre schön, wenn diese Version bestätigt würde. Aber für den Prüfer werden trotzdem Häkchen erzeugt. Selbst wenn sie absolut unnötig sind.

komposter:

Das ist logisch, und ich sehe keinen Grund, dies in der Hilfe zu erwähnen.

Vielleicht ist es logisch, aber nicht für jeden. Die Entwickler haben den Nutzern wiederholt vorgeworfen, zu viel nachzudenken. Daher versuche ich, meine Schlussfolgerungen nur auf die derzeit verfügbaren Informationen zu stützen. Wie bereits erwähnt, heißt es im Handbuch, dassdas NewTick-Ereignis erzeugt wird, wenn einneuer Tick für das Symbol empfangen wird, an dessen Chart der Expert Advisor angehängt ist. Da ich keine Ausnahmeklausel gefunden habe, bin ich zu dem Schluss gekommen, dass der Empfang neuer Ticks die Erzeugung vonNewTick-Ereignissen verursachen muss.

komposter:

Der Expert Advisor generiert eine große Anzahl von Ereignissen (Handelsereignisse, aus dem Chart, etc.), es ist nicht notwendig, sie alle zu verarbeiten.

Um sicherzustellen, dass dasNewTick-Ereignis nicht behandelt wird, schlage ich vor, eine Switch-Funktion zu erstellen. Der Expert Advisor kann selbst entscheiden, ob er die Generierung vonNewTick-Ereignissen durch das Terminal benötigt. Mein Expert Advisor sollte nur mit "fremden" Signalen arbeiten, aber er muss trotzdem an einen Chart gebunden sein. Und es stellt sich zum Beispiel heraus, dass während des Testens/Optimierens eine gewisse Zeit damit verbracht wird, Ticks für das Symbol zu erzeugen, an das der Expert Advisor angehängt ist, während der Expert Advisor diese Ticks (und NewTick-Ereignisse) gar nicht benötigt.
 
Yedelkin:

Aber für den Prüfer werden trotzdem Häkchen erzeugt. Auch wenn sie völlig unnötig sind.

Was bedeutet das? Und es wird geprüft, ob die Orders (Pending, SL und TP) zu welchen Preisen ausgelöst werden?

Im Tester benötigen wir Ticks für alle Symbole, mit denen der Expert Advisor handelt. Je größer die Anzahl der Instrumente und je höher die Qualität der Modellierung ist, desto langsamer ist der Vorgang natürlich.


Yedelkin:

Und im Moment, wie oben erwähnt, sagt das Handbuch, dass"das NewTick-Ereignis erzeugt wird, wenn ein neuer Tick für das Symbol eintrifft, an dessen Chart der Expert Advisor angehängt ist". Ich habe keine Ausnahmeklausel zu dieser Regel gefunden und bin daher zu dem Schluss gekommen, dass das Eintreffen neuer Ticks dasNewTick-Ereignis erzeugen sollte.

Ja, aber nach dieser Logik sollten alle anderen Ereignisse auf dieselbe Weise in die Warteschlange gestellt werden. Das wäre zu viel.

 
komposter:

Wie das? Und es wird die Auslösung von Aufträgen (Pending, SL und TP) zu welchen Kursen prüfen?

Nun, ich wiederhole: der EA funktioniert nicht mit dem Symbol, das mit ihm verbunden ist. Und es ist nicht notwendig, SL und TP dieses Symbols zu verfolgen. D.h., der EA benötigt keine Ticks für dieses Symbol. Der EA wird nur dann an das Symbol angehängt, wenn es nötig ist, denn er muss zumindest irgendwo angehängt sein, um ausgelöst zu werden.

komposter:


Ja, aber nach dieser Logik müssen alle anderen Ereignisse auf genau die gleiche Weise in die Warteschlange gestellt werden. Das wäre zu viel.

Nach dieser Logik sollten alle Ausnahmen von den Regeln für die Erzeugung von Ticks und/oder Warteschlangenereignissen im Referenzbuch aufgeführt werden. Bisher habe ich nur eine Ausnahme gefunden, - für den Fall, wenn (1) gibt es OnTick() Funktion, (2) diese Funktion behandelt vorherige NewTick Ereignis. Diese Ausnahme trifft in meinem Fall nicht zu.

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

Yedelkin:

Nach dieser Logik sollten alle Ausnahmen von den Regeln für die Erzeugung von Ticks und/oder Warteschlangenereignissen im Handbuch aufgeführt werden. Bisher habe ich nur eine Ausnahme gefunden - für den Fall, dass (1) es eine Funktion OnTick() gibt, (2) diese Funktion das vorherige Ereignis NewTick behandelt. Diese Ausnahme trifft auf meinen Fall nicht zu.

Es wäre logisch anzunehmen, dass, wenn OnTick() nicht vorhanden ist, es keine Verarbeitung von Ticks für dieses Diagramm gibt (durch das Symbol dieses Diagramms).

Ob die Ereignisse in eine Warteschlange gestellt werden oder nicht, und in welche, ist eine andere Frage. Die Hauptsache ist, dass die Ticks nicht vom Chart (Expert Advisor darauf) verarbeitet werden!

Wenn wir berücksichtigen, dass der EA Ticks aus anderen Charts verarbeitet, müssen wir die Verarbeitung von EXTERNEN Ticks in Betracht ziehen.

So, meiner Meinung nach, in meinem Expert Advisor sollte eine eigene Verarbeitung von Ticks, in denen als Input-Parameter zu übergeben: Symbol, Zeit, Preis (die benutzerdefinierte Veranstaltung theoretisch erlaubt, all dies zu tun).

Ich denke, dass die Arbeit mit dem benutzerdefinierten Ereignis-Potk im Detail untersucht und optimiert werden muss.

 
Interesting:

Wenn zu berücksichtigen, dass EA Ticks aus anderen Charts verarbeitet, dann ist es notwendig, mit der Verarbeitung von EXTERNAL Ticks zu arbeiten.

So, meiner Meinung nach, in Expert Advisor sollte eine eigene Verarbeitung von Ticks, in denen als Input-Parameter zu übergeben: Symbol, Zeit, Preis (die benutzerdefinierte Veranstaltung theoretisch erlaubt, all dies zu tun).

Meiner Meinung nach sollte gerade die Arbeit mit dem benutzerdefinierten Ereignis potk im Detail untersucht und optimiert werden.

Sie haben Recht, das ist genau der Weg, den ich gegangen bin, indem ich nur externe Ticks behandelt habe. Hier gibt es noch keine Fragen.

Interessant:

Es wäre logisch anzunehmen, dass, wenn OnTick() nicht vorhanden ist, die Verarbeitung von Ticks für dieses Diagramm (entsprechend dem Symbol dieses Diagramms) nicht durchgeführt wird.

Ob die Ereignisse in eine Warteschlange gestellt werden oder nicht, und in welche, ist eine andere Frage. Die Hauptsache ist, dass die Ticks nicht vom Chart (Expert Advisor darauf) verarbeitet werden!

Ich bin also darauf fixiert, sicherzustellen, dass die allgemeine Warteschlange in meinem Fall nicht mit Ereignissen aus "internen" Ticks verstopft ist. Ich könnte mich natürlich irren, aber es sollte viel einfacher sein, "zu deaktivieren" als "die rechtzeitige Erzeugung von Ticks, die korrekte Einordnung von Ereignissen in die Warteschlange, die Synchronisierung mit dem Server usw. sicherzustellen" ... Lassen Sie die "Standardeinstellung" für die meisten Leute so, wie sie im Moment ist, aber für extreme Leute wie mich, fügen Sie eine Deaktivierungs-/Schaltfunktion hinzu. Im Handbuch wird darauf hingewiesen, dass es Nebenwirkungen geben kann.
 
Yedelkin:

Das stimmt, genau so bin ich vorgegangen - indem ich ausschließlich externe Zecken behandelt habe. Es sind noch keine Fragen gestellt worden.

Das ist es, worauf ich fixiert bin, um sicherzustellen, dass die allgemeine Warteschlange in meinem Fall nicht mit Ereignissen aus "internen" Ticks verstopft ist. Ich könnte mich natürlich irren, aber "deaktivieren" sollte viel einfacher sein als "rechtzeitige Erzeugung von Ticks, ordnungsgemäße Ereignis-Warteschlangen, Synchronisierung mit dem Server usw." ... Lassen Sie die "Standardeinstellung" für die meisten Leute so, wie sie im Moment ist, aber für extreme Leute wie mich, fügen Sie eine Deaktivierungs-/Schaltfunktion hinzu. Im Handbuch wird darauf hingewiesen, dass es Nebenwirkungen geben kann.

Über die Frage, ob es einfacher ist, lässt sich streiten, und die von Ihnen vorgeschlagene Variante ist (meiner Meinung nach) nicht weniger fragwürdig.

Die Frage, die sich bei Ticks und generell bei allen Ereignissen stellt, ist, was mit den Ereignissen passiert, wenn es keinen Handler im Expert Advisor gibt.

Meine zweite Frage in diesem Zusammenhang wäre - sind alle Ereignisse in der gleichen Warteschlange behandelt oder für bestimmte Ereignisse (OnTimer, OnTick und OnTrade) haben ihre eigenen Warteschlangen?

 
Interesting:

Über "einfacher" lässt sich streiten, und die von Ihnen vorgeschlagene Option ist (meiner Meinung nach) nicht weniger fragwürdig.

Ich stimme zu: Es ist schwer zu beurteilen, was man nicht kennt. Es bleibt nur noch, Wünsche zu äußern :) Zur Sinnhaftigkeit meiner Version kann ich sagen, dass es hier hauptsächlich um die Idee "Ich brauche keine Tics!" geht; wie sie umgesetzt wird, bleibt den Entwicklern überlassen.

Interessant:

Die ganze Frage über Ticks, und alle Ereignisse im Allgemeinen, ist, was mit Ereignissen passiert, wenn es keine Handler in Expert Advisor ist.

Das ist richtig. Für mich gibt es nur eine Lösung - die Enden abschneiden (Schalterfunktion einführen), und es ist garantiert, sich nicht mit der Frage zu beschäftigen :) Aber wir sollten auch an den Tester denken, der Zeit damit vergeudet, Ticks zu erstellen (zu erzeugen?), die im Prinzip unnötig sind. Nur weil der Prüfer gezwungen ist, sich mit einer der Figuren zu identifizieren.

Interessant:

Die zweite Frage, die ich in diesem Zusammenhang habe, ist die folgende: Werden alle Ereignisse in einer Warteschlange behandelt oder gibt es separate Warteschlangen für bestimmte Ereignisse (OnTimer, OnTick und OnTrade)?

Nun, im Handbuch steht ausdrücklich, dass "alle auftretenden Ereignisse" in eine gemeinsame Warteschlange gestellt und nacheinander in der Reihenfolge ihres Eingangs abgearbeitet werden. Die einzige Ausnahme ist für NewTick angegeben. Sie haben irgendwie bewiesen, dass das OnTimer-Ereignis nicht immer behandelt wird, aber es kann auch als Folge eines allgemeinen Warteschlangenüberlaufs gelöscht werden. Ich habe keinen Hinweis auf getrennte Warteschlangen für die einzelnen Veranstaltungen gesehen.

Grund der Beschwerde: