Algoritmos, métodos de solução, comparação de seu desempenho - página 21

 

Para acreditar no perfilador, na mesma TC OrderSend (quinta parte) leva 88% do tempo.

Se eu o transfiro para uma máquina virtual, são necessários apenas 2%.

Por que há tanta diferença, eu não entendo.

 
fxsaber:

Para acreditar no perfilador, na mesma TC OrderSend (quinta parte) leva 88% do tempo.

Se eu o transfiro para uma máquina virtual, são necessários apenas 2%.

Por que tal diferença, eu não entendo.

Eu só posso adivinhar.

OrderSend envia uma mensagem para o site da MQL, enquanto a máquina virtual não toca naOrderSend e, portanto, funciona mais rápido))))

Nas últimas construções, o terminal em si é sobrecarregado durante a otimização e os testes, exceto para os agentes de teste.

Não existe tal coisa em construções anteriores!

 
Sergey Chalyshev:

Eu só posso especular.

OrderSend - envia uma mensagem para o site da MQL, e o virtual não toca na OrderSend e, portanto, funciona mais rápido ))))

Nas últimas construções, ao otimizar e testar, com exceção dos agentes de teste, o próprio terminal está sobrecarregado.

Não existe tal tarefa em construções anteriores!

Eu fiz o perfil com base em dados históricos. Portanto, o envio a algum lugar está excluído.

 
Nas novas construções, você carrega o próprio terminal durante os testes e a otimização? No gerente de tarefas, quanto ele está consumindo?
 
fxsaber:

Para acreditar no perfilador, na mesma TC OrderSend (quinta parte) leva 88% do tempo.

Se eu o transfiro para uma máquina virtual, são necessários apenas 2%.

Por que tanta diferença, eu não entendo.

88% de quê? Se a partir de 2%, então está bem.

 
fxsaber:

Para acreditar no perfilador, OrderSend (cinco vias) leva 88% do meu tempo no mesmo TC.

Se eu o transfiro para uma máquina virtual, são necessários apenas 2%.

Por que há tanta diferença, eu não entendo.

Verificação da margem e outras condições comerciais.

Se você atualizar o testador do Virtual para o MT5, será quase o mesmo.

 
Bem, sim, bem, sim.
 
Andrey Khatimlianskii:

Verificação das margens e outras condições comerciais.

Se você atualizar o status de testador do Virtual para o MT5, é praticamente o mesmo.

Modo Pips. O mais provável é que o perfilador esteja mentindo.

 
Andrey Khatimlianskii:

Se você atualizar o Virtual para um testador MT5, é quase a mesma coisa.

De acordo com os números, a diferença é de mais de duas ordens de grandeza

 
Andrei Trukhanovich:

A acreditar nos números, a diferença é de mais de duas ordens de grandeza

Citei números de minha grande EA, que eu corro no Otimizador. Mas parece ter começado a entender onde estão os freios. Aqui está um simples Expert Advisor.

#include <MT4Orders.mqh>

//#define VIRTUAL_TESTER // Запуск в виртуальном торговом окружении
//#include <fxsaber\Virtual\Virtual.mqh>

#define  Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

input int Offset = 10000;
input int inFakeRange = 0;

void OnTick()
{
  static bool FirstRun = true;
  static int Sign = 1;
  
  if (FirstRun)
    FirstRun = (OrderSend(_Symbol, OP_BUYLIMIT, 1, Ask - Offset * _Point, 0, 0, 0) == -1);
  else if (OrderSelect(0, SELECT_BY_POS))  
  {
    OrderModify(OrderTicket(), OrderOpenPrice() + Sign * _Point, 0, 0, 0);
    
    Sign = -Sign;
  }    
}

É quase impossível esperar pelo seu perfil sobre carrapatos - leva muito tempo. Portanto, eu o lancei no modo Otimizador.

optimization finished, total passes 11
optimization done in 0 minutes 55 seconds
shortest pass 0:00:04.300, longest pass 0:00:06.442, average pass 0:00:05.058


Se eu descomentar as duas linhas destacadas e definir o parâmetro de entrada Virtual = verdadeiro, torna-se assim.

optimization finished, total passes 11
optimization done in 0 minutes 07 seconds
shortest pass 0:00:00.355, longest pass 0:00:01.208, average pass 0:00:00.590


A diferença é uma ordem de grandeza. O perfilador mostra uma diferença ainda maior. Eu faço tudo apenas por pips e por carrapatos reais.

Razão: