Optimización en el Probador de Estrategias - página 2

 

escribió un EA, corrió la mirada de optimización, mira.... y fuera... Me parece que https://www.mql5.com/ru/docs/series Copy... están trabajando lentamente.

Документация по MQL5: Доступ к таймсериям и индикаторам
Документация по MQL5: Доступ к таймсериям и индикаторам
  • www.mql5.com
Доступ к таймсериям и индикаторам - Документация по MQL5
 

Estoy optimizando rápidamente. No tengo ninguna queja. Últimamente, sin embargo, la optimización no se inicia de inmediato, sino que se detiene en el lugar (se puede escuchar el disco trabajando duro para hacer algo). Tengo que saltar constantemente de un punto de acceso a otro. Sólo entonces la optimización empieza a funcionar.

 
gumgum:

y fuera... Me parece quehttps://www.mql5.com/ru/docs/seriesCopy... funciona lentamente.

No está muy claro lo que quiere decir con eso.

Explíquese con más precisión.

 
gpwr:

Estoy optimizando rápidamente. No tengo ninguna queja. Últimamente, sin embargo, la optimización no se inicia de inmediato, sino que se detiene en el lugar (se puede escuchar el disco trabajando duro para hacer algo). Tengo que saltar constantemente de un punto de acceso a otro. Sólo entonces la optimización empieza a funcionar.

¿Podría describir la situación con más detalle, si es posible? ¿Cuánto tiempo hay que esperar? ¿Qué se escribe en el cuaderno de bitácora (si es que se escribe algo)?

 
Dmitriy2:

Y seleccioné algunos parámetros, hice clic en la prueba... por la mañana conté el número de carreras y cuántas quedaban... calculó que faltaban 50 días para el final de la optimización... mi ordenador tiene 4 núcleos + 2 agentes de núcleo... No necesito esta optimización, así que la desactivé...

Intenta optimizar primero algunos parámetros y luego otros, aumentando el paso. Luego puede ejecutarlo una vez más dentro de la muestra.
 
alexvd:

No está muy claro lo que quieres decir.

Explíquese con más precisión.

Por ejemplo:

double open(string sym,ENUM_TIMEFRAMES tf,int ps)
{
double ren[1]={EMPTY_VALUE};
CopyOpen(sym,tf,ps,1,ren); 
return(ren[0]); 
}

Si se piden los últimos 50000 valores y se mide el tiempo de lectura del archivo, la diferencia es de ~0%~30%. 50000 valores y medir el tiempo, escribir en el archivo, a continuación, medir el tiempo para leer desde el archivo, entonces la diferencia es ~0%~30% a favor de la primera.

Документация по MQL5: Файловые операции / FileWrite
Документация по MQL5: Файловые операции / FileWrite
  • www.mql5.com
Файловые операции / FileWrite - Документация по MQL5
 
gumgum:

He aquí un ejemplo:

entonces la diferencia es de ~0%~30% a favor del primero.

¿Así que lee más rápido del archivo?

¿Por qué copiar un valor a la vez cuando puedes copiar 50.000 a la vez (si es que tienes esa cantidad)?

 
alexvd:

¿Así que lee más rápido del archivo?

¿Por qué copiar un valor a la vez cuando puedes copiar 50.000 a la vez (si es que tienes esa cantidad)?

Desde el archivo es más lento. Entonces, ¿por qué tanta diferencia entre "a la vez 50000" y la última llamada?

 
gumgum:

Entonces, ¿por qué hay tanta diferencia entre "a la vez 50.000" y la última llamada?

La aritmética es sencilla (las cifras son aproximadas, pero el orden de magnitud es importante).

Acceder a un elemento del array ~ 5 ciclos de CPU.

La llamada a la función es de ~100 ciclos de reloj.

Esto hace que una sola llamada a la función para obtener la cantidad necesaria de datos a la vez sea más barata en términos de velocidad de ejecución.

 

La discusión parece haber entrado en los detalles del código de un EA en particular. Pero me he dado cuenta de que casi todo el tiempo se gasta en el trabajo preparatorio (más del 90%) sin importar qué EA está optimizado. Y así es con cada ejecución (pase en el registro) con nuevos parámetros de entrada que se optimizan. Así que, por muy bien que optimices tu código, sólo obtendrás un par de puntos porcentuales de mejora del rendimiento.

Aalexvd: Por favor, vea el primer y tercer post de este hilo: los he descrito en detalle con muestras y registros.

Si un probador pudiera hacer el trabajo preliminar sólo una vez durante la optimización y luego calcular el Asesor Experto enumerando los datos de entrada, el tiempo de optimización sería al menos un orden de magnitud más corto. Luego podríamos hablar del código del Asesor Experto en sí mismo.

Razón de la queja: