Grazie per le informazioni, una ricerca molto utile su un terminale nel vuoto dove non si può dare la colpa a una cattiva connessione internet e a un cattivo scambio che ritarda l'esecuzione.
Oggi era "sovraccarico" a tutti, non c'era nessuna sincronizzazione:
Ecco l'inizio e la fine del registro (resettare l'EA a mano)
2020.02.1310:01:45.988 FCS_Trader (SBRF-6.20,M1) ProcessOrders: Buy ордер в процессе удаления. Билет = 117284549
......
2020.02.1315:18:50.991 FCS_Trader (SBRF-6.20,M1) ProcessOrders: Buy ордер в процессе удаления. Билет = 117284549
Su altri grafici (2 terminali 83 EAs) gli EAs hanno funzionato bene
Aggiunto
Mi sembra che "glitched" perché in qualche modo il terminale usato per sincronizzare
dati dopo"accettato modifica ordine #117284549" e dovrebbe aver avuto conferma e sincronizzato
dati dopo"modifica ordine #117284549 comprare limite 1.00 SBRF-9.20 a 23557 sl: 0 tp: 0 scadenza: giorno -> 24138, sl: 0 tp: 0 scadenza: giorno posto in esecuzione in1299.618 ms"
2020.02.1310:00:09.529 Trades 'xxxxx': modify order #117284549 buy limit 1.00 SBRF-9.20 at 23557 sl: 0 tp: 0 expiration: day -> 24138, sl: 0 tp: 0 expiration: day
2020.02.1310:00:10.079 Trades 'xxxxx': accepted modify order #117284549 buy limit 1.00 SBRF-9.20 at 23557 sl: 0 tp: 0 expiration: day -> 24138, sl: 0 tp: 0 expiration: day
2020.02.1310:00:10.080 Trades 'xxxxx': cancel order #117284549 buy limit 1.00 SBRF-9.20 at 235572020.02.1310:00:10.105 Trades 'xxxxx': accepted cancel order #117284549 buy limit 1.00 SBRF-9.20 at 235572020.02.1310:00:10.828 Trades 'xxxxx': modify order #117284549 buy limit 1.00 SBRF-9.20 at 23557 sl: 0 tp: 0 expiration: day -> 24138, sl: 0 tp: 0 expiration: day placed for execution in1299.618 ms2020.02.1310:00:10.930 Trades 'xxxxx': cancel order #117284549 buy limit 1.00 SBRF-9.20 at 23557 placed for execution in850.015 ms
O facevano affidamento sulla sequenza degli eventi (ed era diverso), o semplicemente non tenevano conto di qualcosa.
Andrei!
Sarei d'accordo con te se questo Expert Advisor (non modificato da 5 anni ) funzionasse sempre correttamente!
Con qualsiasi azione sull'ordine nel consulente, non succede nulla finché non viene scoperto cosa è successo all'ordine.
E registra che l'ordine è stato modificato (Print(__FUNCTION__, ": Buy order modified.", "Nuovo prezzo = ", order_data.price_open, " Ticket = ", a_ticket);) no!
No e altro vocePrint(__FUNCTION__,": Acquista ordine in modifica. Ticket = ", a_ticket);
case SELECT_TRUE:
switch (order_data.real_state)
{
case ORDER_EXIST:
switch (o_status)
{
case BUY_ORDER:
BuyOrder.mem_time = GetMicrosecondCount ();
switch (BuyOrder.state)
{
case ORD_DO_SET: //Операции запрещены
BuyOrder.state = ORD_WORK; //Операции разрешены
Print ( __FUNCTION__ , ": Buy ордер установлен. Билет = " , a_ticket);
break ;
case ORD_DO_MODIFY: //Операции запрещены
if ( NormalizeDouble (BuyOrder.modify_price, Digits ()) == NormalizeDouble (order_data.price_open, Digits ()))
{
BuyOrder.state = ORD_WORK; //Изменено состояние ордера, над ним можно совершать операции
Print ( __FUNCTION__ , ": Buy ордер модифицирован. " , "Новая цена = " , order_data.price_open, " Билет = " , a_ticket);
}
elsePrint ( __FUNCTION__ , ": Buy ордер в процессе модификации. Билет = " , a_ticket);break ;
case ORD_DO_CANCEL: //Операции запрещены
Print ( __FUNCTION__ , ": OE Buy ордер в процессе удаления. Билет = " , a_ticket);
break ;
}
break
2020.02 . 1310 : 00 : 08.991 FCS_Trader (SBRF- 6.20 ,M1) ProcessOrders: Состояние Buy ордера не определено. Билет = 1172845492020.02 . 1310 : 00 : 11.491 FCS_Trader (SBRF- 6.20 ,M1) ProcessOrders: Состояние Buy ордера не определено. Билет = 1172845492020.02 . 1310 : 00 : 12.992 FCS_Trader (SBRF- 6.20 ,M1) ProcessOrders: Состояние Buy ордера не определено. Билет = 1172845492020.02 . 1310 : 00 : 14.485 FCS_Trader (SBRF- 6.20 ,M1) ProcessOrders: Состояние Buy ордера не определено. Билет = 1172845492020.02 . 1310 : 00 : 15.491 FCS_Trader (SBRF- 6.20 ,M1) ProcessOrders: Состояние Buy ордера не определено. Билет = 1172845492020.02 . 1310 : 00 : 16.982 FCS_Trader (SBRF- 6.20 ,M1) ProcessOrders: Состояние Buy ордера не определено. Билет = 1172845492020.02 . 1310 : 00 : 18.491 FCS_Trader (SBRF- 6.20 ,M1) ProcessOrders: Состояние Buy ордера не определено. Билет = 1172845492020.02 . 1310 : 00 : 19.989 FCS_Trader (SBRF- 6.20 ,M1) ProcessOrders: Состояние Buy ордера не определено. Билет = 1172845492020.02 . 1310 : 00 : 20.991 FCS_Trader (SBRF- 6.20 ,M1) ProcessOrders: Состояние Buy ордера не определено. Билет = 1172845492020.02 . 1310 : 00 : 22.489 FCS_Trader (SBRF- 6.20 ,M1) ProcessOrders: Buy ордер в процессе удаления. Билет = 1172845492020.02 . 1310 : 00 : 23.489 FCS_Trader (SBRF- 6.20 ,M1) ProcessOrders: Buy ордер в процессе удаления. Билет = 1172845492020.02 . 1310 : 00 : 24.491 FCS_Trader (SBRF- 6.20 ,M1) ProcessOrders: Buy ордер в процессе удаления. Билет = 1172845492020.02 . 1310 : 00 : 25.983 FCS_Trader (SBRF- 6.20 ,M1) ProcessOrders: Buy ордер в процессе удаления. Билет = 1172845492020.02 . 1310 : 00 : 26.991 FCS_Trader (SBRF- 6.20 ,M1) ProcessOrders: Buy ордер в процессе удаления. Билет = 117284549
Un record
2020.02 . 1310 : 00 : 08.991 FCS_Trader (SBRF- 6.20 ,M1) ProcessOrders: Состояние Buy ордера не определено. Билет = 117284549
può apparire solo se si è verificato un errore o lo stato dell'ordine non è definito ( caseSELECT_BUSY: )
Перед тем как приступить к изучению торговых функций платформы, необходимо создать четкое представление об основных терминах: ордер, сделка и позиция. — это распоряжение брокерской компании купить или продать финансовый инструмент. Различают два основных типа ордеров: рыночный и отложенный. Помимо них существуют специальные ордера Тейк Профит...
Purtroppo, la maggior parte degli errori (almeno per FORTS) sono fluttuanti!
Cioè è sempre molto difficile riprodurre un errore.
Non per niente questo argomento va avanti da quasi 6 anni....
Se ci fosse un errore nella logica dell'Expert Advisor, questo "scoppierebbe" spesso, non solo una o due volte a settimana di trading!
Inoltre, questo EA ha lavorato per più di 5 anni su 84 simboli!
Aggiunto
Oh e dal glitch (post sopra)
2020.02.1110:01:49.737 FCS_Trader (SBRF-3.20,M1) ProcessOrders: Состояние Buy ордера не определено. Билет = 117122773
C'era ancora una risposta di scambio in OnTradeTransaction() o i dati si sincronizzavano ancora nel terminale(quest'ultima voce)!
Dopo 1 minuto e 42 secondi ha rilevato cosa è successo all'ordine!
Aggiunto da
Sì e non sono io a mettere questi ritardi colossali nel registro!
2020.02.1310:00:04.427 Trades 'xxxxx': sell limit 1.00 SILV-12.20 at 18.91 placed for execution in3400.385 ms
2020.02.1310:00:05.049 Trades 'xxxxx': cancel order #117284388 buy limit 2.00 GAZR-9.20 at 210862020.02.1310:00:05.049 Trades 'xxxxx': cancel order #117284389 sell limit 1.00 GAZR-9.20 at 258582020.02.1310:00:05.106 Trades 'xxxxx': cancel order #117284392 buy limit 2.00 RTS-6.20 at 1453502020.02.1310:00:05.106 Trades 'xxxxx': cancel order #117284394 sell limit 1.00 RTS-6.20 at 1623702020.02.1310:00:05.815 Trades 'xxxxx': buy limit 1.00 SBRF-6.20 at 21997 placed for execution in4582.068 ms
2020.02.1310:00:05.816 Trades 'xxxxx': sell limit 2.00 SBRF-6.20 at 26879 placed for execution in4583.598 ms
2020.02.1310:00:06.809 Trades 'xxxxx': cancel order #117284397 sell limit 2.00 Si-12.20 at 665492020.02.1310:00:08.356 Trades 'xxxxx': buy limit 2.00 ROSN-6.20 at 42128 placed for execution in7119.210 ms
2020.02.1310:00:08.367 Trades 'xxxxx': sell limit 1.00 ROSN-6.20 at 51112 placed for execution in7129.944 ms
2020.02.1310:00:08.370 Trades 'xxxxx': accepted buy limit 1.00 MOEX-6.20 at 102312020.02.1310:00:08.374 Trades 'xxxxx': accepted sell limit 2.00 MOEX-6.20 at 124032020.02.1310:00:08.375 Trades 'xxxxx': buy limit 1.00 GBPU-6.20 at 1.2631 placed for execution in7093.203 ms
2020.02.1310:00:08.382 Trades 'xxxxx': buy limit 2.00 LKOH-6.20 at 62201 placed for execution in7100.184 ms
2020.02.1310:00:08.384 Trades 'xxxxx': sell limit 1.00 GBPU-6.20 at 1.3405 placed for execution in7101.788 ms
2020.02.1310:00:08.384 Trades 'xxxxx': sell limit 2.00 LKOH-6.20 at 66799 placed for execution in7102.416 ms
2020.02.1310:00:08.570 Trades 'xxxxx': accepted buy limit 7.00 Eu-9.20 at 711312020.02.1310:00:08.572 Trades 'xxxxx': buy limit 1.00 PLT-6.20 at 921.3 placed for execution in7170.723 ms
2020.02.1310:00:08.573 Trades 'xxxxx': accepted buy limit 1.00 MTSI-6.20 at 306642020.02.1310:00:08.574 Trades 'xxxxx': accepted sell limit 2.00 MTSI-6.20 at 372022020.02.1310:00:08.589 Trades 'xxxxx': buy limit 1.00 MIX-6.20 at 293475 placed for execution in7153.171 ms
2020.02.1310:00:08.590 Trades 'xxxxx': buy limit 2.00 MXI-6.20 at 2914.25 placed for execution in7155.083 ms
2020.02.1310:00:08.605 Trades 'xxxxx': buy limit 1.00 HYDR-6.20 at 6716 placed for execution in7169.712 ms
2020.02.1310:00:08.607 Trades 'xxxxx': sell limit 2.00 MXI-6.20 at 3295.65 placed for execution in7171.361 ms
2020.02.1310:00:08.609 Trades 'xxxxx': sell limit 1.00 MIX-6.20 at 331775 placed for execution in7173.465 ms
2020.02.1310:00:08.610 Trades 'xxxxx': sell limit 2.00 HYDR-6.20 at 8128 placed for execution in7174.417 ms
2020.02.1310:00:08.611 Trades 'xxxxx': buy limit 2.00 VTBR-6.20 at 4397 placed for execution in7166.885 ms
2020.02.1310:00:08.612 Trades 'xxxxx': sell limit 2.00 VTBR-6.20 at 5321 placed for execution in7167.615 ms
2020.02.1310:00:08.633 Trades 'xxxxx': buy limit 1.00 AUDU-6.20 at 0.6592 placed for execution in7115.432 ms
2020.02.1310:00:08.636 Trades 'xxxxx': accepted buy limit 1.00 RTKM-6.20 at 81442020.02.1310:00:08.640 Trades 'xxxxx': accepted sell limit 2.00 RTKM-6.20 at 104502020.02.1310:00:08.655 Trades 'xxxxx': buy limit 10.00 BR-7.20 at 51.87 placed for execution in7133.431 ms
2020.02.1310:00:08.658 Trades 'xxxxx': sell limit 2.00 BR-7.20 at 61.51 placed for execution in7136.161 ms
2020.02.1310:00:08.667 Trades 'xxxxx': buy limit 2.00 LKOH-12.20 at 59401 placed for execution in7072.427 ms
2020.02.1310:00:08.677 Trades 'xxxxx': sell limit 1.00 LKOH-12.20 at 72363 placed for execution in7081.993 ms
2020.02.1310:00:08.677 Trades 'xxxxx': buy limit 1.00 BR-9.20 at 54.06 placed for execution in7078.509 ms
2020.02.1310:00:08.690 Trades 'xxxxx': buy limit 1.00 CHMF-6.20 at 91501 placed for execution in6985.443 ms
2020.02.1310:00:08.704 Trades 'xxxxx': cancel order #117284430 buy limit 1.00 SBRF-6.20 at 219972020.02.1310:00:08.704 Trades 'xxxxx': cancel order #117284431 sell limit 2.00 SBRF-6.20 at 268792020.02.1310:00:08.734 Trades 'xxxxx': buy limit 2.00 SBPR-6.20 at 20354 placed for execution in6811.282 ms
2020.02.1310:00:08.734 Trades 'xxxxx': buy limit 2.00 MGNT-6.20 at 3404 placed for execution in6811.918 ms
2020.02.1310:00:08.735 Trades 'xxxxx': sell limit 2.00 MGNT-6.20 at 4128 placed for execution in6812.492 ms
2020.02.1310:00:08.736 Trades 'xxxxx': sell limit 2.00 SBPR-6.20 at 25106 placed for execution in6813.437 ms
2020.02.1310:00:08.807 Trades 'xxxxx': buy limit 1.00 MOEX-6.20 at 10231 placed for execution in6542.366 ms
2020.02.1310:00:08.809 Trades 'xxxxx': sell limit 2.00 MOEX-6.20 at 12403 placed for execution in6544.267 ms
2020.02.1310:00:08.811 Trades 'xxxxx': buy limit 1.00 MTSI-6.20 at 30664 placed for execution in6426.971 ms
2020.02.1310:00:08.829 Trades 'xxxxx': buy limit 7.00 Eu-9.20 at 71131 placed for execution in6491.851 ms
2020.02.1310:00:08.830 Trades 'xxxxx': sell limit 2.00 MTSI-6.20 at 37202 placed for execution in6445.075 ms
2020.02.1310:00:08.833 Trades 'xxxxx': buy limit 1.00 RTKM-6.20 at 8144 placed for execution in6401.223 ms
2020.02.1310:00:08.834 Trades 'xxxxx': sell limit 2.00 RTKM-6.20 at 10450 placed for execution in6402.302 ms
Questo senza considerare la risposta dello scambio!
Aggiunto
Dettagliate gli errori.
ORDER_DATA order_data;
ENUM_ORD_SELECT order_select = OrderRealSelect(a_ticket, order_data, true);
switch(order_select)
{
case SELECT_ERROR:
if(order_data.error_code == ERR_ZERO_TICKET)
{
switch(o_status)
{
case BUY_ORDER:
BuyOrder.Canceled(true);
Print(__FUNCTION__, ": Билет Buy ордера = 0");
break;
case SELL_ORDER:
SellOrder.Canceled(true);
Print(__FUNCTION__, ": Билет Sell ордера = 0");
break;
}
}
else
{
switch(o_status)
{
case BUY_ORDER:
BuyOrder.mem_time = GetMicrosecondCount();
Print(__FUNCTION__, ": Ошибка определения состояния Buy ордера! Билет = ", a_ticket, " Код ошибки: ", order_data.error_code);
break;
case SELL_ORDER:
SellOrder.mem_time = GetMicrosecondCount();
Print(__FUNCTION__, ": Ошибка определения состояния Sell ордера! Билет = ", a_ticket, " Код ошибки: ", order_data.error_code);
break;
}
}
break;
case SELECT_BUSY:
switch(o_status)
{
case BUY_ORDER:
BuyOrder.mem_time = GetMicrosecondCount();
Print(__FUNCTION__, ": Buy Ордер в переходном состоянии. Билет = ", a_ticket, " Состояние: ", order_data.state);
break;
case SELL_ORDER:
SellOrder.mem_time = GetMicrosecondCount();
Print(__FUNCTION__, ": Sell Ордер в переходном состоянии. Билет = ", a_ticket, " Состояние: ", order_data.state);
break;
}
break;
В языке MQL5 предусмотрена обработка некоторых предопределенных событий. Функции для обработки этих событий должны быть определены в программе MQL5: имя функции, тип возвращаемого значения, состав параметров (если они есть) и их типы должны строго соответствовать описанию функции-обработчика события. Именно по типу возвращаемого значения и по...
https://www.mql5.com/ru/blogs/post/733393
Forte, grazie per la recensione!
1. Che tipo di hardware? Il server è esigente, e qui sembra che abbia eseguito tutto su un PC normale. O mi sbaglio?
2. Hai controllato esattamente le impostazioni di runtime / plugin / routing? Assomiglia molto a un ritardo artificiale (per non bruciare il b-book).
Sarebbe interessante andare in fondo a questa storia.
ps: duplicato qui come vedrò la risposta (e devo controllare il blog)
ps: duplicato qui come vedrò la risposta (e devo controllare il blog)
Ha risposto lì.
Sarebbe interessante andare in fondo a questa storia.
Anno 6 che chiede agli sviluppatori e al broker di risolvere il problema....
Aggiunto
Per renderlo più facile da smistare, meglio usare ordini asincroni (più registri).
Non cambia nulla.... È triste (Open, Real, FORTS, Bild 2280).
Non c'è un log del terminale, perché gli sviluppatori non hanno ritenuto necessario registrare la risposta di scambio.
1 minuto e 42 secondi l'ordine è stato cancellato!
https://www.mql5.com/ru/blogs/post/733393
Aperto, reale, FORTS, Bild 2280
Oggi era "sovraccarico" a tutti, non c'era nessuna sincronizzazione:
Ecco l'inizio e la fine del registro (resettare l'EA a mano)
Su altri grafici (2 terminali 83 EAs) gli EAs hanno funzionato bene
Aggiunto
Mi sembra che "glitched" perché in qualche modo il terminale usato per sincronizzare
dati dopo"accettato modifica ordine #117284549" e dovrebbe aver avuto conferma e sincronizzato
dati dopo"modifica ordine #117284549 comprare limite 1.00 SBRF-9.20 a 23557 sl: 0 tp: 0 scadenza: giorno -> 24138, sl: 0 tp: 0 scadenza: giorno posto in esecuzione in 1299.618 ms"
Oggi è stato "glitchato" a tutti, non c'era nessuna sincronizzazione:
Ecco l'inizio e la fine del registro (resettare l'EA a mano)
Sembra più un errore nella logica dell'Expert Advisor.
O si sono basati sulla sequenza degli eventi (che era diversa), o semplicemente non hanno preso in considerazione qualcosa.
Più come un errore nella logica di EA.
O facevano affidamento sulla sequenza degli eventi (ed era diverso), o semplicemente non tenevano conto di qualcosa.
Andrei!
Sarei d'accordo con te se questo Expert Advisor (non modificato da 5 anni ) funzionasse sempre correttamente!
Con qualsiasi azione sull'ordine nel consulente, non succede nulla finché non viene scoperto cosa è successo all'ordine.
E registra che l'ordine è stato modificato (Print(__FUNCTION__, ": Buy order modified.", "Nuovo prezzo = ", order_data.price_open, " Ticket = ", a_ticket);) no!
No e altro voce Print ( __FUNCTION__ , ": Acquista ordine in modifica. Ticket = " , a_ticket);
Un record
può apparire solo se si è verificato un errore o lo stato dell'ordine non è definito ( case SELECT_BUSY: )
Aggiunto
La funzione OrderRealSelect() ha sempre funzionato correttamente fino ad oggi (penso che funzioni ancora...)
Purtroppo, la maggior parte degli errori (almeno per FORTS) sono fluttuanti!
Cioè è sempre molto difficile riprodurre un errore.
Non per niente questo argomento va avanti da quasi 6 anni....
Se ci fosse un errore nella logica dell'Expert Advisor, questo "scoppierebbe" spesso, non solo una o due volte a settimana di trading!
Inoltre, questo EA ha lavorato per più di 5 anni su 84 simboli!
Aggiunto
Oh e dal glitch (post sopra)
C'era ancora una risposta di scambio in OnTradeTransaction() o i dati si sincronizzavano ancora nel terminale(quest'ultima voce)!
Dopo 1 minuto e 42 secondi ha rilevato cosa è successo all'ordine!
Aggiunto da
Sì e non sono io a mettere questi ritardi colossali nel registro!
Questo senza considerare la risposta dello scambio!
Aggiunto
Dettagliate gli errori.
Vedremo domani se c'è un problema
Se riprendete la storia di questo argomento, all'inizio eravamo indignati per ritardi di decine di millisecondi,
poi secondi, e ora minuti!
Lentamente comincio a riscrivere i robot per KVIK!
Con MT5 potenziale di 6-7 millisecondi con la mia rete (da casa, esclusa la risposta della borsa)
Con questiritardi, secondo me, il terminale non ha futuro.