Algoritmos, métodos de solución, comparación de su rendimiento - página 21

 

Si hay que creer al perfilador, en el mismo TC OrderSend (quinta parte) tarda el 88% del tiempo.

Si lo transfiero a una máquina virtual, sólo se necesita un 2%.

No entiendo por qué hay tanta diferencia.

 
fxsaber:

Si el perfilador es creíble, OrderSend (cinco vías) tarda el 88% de mi tiempo en el mismo TC.

Si lo transfiero a una máquina virtual, sólo se necesita un 2%.

No entiendo por qué esa diferencia.

Sólo puedo adivinar.

OrderSend envía un mensaje al sitio MQL, mientras que la máquina virtual no tocaOrderSend y por lo tanto trabaja más rápido))

En las últimas compilaciones, el propio terminal está sobrecargado durante la optimización y las pruebas, excepto para los agentes probadores.

No existe tal cosa en las construcciones anteriores.

 
Sergey Chalyshev:

Sólo puedo especular.

OrderSend - envía un mensaje al sitio MQL, y el virtual no toca OrderSend y por lo tanto funciona más rápido ))))

En las últimas compilaciones, al optimizar y probar, excepto los agentes de prueba, el propio terminal se carga al límite.

Esta tarea no existe en las construcciones anteriores.

He ejecutado el perfilador con datos históricos. Por lo tanto, se excluye el envío a algún lugar.

 
En las nuevas construcciones, ¿se carga el propio terminal durante las pruebas y la optimización? En el administrador de tareas, ¿cuánto está consumiendo?
 
fxsaber:

Si hay que creer al perfilador, en el mismo TC OrderSend (quinta parte) tarda el 88% del tiempo.

Si lo transfiero a una máquina virtual, sólo se necesita un 2%.

No entiendo por qué tanta diferencia.

¿El 88% de qué? Si es del 2%, entonces está bien.

 
fxsaber:

Si el perfilador es creíble, OrderSend (de cinco vías) tarda el 88% de mi tiempo en el mismo TC.

Si lo transfiero a una máquina virtual, sólo se necesita un 2%.

No entiendo por qué hay tanta diferencia.

Comprobación del margen y otras condiciones comerciales.

Si actualizas el Virtual a MT5 tester, será casi lo mismo.

 
Bueno, sí, bueno, sí.
 
Andrey Khatimlianskii:

Comprobación de los márgenes y otras condiciones comerciales.

Si actualizas Virtual a la condición de probador de MT5, es prácticamente lo mismo.

Modo Pips. Lo más probable es que el perfilador esté mintiendo.

 
Andrey Khatimlianskii:

Si actualizas Virtual a un probador MT5, es casi lo mismo.

Según las cifras, la diferencia es de más de dos órdenes de magnitud

 
Andrei Trukhanovich:

Si las cifras son creíbles, la diferencia es de más de dos órdenes de magnitud.

Cifras citadas de mi gran EA, que corro en el Optimizador. Pero parece que ha empezado a entender dónde están los frenos. Aquí hay un simple Asesor Experto.

#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;
  }    
}

Es casi imposible esperar su perfil en las garrapatas - tarda demasiado tiempo. Por lo tanto, lo he puesto en marcha en el modo optimizador.

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


Si descomento las dos líneas resaltadas y pongo el parámetro de entrada Virtual = true, se convierte en esto.

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


La diferencia es de un orden de magnitud. El perfilador muestra una diferencia aún mayor. Lo hago todo sólo por pips y por ticks reales.