MT5 e velocidade em ação - página 29

 
Andrey Khatimlianskii:

Identificar uma interrupção na comunicação

Eu não sei como fazer isso.

 
fxsaber:

Eu não sei como fazer isso.

O que o faz pensar que eles acontecem e a OnTrade se perde? A partir da documentação?

 
Andrey Khatimlianskii:

O que o faz pensar que eles acontecem e a OnTrade se perde? A partir da documentação?

Porque a Relogin restabelece o cache histórico, que (presumo) é dopado através do mecanismo OnTrade.

 
fxsaber:

Não tenho certeza de como fazer isso.

Sem sair do tempo intertiki MT5, se possível. E com operações comerciais em relação à ordem no CD sem ajuda interna, não consigo pensar em nada.

 
Valeriy Yastremskiy:

Não sair do tempo de entretítulos MT5, se possível. E com operações comerciais em relação à ordem no CD sem ajuda interna, não consigo pensar em nada.

Eu não entendo.

 
fxsaber:

Eu não entendo.

Sim, algo está errado. O tempo entre colchetes é apenas para carrapatos ausentes devido a uma interrupção na comunicação. E em termos de consultas e correção de respostas em pedidos, negociações e estados de posição, se a resposta for perdida ou alterada devido a uma falha de conexão e atrasos por causa disso, não parece haver uma solução barata. A reconquista no próximo tick nem sempre é uma opção.

A solução para mim seria uma função interna para acompanhar o status das transações/posições com relação às ordens para abrir, modificar, fechar parcialmente e fechar totalmente uma posição. O pedido de rastreamento do resultado poderia ser estabelecido na própria ordem. E obtenha o resultado no tick atual e não no próximo.

 
fxsaber:

Você pode me dizer o que fazer para que eu não tenha que lidar com isso enquanto negocia?

2020.09.15 22:17:04.633 Alert: Time[NewTicks.mqh 33: ::SymbolInfoTick(_Symbol,Tick)] = 13 ms.
2020.09.15 22:17:04.638 Alert: Time[NewTicks.mqh 33: ::SymbolInfoTick(_Symbol,Tick)] = 18 ms.
2020.09.15 22:17:04.640 Alert: Time[NewTicks.mqh 33: ::SymbolInfoTick(_Symbol,Tick)] = 20 ms.

A julgar pela época da extração, tudo aconteceu em 7ms.

Se você quiser ter uma discussão construtiva, dê-nos as condições de teste completas (servidor, tipo de conta, número de símbolos selecionados, número de EAs, etc.).


O código de medição SymbolInfoTick runtime:

void OnTick()
  {
   MqlTick Tick;
//---
   ulong start,end,max_time=0,avr_time=0;
   int   count=1000;
   for(int i=0; i<count; i++)
     {
      start=GetMicrosecondCount();
      SymbolInfoTick(_Symbol, Tick);
      end=GetMicrosecondCount()-start;
      //---
      if(end>max_time)
         max_time=end;
      avr_time+=end;
     }
   Print("SymbolInfoTick max time: ",DoubleToString(max_time/1000.0,3)," ms; avr time: ",DoubleToString(avr_time/1000.0/count,3)," ms; ",count," iterations");
  }

No servidor MetaQuotes-Demo (20 símbolos selecionados, Netting, 4 posições abertas):

2020.09.16 12:34:22.429 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.017 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:27.148 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.022 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:27.456 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.002 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:27.751 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.021 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:28.145 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.003 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:28.652 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.002 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:30.051 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.020 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:30.259 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.019 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:30.861 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.019 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:31.159 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.020 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:32.376 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.002 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:32.658 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.017 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:34:34.867 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.017 ms; avr time: 0.000 ms; 1000 iterations

131 símbolos selecionados, 10 posições em aberto:

2020.09.16 12:44:50.554 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.003 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:44:52.337 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.019 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:44:54.960 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.019 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:44:55.587 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.020 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:44:55.863 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.016 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:44:56.187 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.002 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:44:56.958 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.018 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:44:59.989 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.003 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:45:00.298 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.021 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:45:07.609 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.024 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:45:07.891 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.017 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:45:08.790 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.019 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:45:09.617 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.019 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:45:09.933 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.002 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:45:11.841 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.002 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:45:13.416 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.022 ms; avr time: 0.000 ms; 1000 iterations
2020.09.16 12:45:13.709 SymbolInfoTick (EURUSD,H1)      SymbolInfoTick max time: 0.017 ms; avr time: 0.000 ms; 1000 iterations
Windows 10 build 18363, Intel Xeon  E5-2630 v4 @ 2.20 GHz, 52 / 63 Gb memory
Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
Anton:

A julgar pela hora das entradas dos registros, tudo aconteceu em 7ms.

Isso são três EAs diferentes.

Se você quiser uma discussão construtiva, então dê todas as condições de teste por completo (servidor, tipo de conta, número de símbolos selecionados, número de EAs, etc.).

Conta real, RannForex-Server, 16 símbolos, gráfico M1 aberto em cada um (5000 barras máximas), em cada um deles está sendo executado um EA, que acessa apenas seu próprio símbolo.

Pode haver cerca de 50 posições e o mesmo número de pedidos de cada vez. Não há indicadores, e apenas CopyTicksRange (carrapatos frescos) e SymbolInfoTick são usados para obter os preços. Não há referência a barras.

 
fxsaber:

Estes são três EAs diferentes, apresentados.

Conta real, RannForex-Server, 16 símbolos, gráfico M1 aberto em cada um (5000 barras máximas), em cada um deles está sendo executado um EA que só acessa seu próprio símbolo.

Pode haver cerca de 50 posições e o mesmo número de pedidos de cada vez.

Se eu entendi corretamente, não há um EA lá, mas um testador de estresse em cada símbolo. Isto muda completamente as coisas. E mostra a ocultação das condições iniciais.

Ou seja, 16 fios em um processador 8(4+HT) (+N fios do terminal do trabalhador em paralelo) sem parar e sem atrasos se quebram em um objeto de banco de dados de símbolos sincronizados. Os cadeados de leitura/escrita são misturados porque há uma escrita constante de carrapatos.

Normalmente em tal perfil, dependendo da inclinação do processador e seu domínio dos fios, cada fio pode passar de 60% a 80% do tempo de espera.

E isto é independente do tipo de tarefa.

 
Renat Fatkhullin:

Se eu entendi corretamente, não há um EA lá, mas um testador de estresse em cada símbolo.

Entendido equivocadamente. Cada EA é puramente comercial (no Testador por carrapatos reais não abranda) e não depende de outros. Toda lógica de negociação é executada apenas no OnTick, sem spam das ordens de negociação, sem recorrência, sem globalização e sem recursos.

OnTrade*, OnBook não são utilizados. Segundo timer e OnChartEvent para o caso quando certas teclas são pressionadas.


Estou certo de que a implementação adequada (por você ou por mim) de instantâneos reduzirá muito o número de chamadas de funções ambientais regulares. Da mesma forma, os atrasos serão drasticamente reduzidos.

Nunca pensei que isso chegaria a truques de instantâneo. Estou estudando a questão, já que a implementação padrão do MT5-assessor é coxa, infelizmente.