Andrey Khatimlianskii: Esatto, la latenza di rete. E l'ordine impiega molto tempo per essere inviato (o ricevere la conferma) e l'evento viene perso.
No, non lo è!
1. questo non è un ritardo della "rete", ma un ritardo del server MT5(forse l'hardware del broker)
2. TradeTransaction NON è sempre perso (SEMPRE), come visto sopra, il ritardo era di 409 ms e l'evento non è stato perso
Ecco perché sostengo che non è la rete ma il server MT5 (l'hardware del broker) ad essere responsabile dei ritardi.
Il tempo di risposta del server della funzione CheckOrders() è da 700 a 1200 ms (a seconda di
in quale punto del timer (periodo 500 ms) il comando è stato inviato), che è 100 volte più lungo del tempo di esecuzione (nella mia configurazione) in modalità normale ( 7-9 ms)
Il fatto che con un ritardo di 18 ms l'evento è stato perso, e con 409 ms no, ci permette di dire che questo è un "bug" del server MT5 e non altri
cause.
Inoltre... Il mio amico, che vive in casa mia, scambia su due terminali con il mio robot attraverso il mio ISP tramite lo stesso router in casa, e per qualche motivo lui
nessuna latenza in quel momento!
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, per favore non modificare i post. Meglio aggiungerne di nuovi, così non dovrai cercare gli aggiornamenti con gli occhi.
Cioè,apriamo una posizionecon un ordine, la chiudiamo con un ordine inverso e guardiamo il volume della posizione come risultato.
Ci aspettiamo 0 (zero), abbiamo 1 (uno). I registri sono qui sotto (inizia dal basso).
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
No, non lo è. È così che mi occupo del mio codice, mentre nella tua versione dovrei analizzare una libreria non scritta da me. Se guardate all'interno di questa libreria, troverete circa la stessa serie di operazioni che faccio io. Ecco perché voglio prima capire il meccanismo di immissione degli ordini su FORTS, e poi, forse, utilizzare le librerie standard.
Esatto, la latenza di rete. E l'ordine impiega molto tempo per essere inviato (o ricevere la conferma) e l'evento viene perso.
No, non lo è!
1. questo non è un ritardo della "rete", ma un ritardo del server MT5(forse l'hardware del broker)
2. TradeTransaction NON è sempre perso (SEMPRE), come visto sopra, il ritardo era di 409 ms e l'evento non è stato perso
Ecco perché sostengo che non è la rete ma il server MT5 (l'hardware del broker) ad essere responsabile dei ritardi.
Il tempo di risposta del server della funzione CheckOrders() è da 700 a 1200 ms (a seconda di
in quale punto del timer (periodo 500 ms) il comando è stato inviato), che è 100 volte più lungo del tempo di esecuzione (nella mia configurazione) in modalità normale ( 7-9 ms)
Il fatto che con un ritardo di 18 ms l'evento è stato perso, e con 409 ms no, ci permette di dire che questo è un "bug" del server MT5 e non altri
cause.
Inoltre... Il mio amico, che vive in casa mia, scambia su due terminali con il mio robot attraverso il mio ISP tramite lo stesso router in casa, e per qualche motivo lui
nessuna latenza in quel momento!
Michael, per favore non modificare i post. Meglio aggiungerne di nuovi, così non dovrai cercare gli aggiornamenti con gli occhi.
Cosa?
Lo script fa OrderSelect su ogni ordine prima della cancellazione e se è selezionato significa che non è nella storia e attivo, quali sono gli errori?
Dopo aver cancellato un ordine, i numeri dei rimanenti non processati sono spostati di 1.
Michael, facciamo un altro "foglio" con i ritardi, sta diventando noioso. :))))
Quando andrai all'inaugurazione? :)))))))
C'è il seguente codice:
Cioè,apriamo una posizionecon un ordine, la chiudiamo con un ordine inverso e guardiamo il volume della posizione come risultato.
Ci aspettiamo 0 (zero), abbiamo 1 (uno). I registri sono qui sotto (inizia dal basso).
Qual è la ragione?
Ecco una domanda che ho, per gli intenditori. Come azzerare una posizione(FORTS, Otkrytie-Broker, Real)
C'è il seguente codice:
Cioè,apriamo una posizionecon un ordine, la chiudiamo con un ordine inverso e guardiamo il volume della posizione come risultato.
Ci aspettiamo 0 (zero), abbiamo 1 (uno). I registri sono qui sotto (inizia dal basso).
Qual è la ragione?
Non è più semplice?
?
Qual è la ragione?
Non è più semplice:
?
No, non lo è. È così che mi occupo del mio codice, mentre nella tua versione dovrei analizzare una libreria non scritta da me. Se guardate all'interno di questa libreria, troverete circa la stessa serie di operazioni che faccio io. Ecco perché voglio prima capire il meccanismo di immissione degli ordini su FORTS, e poi, forse, utilizzare le librerie standard.