Fehler, Irrtümer, Fragen - Seite 2107

 
Vladislav Andruschenko:

Ich stimme zu. Wir müssen das ändern.

Zu dieser Regel gibt es eine Verzweigung.

Организация цикла перебора ордеров
Организация цикла перебора ордеров
  • 2017.09.16
  • www.mql5.com
MQL4 и MetaTrader 4: Организация цикла перебора ордеров
 
fxsaber:

Zu dieser Regel gibt es eine Verzweigung.


Ja, ich habe Schnipsel darüber gelesen, dass der Zugriff auf die Historie nur funktioniert, wenn die Umgebung geändert wird, und ich habe Ihre Links in anderen Threads gesehen.

um es auf den Punkt zu bringen, der Fehler trat nach dem Lesen Ihrer Option auf.

 
fxsaber:

Das ist eine falsche Logik. Nach fehlgeschlagenem OrderSend und erfolgreichem OrderSend muss die aktuelle Handelsumgebung wieder vollständig ausgelesen 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.

Theoretisch kann eine Zeitüberschreitung bei einem Verbindungsverlust mit dem Server des Brokers auftreten.

In diesem Fall ist es besser, gar nichts zu tun, bis das System wiederhergestellt ist und die Handelsumgebung vollständig mit dem Server synchronisiert ist.

Wie kann man vermeiden, in eine solche Situation zu geraten, ohne den Rückgabecode zu analysieren?

 

Kompilierungsfehler.


Test.mqh-Datei.

int Tmp = 1;


Hauptcode

#include "Test.mqh"

void OnStart()
{
  Print(Tmp);
  Print(Tmp2); // 'Tmp2' - undeclared identifier
}

#define  Tmp Tmp2
#include "Test.mqh"


Es hat sich herausgestellt, dass wiederholte Einschübe ignoriert werden. Aber in dieser Situation ist es falsch!

Wir brauchen ein solches Konstrukt für den folgenden Zweck. Ein Expert Advisor ist in einer .mqh-Datei enthalten. Aber ich muss in der Lage sein, es auf einem echten Konto (erste incloud) und in meinem Tester (zweite incloud) laufen.

 
Andrey Khatimlianskii:

Theoretisch kann eine Zeitüberschreitung bei einem Verlust der Kommunikation mit dem Server des Brokers auftreten.

In diesem Fall ist es besser, gar nichts zu tun, bis das System wiederhergestellt ist und die Handelsumgebung vollständig mit dem Server synchronisiert ist.

Wie kann man vermeiden, in eine solche Situation zu geraten, ohne den Rückgabecode zu analysieren?

Wir haben eine OrderSend gesendet und nicht auf eine Antwort vom Server gewartet, was zu einem Timeout im Protokoll und _LastError führt. Wir ignorieren _LastError und erhalten nur false.

Danach, wenn wir eine Verbindung haben, setzen wir das Handelsumfeld wieder zusammen und treffen eine Entscheidung.

Natürlich ist es immer wünschenswert, die gewählte Umgebung zu überprüfen, bevor die Informationen gesammelt werden.

 
fxsaber:

OrderSend gesendet und nicht auf eine Antwort vom Server gewartet, wodurch eine Zeitüberschreitung im Protokoll und _LastError. Wir ignorieren _LastError und erhalten nur false.

Danach, wenn wir eine Verbindung haben, setzen wir das Handelsumfeld wieder zusammen und treffen eine Entscheidung.

Natürlich ist es immer wünschenswert, die gewählte Umgebung zu überprüfen, bevor Informationen gesammelt werden.

Dies ist möglich, wenn wir mit OnTick arbeiten. Und wenn nicht?

Wie kann man die Verbindung überprüfen?

 
Andrey Khatimlianskii:

Dies funktioniert, wenn Sie mit OnTick arbeiten. Und wenn nicht?

Wie überprüfen Sie die Verbindung?

TerminalInfoInteger(TERMINAL_CONNECTED);
 
fxsaber:
TerminalInfoInteger(TERMINAL_CONNECTED);

Historisch gesehen, traue ich dem nicht. Ich muss es in 5 Jahren testen...

 

Das Problem bei Timeouts ist nicht, dass keine Verbindung besteht, sondern dass die Anfrage eine Zeitüberschreitung erhalten hat.

Einerseits sehe ich es so: Es gibt ein Signal, einen Handel zu eröffnen, wir stellen einen Antrag, wir bekommen eine Zeitüberschreitung - aber der Handel ist eröffnet.

obwohl der Expert Advisor einen Fehler erhalten hat.

prüfen Sie das Handelsumfeld - wir sehen ein offenes Geschäft.

aber wie kann man verstehen, dass das Geschäft durch dieses Signal eröffnet wurde? wenn es z.B. 10 Signale gab?

d.h. prüfen, ob ein neues Geschäft in der Historie (im Terminal) erschienen ist.


ich habe die Idee noch nicht verstanden

@A100

Welche Lösung sehen Sie?

 
fxsaber:

Es stellt sich heraus, dass die Neuverschlüsselung ignoriert wird. Aber das ist in dieser Situation falsch!

Wir brauchen ein solches Konstrukt für das folgende. Ein Expert Advisor ist in einer mqh-Datei enthalten. Aber ich muss in der Lage sein, es auf einem echten Konto (erste incloud) und in meinem Tester (zweite incloud) laufen.

Alles ist korrekt, und es wird ordnungsgemäß ignoriert.

Cish-Hacks gehen nicht durch.