Los "pases" del optimizador genético tardan mucho más que los tests individuales

 

Hola a todos.

Recientemente estuve optimizando un EA utilizando el modo rápido (algoritmo genético) en MT5. El problema surge cuando el optimizador realiza cada "pase - test" de la optimización. A continuación, dejo un video donde se puede apreciar el "error" que noté durante el proceso.


Como se puede observar en el video, al momento de probar los 2 pases individuales, en total se tarda aproximadamente 33 segundos.

Sin embargo, cuando el optimizador genético realiza los test, el tiempo se eleva a un total de 2 minutos y 3 segundos.

Esto resulta bastante extraño, considerando que se están utilizando varios agentes (es decir, los "cores" del CPU del ordenador).

Además, quisiera mencionar que el EA que estoy optimizando no es particularmente lento.

En mi opinión, su rendimiento es aceptable: he optimizado el uso de bucles, la copia de datos, las llamadas a funciones, etc. Toda la lógica se ejecuta únicamente una vez por cada nueva vela.

Ejemplo de OnTick:

void OnTick()
 {
//---
  const datetime time_curr = TimeCurrent();
  bool new_day = false;

//--- Bloque 1 | Control diario
  if(bar_controlerd1.IsNewBar(time_curr))
   {
    g_estudio.OnNewDay();

    //---
    if(controler_w1.IsNewBar(time_curr)) 
      g_estudio.OnNewWeek();

    new_day = true;
   }


//---
  if(controler_curr.IsNewBar(time_curr))
   {
    ICTGen_FuncionOnBar(new_day, time_curr);

    //--- Conceptos
    g_range.OnNewBar();

    if(g_range.IsNewBarConcept())
      g_super_trend.CopyData(0, 3, 1); // Copiamos la dirección


    //--- Estrategia
    g_estudio.OnNewBar(time_curr);
    ICTGen_FuncionOnEndBar();
   }
 }

¿A alguien le ha ocurrido algo similar? ¿Cuáles podrían ser las posibles causas de este comportamiento tan inusual?

 
Niquel Mendoza:
Es normal. El modo genético añade sobrecarga por clasificación, mutación y comunicación entre agentes. No busca velocidad, sino eficiencia en la búsqueda de combinaciones.