Andrey Khatimlianskii: Richtig, die Netzwerklatenz. Außerdem dauert es lange, bis die Bestellung abgeschickt (oder bestätigt) wird, und das Ereignis geht verloren.
Nein, ist es nicht!
1. es handelt sich nicht um eine "Netzwerk"-Verzögerung, sondern um eine Verzögerung des MT5-Servers(vielleicht die Hardware des Brokers)
2) TradeTransaction geht NICHT immer verloren (ALWAYS), wie oben zu sehen, betrug die Verzögerung 409 ms und das Ereignis ging nicht verloren
Deshalbbehaupte ich, dass nicht das Netzwerk, sondern der MT5-Server (die Hardware des Brokers) für die Verzögerungen verantwortlich ist.
Die Server-Antwortzeit der Funktion CheckOrders() beträgt 700 bis 1200 ms (je nach
zu welchem Zeitpunkt des Timers (Zeitraum 500 ms) der Befehl gesendet wurde), was 100-mal länger ist als die Laufzeit (in meiner Konfiguration) im normalen Modus ( 7-9 ms)
Die Tatsache, dass bei einer Verzögerung von 18 ms das Ereignis verloren ging und bei 409 ms nicht, erlaubt uns zu sagen, dass dies ein "Bug" des MT5-Servers ist und nicht andere
Ursachen.
Außerdem... Mein Freund, der in meinem Haus wohnt, tauscht auf zwei Terminals mit meinem Roboter über meinen ISP über denselben Router im Haus, und aus irgendeinem Grund hat er
keine Latenzzeit zu der Zeit!
2015.10.2214:14:05.041 Trades 'xxxxx': modify order #22486145 buy limit 2.00 ED-6.16 at 1.1326 sl: 0.0000 tp: 0.0000 -> 1.1332, sl: 0.0000 tp: 0.00002015.10.2214:14:05.049 Trades 'xxxxx': modify order #22486145 buy limit 2.00 ED-6.16 at 1.1326 sl: 0.0000 tp: 0.0000 -> 1.1332, sl: 0.0000 tp: 0.0000 placed for execution in8 ms
2015.10.2214:14:38.389 Trades 'xxxxx': cancel order #22486314 sell limit 2.00 Eu-12.16 at 828672015.10.2214:14:38.397 Trades 'xxxxx': cancel order #22486314 sell limit 2.00 Eu-12.16 at 82867 placed for execution in8 ms
Andrey Khatimlianskii: Michael, bitte editieren Sie die Beiträge nicht. Fügen Sie besser neue hinzu, damit Sie nicht mit den Augen nach Aktualisierungen suchen müssen.
Es gab eine Menge Fehler, also habe ich sie korrigiert...
Das Skript führt OrderSelect für jede Bestellung vor der Löschung aus, und wenn sie ausgewählt ist, bedeutet dies, dass sie nicht in der Historie und aktiv ist, was sind die Fehler?
Nach dem Streichen eines Auftrags werden die Nummern der verbleibenden unbearbeiteten Aufträge um 1 verschoben.
Das heißt,wir eröffnen eine Positionmit einem Auftrag, schließen sie mit einem umgekehrten Auftrag und betrachten das Volumen der Position als Ergebnis.
Wir erwarten 0 (null), wir haben 1 (eins). Die Protokolle finden Sie unten (beginnen Sie ganz unten).
2015.10.2716:28:11.4762015.10.2610:05:08ExpertRemove() function called
2015.10.2716:28:11.4652015.10.2610:03:14 INFO>> *** VOLUME=1.0 *** ID=2 *** TYPE=POSITION_TYPE_SELL *** OrdersTotal()=02015.10.2716:28:11.4502015.10.2610:01:47 CLOSE Volume=1.02015.10.2716:28:11.4502015.10.2610:01:47 CLOSE OrdersTotal()=02015.10.2716:28:11.4502015.10.2610:01:47 CLOSE Deal=32015.10.2716:28:11.4502015.10.2610:01:47 CLOSE Order=32015.10.2716:28:11.4502015.10.2610:01:47 CLOSE Retcode=100092015.10.2716:28:11.4502015.10.2610:01:47 CLOSE OrderSend=true2015.10.2716:28:11.4492015.10.2610:01:47 order performed buy 1.00 at 9249 [#3 buy 1.00 SBRF-12.15 at 9249]
2015.10.2716:28:11.4492015.10.2610:01:47 deal performed [#3 buy 1.00 SBRF-12.15 at 9249]
2015.10.2716:28:11.4492015.10.2610:01:47 deal #3 buy 1.00 SBRF-12.15 at 9249 done (based on order #3)
2015.10.2716:28:11.4492015.10.2610:01:47 exchange buy 1.00 SBRF-12.15 at 9249 (9242 / 9249 / 9242)
2015.10.2716:28:11.4492015.10.2610:01:47 CLOSE>> *** VOLUME=1.0 *** ID=2 *** TYPE=POSITION_TYPE_SELL *** OrdersTotal()=02015.10.2716:28:11.4222015.10.2610:00:57 order performed sell 1.00 at 9205 [#2 sell stop 1.00 SBRF-12.15 at 9205]
2015.10.2716:28:11.4222015.10.2610:00:57 deal performed [#2 sell 1.00 SBRF-12.15 at 9205]
2015.10.2716:28:11.4222015.10.2610:00:57 deal #2 sell 1.00 SBRF-12.15 at 9205 done (based on order #2)
2015.10.2716:28:11.4222015.10.2610:00:57 order [#2 sell stop 1.00 SBRF-12.15 at 9205] triggered
2015.10.2716:28:11.4222015.10.2610:00:57 OPEN Volume=0.02015.10.2716:28:11.4222015.10.2610:00:57 OPEN OrdersTotal()=12015.10.2716:28:11.4222015.10.2610:00:57 OPEN Deal=02015.10.2716:28:11.4222015.10.2610:00:57 OPEN Order=22015.10.2716:28:11.4222015.10.2610:00:57 OPEN Retcode=100092015.10.2716:28:11.4222015.10.2610:00:57 OPEN OrderSend=true2015.10.2716:28:11.4222015.10.2610:00:57 sell stop 1.00 SBRF-12.15 at 9205 (9205 / 9227 / 9205)
2015.10.2716:28:11.4222015.10.2610:00:57 OPEN>> *** VOLUME=0.0 *** ID=0 *** TYPE=POSITION_TYPE_BUY *** OrdersTotal()=02015.10.2716:28:11.344 SBRF-12.15,M1: testing of Experts\Projects\CoinAge5\Helper_v01\mq5\Tst\TST006_Open_Close_Positions_001.ex5 from 2015.10.2600:00 to 2015.10.2700:00 started
Yury Kirillov: Ich habe da eine Frage an die Kenner. Wie kann man eine Position nullen(FORTS, Otkrytie-Broker, Real)?
Es gibt den folgenden Code:
Das heißt,wir eröffnen eine Positionmit einem Auftrag, schließen sie mit einem umgekehrten Auftrag und betrachten das Volumen der Position als Ergebnis.
Wir erwarten 0 (null), wir haben 1 (eins). Die Protokolle finden Sie unten (beginnen Sie ganz unten).
Nein, das ist es nicht. So gehe ich mit meinem eigenen Code um, während ich in Ihrer Version eine nicht von mir geschriebene Bibliothek analysieren müsste. Wenn Sie einen Blick in diese Bibliothek werfen, werden Sie in etwa die gleichen Operationen finden wie ich. Deshalb möchte ich zunächst den Mechanismus der Auftragserteilung auf FORTS verstehen und dann vielleicht die Standardbibliotheken verwenden.
Richtig, die Netzwerklatenz. Außerdem dauert es lange, bis die Bestellung abgeschickt (oder bestätigt) wird, und das Ereignis geht verloren.
Nein, ist es nicht!
1. es handelt sich nicht um eine "Netzwerk"-Verzögerung, sondern um eine Verzögerung des MT5-Servers(vielleicht die Hardware des Brokers)
2) TradeTransaction geht NICHT immer verloren (ALWAYS), wie oben zu sehen, betrug die Verzögerung 409 ms und das Ereignis ging nicht verloren
Deshalbbehaupte ich, dass nicht das Netzwerk, sondern der MT5-Server (die Hardware des Brokers) für die Verzögerungen verantwortlich ist.
Die Server-Antwortzeit der Funktion CheckOrders() beträgt 700 bis 1200 ms (je nach
zu welchem Zeitpunkt des Timers (Zeitraum 500 ms) der Befehl gesendet wurde), was 100-mal länger ist als die Laufzeit (in meiner Konfiguration) im normalen Modus ( 7-9 ms)
Die Tatsache, dass bei einer Verzögerung von 18 ms das Ereignis verloren ging und bei 409 ms nicht, erlaubt uns zu sagen, dass dies ein "Bug" des MT5-Servers ist und nicht andere
Ursachen.
Außerdem... Mein Freund, der in meinem Haus wohnt, tauscht auf zwei Terminals mit meinem Roboter über meinen ISP über denselben Router im Haus, und aus irgendeinem Grund hat er
keine Latenzzeit zu der Zeit!
Michael, bitte editieren Sie die Beiträge nicht. Fügen Sie besser neue hinzu, damit Sie nicht mit den Augen nach Aktualisierungen suchen müssen.
Wie?
Das Skript führt OrderSelect für jede Bestellung vor der Löschung aus, und wenn sie ausgewählt ist, bedeutet dies, dass sie nicht in der Historie und aktiv ist, was sind die Fehler?
Nach dem Streichen eines Auftrags werden die Nummern der verbleibenden unbearbeiteten Aufträge um 1 verschoben.
Michael, lass uns noch ein "Blatt" mit Verspätungen machen, es wird langweilig. :))))
Wann werden Sie zur Eröffnung gehen? :)))))))
Es gibt den folgenden Code:
Das heißt,wir eröffnen eine Positionmit einem Auftrag, schließen sie mit einem umgekehrten Auftrag und betrachten das Volumen der Position als Ergebnis.
Wir erwarten 0 (null), wir haben 1 (eins). Die Protokolle finden Sie unten (beginnen Sie ganz unten).
Was ist der Grund dafür?
Ich habe da eine Frage an die Kenner. Wie kann man eine Position nullen(FORTS, Otkrytie-Broker, Real)?
Es gibt den folgenden Code:
Das heißt,wir eröffnen eine Positionmit einem Auftrag, schließen sie mit einem umgekehrten Auftrag und betrachten das Volumen der Position als Ergebnis.
Wir erwarten 0 (null), wir haben 1 (eins). Die Protokolle finden Sie unten (beginnen Sie ganz unten).
Was ist der Grund dafür?
Ist das nicht einfacher?
?
Was ist der Grund dafür?
Ist es nicht einfacher:
?
Nein, das ist es nicht. So gehe ich mit meinem eigenen Code um, während ich in Ihrer Version eine nicht von mir geschriebene Bibliothek analysieren müsste. Wenn Sie einen Blick in diese Bibliothek werfen, werden Sie in etwa die gleichen Operationen finden wie ich. Deshalb möchte ich zunächst den Mechanismus der Auftragserteilung auf FORTS verstehen und dann vielleicht die Standardbibliotheken verwenden.