Gemeinsam lernen und schreiben in MQL5 - Seite 26

 

Aus dem Handbuch:

Все возникающие события клиентский терминал складывает в общую очередь.

...Die Ereignis-Warteschlange hat eine begrenzte Größe.

Über die Ereigniswarteschlange wurde schon mehrfach gesprochen, aber ich konnte die genaue Größe nicht finden. Wie tief ist die Ereigniswarteschlange? 64? 256? ...Ereignisse?
 

Wird mir nun jemand helfen oder nicht? Auf Seite 25, zwei Ratsmitglieder...

Gescholten - gescholten. Helfen Sie mir zu verstehen. Sie haben mir vorgeworfen, dass ich Ihnen nicht genügend Daten zur Analyse des Problems geliefert habe. Ich brauche nicht noch mehr. Sie können ankreuzen, was Sie wollen.

Ich schätze, jeder testet meine Roboter... Ich werde warten. Wahrscheinlich müssen Sie einen Programmierer für Geld einstellen, um einen Fehler zu finden.

Übrigens, weiß noch jemand, wie das Thema des Threads heißt....?

 
Yedelkin:

Aus dem Handbuch:

Es gab einige Diskussionen über die Ereigniswarteschlange, aber ich konnte die genaue Größe nicht finden. Wie tief ist die Ereigniswarteschlange? 64? 256? ...Ereignisse?
Ich wollte auch fragen, was passiert, wenn sich die Ereigniswarteschlange zu füllen beginnt und verstopft? Werden neue Ereignisse ignoriert oder werden die bereits in der Warteschlange befindlichen zurückgesetzt? Und wann passiert das (bei welchem Ereignis in der Warteschlange)?
 
Urain:
Ich wollte auch fragen, was passiert, wenn die Ereignis-Warteschlange anfängt, sich anzusammeln und zu ersticken? Werden neue Ereignisse ignoriert oder werden die, die sich bereits in der Warteschlange befinden, zurückgesetzt? und natürlich, wann wird dies passieren (bei welchem Ereignis in der Warteschlange)?

bereits beantwortet

https://www.mql5.com/ru/forum/1621/43941#comment_43941

Таймер
Таймер
  • www.mql5.com
Предпосылки очень просты -- таймер обычно используется для синхронизации (ждем расчета данных) или обсервинга (зацикленный таймером эксперт, имхо, будет гораздо более адекватным).
 

Ich denke, es besteht noch Klärungsbedarf, es gibt eine Antwort, aber sie ist verschwommen, meine Fragen werden nicht einmal angedeutet.

Weder eine genaue Angabe der Länge der Warteschlange, noch welche Ereignisse übersprungen werden (was meinen Sie mit "ein Teil der Ereignisse wird übersprungen"?), welcher Teil, neue Ereignisse oder bereits in der Warteschlange befindliche Ereignisse? die Logik ist hier machtlos, da neue Ereignisse wichtiger sein können als die in der Warteschlange befindlichen oder umgekehrt.

Es ist also besser, diesen Punkt zu klären.

 
Khomtchenko:

Wird mir nun jemand helfen oder nicht? Auf Seite 25, zwei Ratsmitglieder...

Schimpfen ist Schimpfen. Helfen Sie mir zu verstehen. Sie haben mir vorgeworfen, dass ich Ihnen nicht genügend Daten zur Analyse des Problems geliefert habe. Ich brauche nicht noch mehr. Sie können ankreuzen, was Sie wollen.

Ich schätze, jeder testet meine Roboter... Ich werde warten. Wahrscheinlich müssen Sie einen Programmierer für Geld einstellen, um einen Fehler zu finden.

Übrigens, weiß noch jemand, wie das Thema des Threads heißt....?

Sie haben einen Schlupf von 50 in mql4 und 10 in mql5. Versuchen Sie, die gleiche Slippage einzustellen, vielleicht gleicht sich die Situation dann aus, denn viele Aufträge mit einer solchen Slippage können einfach in die Requotes gehen.

Noch besser ist es, wenn Sie bei beiden Varianten den Schlupf auf die Größe der Spanne einstellen.

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

Ich werde die Frage wiederholen:

Wie lösche ich korrekt alle Aufträge mit einer bestimmten Magie?

...

Ich muss die Liste der Aufträge von oben nach unten durchgehen, zum Beispiel so:

Ich habe versucht, das zu tun, was Sie gesagt haben, aber das Problem bleibt bestehen - der ausstehende Auftrag wird zuerst gelöscht, dann wird eine weitere Anfrage zum Löschen desselben Auftrags gesendet. Hier ist ein Beispiel für die Protokollzeilen:

2011.05.12 16:42:57 Traes '726238' : cancel order #4388299 buy stop 0.02 EURUSD at 1.41700 done - order successfully deleted
2011.05.12 16:42:57 Trades '726238' : cancel order #4388299 buy stop 0.02 EURUSD at 1.41700 - Eine weitere Anfrage wird gesendet
2011.05.12 16:42:58 Trades '726238' : failed cancel order #4388299 buy 0.00 at 0.00000 [Invalid request] - it was buy for some reason.

Dies geschieht nicht immer, aber manchmal, und es hat keine Auswirkungen auf den Betrieb des Expert Advisors. Ich möchte nur alles richtig machen, den Handelsserver nicht mit leeren Anfragen belasten und das Problem verstehen.

Ich danke Ihnen für Ihre Antworten und Ihre Hilfsbereitschaft.

-----------------
Ich werde versuchen, meine Meinung zu sagen. Das Löschen eines Auftrags mit einer bestimmten magischen Zahl oder einer anderen ändert daran nichts, ebenso wenig wie das Blättern durch die Aufträge längs oder quer. Sie können eine Bestellung speichern und dann per Ticket löschen, der Fehler wird gelegentlich auftauchen.

Wie ich mir vorstellen kann, hat der Server die Bestellung tatsächlich gelöscht, wie aus der Meldung im Protokoll und der Retcode-Antwort des Servers hervorgeht. Aber das Terminal weiß noch nichts davon, d.h. der Auftrag funktioniert noch für es (oder es weiß ihn, gibt aber veraltete Informationen an EA weiter, obwohl dann die Prüfung fehlgeschlagen wäre), und beim nächsten Ticken sendet es eine weitere Anfrage, um ihn zu löschen, und erhält einen Fehler vom Server.

Die Tatsache, dass der Server einen Kauf-Stopp-Auftrag in einen einfachen Kauf-Auftrag umgewandelt hat, scheint ein Fehler des Servers zu sein: Er unterscheidet diese Aufträge im Falle eines Anfragefehlers nicht. Das sollten sich die Entwickler merken.

Wie können wir wiederholte Anfragen vermeiden? Ich denke, es gibt nur zwei Möglichkeiten:

1. Nach erfolgreicher Löschung analysieren Sie den letzten Verlauf und warten, bis der gelöschte Auftrag darin erscheint, um dann fortzufahren.

2. führen Sie einfach eine Verzögerung ein, z. B. zwei Sekunden, nachdem die Löschung erfolgt ist. Eine Sekunde ist vielleicht nicht genug.

Ich möchte noch hinzufügen, dass diese Situation nicht nur bei schwebenden Aufträgen, sondern auch bei Marktaufträgen sowie bei Positionsänderungen auftritt. Dies geschieht eher selten und kann nur bei längerem Handel auf einem Demokonto bemerkt werden, aber im Testgerät tritt es natürlich nicht auf. Außerdem kommt es vor, dass nach dem Ändern einer Position das Margin-Level, das vor der Änderung bestand, umgekehrt wird, wahrscheinlich auch andere Kontoparameter, ich habe es nicht überprüft.

 

У вас в mql4 стоит проскальзывание 50, а в mql5 10. Попробуйте поставить одинаковое проскальзывание возможно ситуация выровняется тк много приказов с таким слипажем может просто попадать на реквот.

Und noch besser ist es, bei beiden Varianten den Slippage auf dieGröße des Spreads einzustellen.

Ich werde das versuchen, aber es ist unwahrscheinlich, dass sich die Situation dadurch wesentlich verbessert.

Habe ich Probleme bei der Programmierung oder ist alles in Ordnung?

 
Urain:

Ich denke, es besteht noch Klärungsbedarf, es gibt eine Antwort, aber sie ist verschwommen, meine Fragen werden nicht einmal angedeutet.

Weder eine genaue Angabe der Länge der Warteschlange noch die Angabe, welche Ereignisse übersprungen werden (was meinen Sie mit "ein Teil der Ereignisse wird übersprungen"?) - welcher Teil, neue Ereignisse oder bereits in der Warteschlange befindliche? Die Logik ist hier machtlos, denn vielleicht sind neue Ereignisse wichtiger als die in der Warteschlange befindlichen und vielleicht umgekehrt.

Es ist also besser, diesen Punkt zu klären.

1)"Stapel in gemeinsamer Warteschlange" - Fehler in der Dokumentation. Es gibt tatsächlich viele Warteschlangen. Gegenwärtig hat jedes mql5-Programm und jedes Diagramm seine eigenen Warteschlangen. Die Größen der Warteschlangen sind unterschiedlich und im Allgemeinen nicht klein, ein Überlauf der Warteschlange ist bei einem korrekt geschriebenen Programm unwahrscheinlich. Wir werden weder die genaue Größe der einzelnen Warteschlangen noch ihre Anzahl oder eine andere detaillierte Beschreibung der internen Implementierung dokumentieren. Der Grund liegt auf der Hand: Die interne Umsetzung kann sich ändern.

2) Alle neuen Ereignisse, für die in dieser Warteschlange nicht genügend Platz ist, werden übersprungen.

Ich möchte Sie daran erinnern, dass die Ereignisse eines neuen Ticks und einer Änderung eines Diagramms nur in einer einzigen Instanz in der Warteschlange für eingehende Ereignisse des Programms mql5 existieren können. Die Erzeugung von Ereignissen zur Erstellung und Löschung von grafischen Objekten in einem Diagramm kann aktiviert/deaktiviert werden.

 

Können Sie mir sagen, was die grünen Balken am unteren Rand bedeuten? In MT4 bedeuteten sie das Lot-Volumen und wurden gezogen, wenn das Lot wechselte. Aber wozu dient es hier? Oder mein Losvolumen ändert sich? Es scheint, dass ich es nicht ändern kann.