Von der Theorie zur Praxis - Seite 227

 
Maxim Dmitrievsky:

weil Sie zuerst das Ergebnis der Handelsausführung und dann die Auftragssumme prüfen müssen

Der Autor hat mehrere identische EAs, die asynchron arbeiten, jeder auf dem Chart seines eigenen Paares und anscheinend nicht miteinander kommunizieren. Daher kann es vorkommen, dass ein EA einen Auftrag zur Eröffnung einer Position gesendet hat und die Antwort noch nicht eingetroffen ist, d.h. die Position wurde noch nicht eröffnet (OrdersTotal()==0). Dann sendet ein anderer EA (und vielleicht mehr als einer) ebenfalls eine Handelsanfrage, und als Ergebnis werden 2 oder mehr Positionen auf einmal geöffnet. Die Idee ist, dass wir, um solche Überschneidungen zu vermeiden, ein Flag (eine globale Variable des Terminals) setzen und es lesen sollten, wenn der erste Handelsauftrag von anderen Expert Advisors gesendet wird.

Aber solche Situationen können recht häufig vorkommen, vor allem bei Nachrichten, wenn viele Paare fast zeitgleich starke Sprünge machen.

 
Alexander Sevastyanov:

Der Autor hat mehrere EAs desselben Typs, jeder befindet sich auf dem Chart seines eigenen Paares, und offenbar kommunizieren sie nicht miteinander. Daher kann es vorkommen, dass ein EA einen Handelsauftrag zur Eröffnung einer Position gesendet hat und der Auftrag noch in Bearbeitung ist oder die Antwort noch nicht eingetroffen ist, d.h. die Position wurde noch nicht eröffnet (OrdersTotal()==0). Dann sendet ein anderer EA (und vielleicht mehr als einer) ebenfalls eine Handelsanfrage, und als Ergebnis werden 2 oder mehr Positionen auf einmal geöffnet. Die Idee ist, dass wir, um solche Überschneidungen zu vermeiden, ein Flag (eine globale Variable des Terminals) setzen und es lesen sollten, wenn der erste Handelsauftrag von anderen Expert Advisors gesendet wird.

Diese Situationen können sich wiederholen, insbesondere bei Nachrichten, wenn viele Paare starke Sprünge machen.

Ich habe nicht gesehen, dass es nur 1 Handel zur Zeit geben sollte, ich dachte, es sollte mehrere Öffnungen für 1 Symbol geben.

 
Alexander Sevastyanov:

Der Autor hat mehrere EAs desselben Typs, jeder befindet sich auf dem Chart seines eigenen Paares, und offenbar kommunizieren sie nicht miteinander. Daher kann es vorkommen, dass ein EA einen Handelsauftrag zur Eröffnung einer Position gesendet hat und der Auftrag noch in Bearbeitung ist oder die Antwort noch nicht eingetroffen ist, d.h. die Position wurde noch nicht eröffnet (OrdersTotal()==0). Dann sendet ein anderer EA (und vielleicht mehr als einer) ebenfalls eine Handelsanfrage, und als Ergebnis werden 2 oder mehr Positionen auf einmal geöffnet. Die Idee ist, dass wir, um solche Probleme zu vermeiden, ein Flag setzen sollten (eine globale Variable des Terminals) und es lesen, wenn der erste Handelsauftrag von anderen Expert Advisors gesendet wird.

Das ist genau das, was es ist, Alexander.

Ich lese jetzt sorgfältig den Zweig und alle Empfehlungen zur Lösung dieses Problems. Denn ich habe Angst davor, was passiert, wenn alle 32 Paare gleichzeitig gehandelt werden... Natürlich sollte es nicht so sein.

 
Alexander_K2:

...lese jetzt den Thread und alle Empfehlungen zur Lösung dieses Problems. Denn ich möchte gar nicht daran denken, was passiert, wenn alle 32 Paare gleichzeitig gehandelt werden... Natürlich sollte es nicht so sein.

Wenn Sie Hilfe benötigen, zögern Sie bitte nicht, mich zu kontaktieren.

Die Verzögerung bei der Eröffnung einer Position setzt sich übrigens hauptsächlich aus dem doppelten Ping (hin und her) und der Zeit für die Bearbeitung eines Handelsauftrags durch den Server zusammen. Gute Broker, die die realen Server nicht überlasten und über einen guten Verbindungskanal zu den Liquiditätsanbietern verfügen, haben eine Bearbeitungszeit für Handelsaufträge von Millisekunden. Der Ping kann durch das Hosting des Expert Advisors auf einem VPS-Server von Hunderten von Millisekunden auf Einheiten reduziert werden. Im MT4-Protokoll können Sie die Gesamtzeit sehen, die benötigt wird, um einen Handelsauftrag zu senden, ihn zu verarbeiten und eine Antwort vom Server zu erhalten.

 
Alexander Sevastyanov:

Sollten Sie Hilfe benötigen, zögern Sie bitte nicht, uns zu kontaktieren.

Übrigens, die Verzögerung bei der Eröffnung einer Position setzt sich hauptsächlich aus dem doppelten Ping (Round-Trip) und der Bearbeitungszeit des Handelsauftrags durch den Server zusammen. Gute Broker, die die realen Server nicht überlasten und über einen guten Verbindungskanal zu den Liquiditätsanbietern verfügen, haben eine Bearbeitungszeit für Handelsaufträge von Millisekunden. Der Ping kann durch das Hosting des Expert Advisors auf einem VPS-Server von Hunderten von Millisekunden auf Einheiten reduziert werden. Im MT4-Protokoll können Sie die Gesamtzeit sehen, die benötigt wird, um einen Handelsauftrag zu senden, ihn zu verarbeiten und eine Antwort vom Server zu erhalten.

es gibt keine derartigen Forex-Broker, mindestens zehn Millisekunden, durchschnittlich 200, bei null Pings

 
Maxim Dmitrievsky:

Ich habe nicht gesehen, dass es nur 1 Handel zu einem Zeitpunkt geben sollte, ich dachte, es sollte mehrere Öffnungen für 1 Instrument geben.

Dieser Fehler kann sogar in einem Symbol auftreten, wenn der vorherige Thread die Ausführung nicht beendet hat und ein neuer Tick gekommen ist - dann gibt es eine undefinierte Situation beim Lesen und Schreiben von aktuellen Daten...
 
Andrei:
Dieser Fehler kann auch bei einem einzelnen Tool auftreten, wenn der vorherige Thread die Ausführung noch nicht beendet hat und ein neuer Tick kommt - dann gibt es eine undefinierte Situation des Schreibens und Lesens aktueller Daten...

Nein, eine solche Situation gibt es nicht, es werden Ticks übersprungen, bis alle Logik verarbeitet ist.

 
Maxim Dmitrievsky:

Nein, es gibt keine solchen Situationen, der Ontic überspringt Ticks, bis die gesamte Logik abgearbeitet ist.

Das habe ich auch gedacht...

 
Andrei:

Das habe ich auch gedacht...

Ich weiß es nicht, ist nie passiert, habe mit einer Reihe von Scalping-Brokern auf mt4 und mt5 gehandelt

 
Maxim Dmitrievsky:

Ich weiß es nicht, habe nie mit einer Reihe von Scalping-Brokern auf mt4 und mt5 gehandelt

Wie haben Sie das überprüft? Ich habe nur auf mt4 geprüft...