1. Que tipo de hardware? O servidor é exigente, e aqui parece que ele rodava tudo em um PC normal. Ou eu estou errado?
2. Você verificou exatamente as configurações de tempo de execução / plugins / roteamento? Parece muito com um atraso artificial (para não queimar o livro).
Seria interessante chegar ao fundo desta questão.
ps: duplicado aqui como verei a resposta (e preciso verificar o blog)
Obrigado pela informação, pesquisa muito útil sobre um terminal em um vácuo onde não se pode culpar uma conexão de internet ruim e uma troca ruim que atrasa a execução.
Ou eles confiaram na sequência de eventos (e foi diferente), ou simplesmente não levaram em conta alguma coisa.
Andrei!
Eu concordaria com você se este Expert Advisor (não editado por 5 anos ) sempre funcionasse corretamente!
Com qualquer ação na ordem no Expert Advisor, nada acontece até que seja descoberto o que aconteceu com a ordem.
E registra que o pedido foi modificado (Print(__FUNCTION__, ": Pedido de compra modificado.", "Novo preço = ", order_data.price_open, " Ticket=", a_ticket);) não!
Não e outra entradaPrint(__FUNCTION__,": Ordem de compra em modificação. 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
Uma gravação
2020.02 . 1310 : 00 : 08.991 FCS_Trader (SBRF- 6.20 ,M1) ProcessOrders: Состояние Buy ордера не определено. Билет = 117284549
só pode aparecer se tiver ocorrido um erro ou o estado do pedido não estiver definido ( caseSELECT_BUSY: )
Перед тем как приступить к изучению торговых функций платформы, необходимо создать четкое представление об основных терминах: ордер, сделка и позиция. — это распоряжение брокерской компании купить или продать финансовый инструмент. Различают два основных типа ордеров: рыночный и отложенный. Помимо них существуют специальные ордера Тейк Профит...
Infelizmente, a maioria dos erros (pelo menos para FORTS) estão flutuando!
Ou seja, é sempre muito difícil reproduzir um erro.
Não é à toa que este tópico vem sendo discutido há quase 6 anos....
Se houvesse um erro na lógica do Expert Advisor, ele "estalaria" com freqüência, não apenas uma ou duas vezes por semana comercial!
Além disso, esta EA trabalha há mais de 5 anos com 84 símbolos!
Adicionado
Oh e da falha (poste acima)
2020.02.1110:01:49.737 FCS_Trader (SBRF-3.20,M1) ProcessOrders: Состояние Buy ордера не определено. Билет = 117122773
Houve ainda uma resposta de troca na OnTradeTransaction() ou os dados ainda estavam sincronizados no terminal(esta última entrada)!
Depois de 1 minuto e 42 segundos detectou o que aconteceu com o pedido!
Adicionado por
Sim e não fui eu quem colocou esses atrasos colossais no tronco!
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
Isso sem levar em conta a resposta de troca!
Adicionado
Detalhava os erros.
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
Legal, obrigado pela revisão!
1. Que tipo de hardware? O servidor é exigente, e aqui parece que ele rodava tudo em um PC normal. Ou eu estou errado?
2. Você verificou exatamente as configurações de tempo de execução / plugins / roteamento? Parece muito com um atraso artificial (para não queimar o livro).
Seria interessante chegar ao fundo desta questão.
ps: duplicado aqui como verei a resposta (e preciso verificar o blog)
ps: duplicado aqui como eu verei a resposta (e preciso verificar o blog)
Respondeu lá.
Seria interessante chegar ao fundo desta questão.
Ano 6 pedindo aos desenvolvedores e corretores que o resolvam....
Adicionado
Para facilitar a classificação, é melhor usar ordens assíncronas (mais logs).
Nada muda.... É triste (Open, Real, FORTS, Bild 2280).
Não há nenhum registro terminal, porque os desenvolvedores não consideraram necessário registrar a resposta de troca.
1 minuto e 42 segundos o pedido foi apagado!
https://www.mql5.com/ru/blogs/post/733393
Aberto, real, FORTS, Bild 2280
Hoje estava "sobrecarregado", não havia nenhuma sincronização:
Aqui está o início e o fim do registro (reiniciar a EA à mão)
Em outros gráficos (2 terminais 83 EAs) EAs funcionaram bem
Adicionado
Parece-me que "brilhou" porque, de alguma forma, o terminal usado para sincronizar
dados após"aceitar o pedido de modificação nº 117284549" e deve ter sido confirmado e sincronizado
dados após"modificar pedido nº 117284549 limite de compra 1,00 SBRF-9,20 a 23557 sl: 0 tp: 0 vencimento: dia -> 24138, sl: 0 tp: 0 vencimento: dia colocado para execução em 1299.618 ms"
Hoje em dia, tem sido "com falhas" de todo, não houve nenhuma sincronização:
Aqui está o início e o fim do registro (reiniciar a EA à mão)
Parece mais um erro na lógica do Expert Advisor.
Ou eles se baseavam na seqüência de eventos (que era diferente), ou simplesmente não levavam algo em conta.
Mais como um erro na lógica do EA.
Ou eles confiaram na sequência de eventos (e foi diferente), ou simplesmente não levaram em conta alguma coisa.
Andrei!
Eu concordaria com você se este Expert Advisor (não editado por 5 anos ) sempre funcionasse corretamente!
Com qualquer ação na ordem no Expert Advisor, nada acontece até que seja descoberto o que aconteceu com a ordem.
E registra que o pedido foi modificado (Print(__FUNCTION__, ": Pedido de compra modificado.", "Novo preço = ", order_data.price_open, " Ticket=", a_ticket);) não!
Não e outra entrada Print ( __FUNCTION__ , ": Ordem de compra em modificação. Ticket = " , a_ticket);
Uma gravação
só pode aparecer se tiver ocorrido um erro ou o estado do pedido não estiver definido ( case SELECT_BUSY: )
Adicionado
A função OrderRealSelect() sempre funcionou corretamente até hoje (acho que ainda funciona...)
Infelizmente, a maioria dos erros (pelo menos para FORTS) estão flutuando!
Ou seja, é sempre muito difícil reproduzir um erro.
Não é à toa que este tópico vem sendo discutido há quase 6 anos....
Se houvesse um erro na lógica do Expert Advisor, ele "estalaria" com freqüência, não apenas uma ou duas vezes por semana comercial!
Além disso, esta EA trabalha há mais de 5 anos com 84 símbolos!
Adicionado
Oh e da falha (poste acima)
Houve ainda uma resposta de troca na OnTradeTransaction() ou os dados ainda estavam sincronizados no terminal(esta última entrada)!
Depois de 1 minuto e 42 segundos detectou o que aconteceu com o pedido!
Adicionado por
Sim e não fui eu quem colocou esses atrasos colossais no tronco!
Isso sem levar em conta a resposta de troca!
Adicionado
Detalhava os erros.
Veremos amanhã se há uma falha
Se você pegar a história deste tópico, no início ficamos indignados com atrasos de dezenas de milissegundos,
então segundos, e agora minutos!
Lentamente começo a reescrever robôs para o KVIK!
Com potencial MT5 de 6-7 milissegundos com minha rede (de casa, excluindo a resposta de troca)
Comatrasos como estes, em minha opinião, o terminal não tem futuro.