Fehler, Irrtümer, Fragen - Seite 2106

 
Andrey Khatimlianskii:

Eine Zeitüberschreitung bedeutet, dass die Antwort des Servers nicht innerhalb einer angemessenen Zeit empfangen wurde. Aber nicht das Ergebnis der Bestellung.


Hallo.

Ich danke Ihnen.

Rein technisch habe ich die Besonderheit verstanden. In diesem Fall: Wenn die Zeit abgelaufen ist, muss man warten, bis ein neues Ticket in der Handelshistorie auftaucht, und wenn ein neues Ticket auftaucht, ist der Handel oder Auftrag offen.

Übrigens, dies geschieht nur auf MQL5 VPS

Auf einem Heimserver ist das kein Problem.

Ich werde darüber nachdenken...


Ich werde darüber nachdenken.

Пользовательский интерфейс - Начало работы - MetaTrader 5
Пользовательский интерфейс - Начало работы - MetaTrader 5
  • www.metatrader5.com
Интерфейс платформы предоставляет доступ ко всем инструментам, необходимым для торговли на финансовых рынках. Он включает в себя различные меню, панели инструментов и служебные окна. Главное меню В главном меню собраны практически все команды и функции, которые можно выполнять в торговой платформе. Оно позволяет работать с графиками...
 
Vladislav Andruschenko:

Rein technisch verstehe ich die Besonderheit. In diesem Fall: Wenn Sie ein Timeout haben, müssen Sie darauf warten, dass ein neues Ticket in der Handelshistorie erscheint, und wenn ein neues Ticket erscheint, ist der Handel oder Auftrag offen.

Wenn ein Handelsauftrag über synchrones OrderSend gesendet wurde, gibt es keine Möglichkeit, die OrderSend-Ausführung zu beenden. Alles sieht nach einem Fehler im VPS-Terminal aus.
 
fxsaber:
Wenn ein Handelsauftrag über einen synchronen OrderSend gesendet wurde, gibt es keine Möglichkeit, die OrderSend-Ausführung zu beenden. Alles sieht nach einem Fehler im VPS-Terminal aus.


durch sie hindurch.

Das Problem kann im Prinzip gelöst werden, wenn nach dem Empfang eines Timeout-Fehlers die Funktion der Suche nach neuen Tickets in der Historie ausgeführt wird.

Andernfalls sendet der EA einfach eine neue Anfrage und erhält erneut einen Timeout-Fehler, ohne ein Ticket zu erhalten.

Ich danke Ihnen.

 
Vladislav Andruschenko:

Das Problem kann im Prinzip gelöst werden, indem nach dem Empfang eines Timeout-Fehlers die Funktion zum Abrufen neuer Tickets in der Historie ausgeführt wird.

Sie müssen es in SD schreiben. Andernfalls werden Sie nach jedem OrderSend drei Minuten auf einen Timeout warten und die entsprechenden Handelsrisiken erhalten.

 
fxsaber:

Sie müssen auf die CD schreiben. Andernfalls werden Sie nach jedem OrderSend drei Minuten auf einen Timeout warten und die entsprechenden Handelsrisiken erhalten.


Und das habe ich getan.

Dieser Fehler passiert 1 von 1000, und bisher ist es nur auf VPS von MQL passiert...
 
Vladislav Andruschenko:

Dementsprechend erhält der Expert Advisor die Fehlermeldung 10012 und versucht, den Auftrag erneut zu platzieren.

Ich würde dem EA für einen solchen Code auf dem Markt ein Jahr lang den Verkäuferstatus entziehen.
 
A100:
Ich würde Ihnen für einen solchen Code auf dem Marktplatz den Verkäuferstatus für ein Jahr entziehen.

Dies ist das erste Mal, dass ich auf einen solchen Fehler gestoßen bin.

Ich habe keinen solchen Fehler in meinem Code. kein Ticket bedeutet, dass ein Handel nicht geöffnet wurde. es bedeutet, dass der EA versucht, einen Handel wieder zu öffnen.
 
Vladislav Andruschenko:

Das Problem kann im Prinzip gelöst werden, indem man nach dem Erhalt eines Timeout-Fehlers die neue Funktion zum Abrufen von Tickets in der Historie ausführt.

Die Geschichte hat damit nichts zu tun. OrderSend sendet den Auftrag, und er erscheint im Terminal mit dem Status ORDER_STATE_STARTED.

Dies bedeutet jedoch nicht, dass die Ausführung von OrderSend beendet ist. OrderSend wird so lange ausgeführt, bis sich der Auftragsstatus ändert.

Wenn Sie also eine Zeitüberschreitung sehen, ist es zu 99% sicher, dass der Auftragsstatus ORDER_STATE_STARTED ist(ich sehe es, aber es ist nicht klar, als ich den Screenshot gemacht habe).

Außerdem kann die gleiche Zeitüberschreitung auch ohne Ihren OrderSend auftreten - wenn der MT5-Server den OrderSend selbst durchführt (TP/SL/MC/Expiration). Aber im Terminal werden Sie es nicht sehen.

 
Vladislav Andruschenko:
Ich habe keinen solchen Fehler in meinem Code. kein Ticket - es bedeutet, dass der Handel nicht geöffnet wurde. es bedeutet, dass der Expert Advisor versucht, den Handel erneut zu öffnen.

Das ist eine falsche Logik. Nach einem fehlgeschlagenen OrderSend und einem erfolgreichen OrderSend muss die aktuelle Handelsumgebung wieder vollständig eingelesen werden. Diese Regel sollte immer gelten.

Über Rückgabecodes. Ich analysiere sie nicht in meinen EAs. Ich denke, die Handelslogik sollte nicht von ihnen abhängen.

 
fxsaber:

Das ist eine falsche Logik. Nach einem fehlgeschlagenen OrderSend und einem erfolgreichen OrderSend muss die aktuelle Handelsumgebung vollständig neu eingelesen werden. Diese Regel sollte immer gelten.


Ich stimme zu. Das muss geändert werden.

Grund der Beschwerde: