El terminal MT5 se ha actualizado hoy y la ventana de "Optimización" no aparece durante la prueba - página 5

 
Texnolog:

¿Por qué romper un buen algoritmo antiguo y sustituirlo por uno nuevo que es 3 veces más lento?

El algoritmo del probador genético no ha cambiado. Y las afirmaciones sobre las 3 veces son absolutamente infundadas.

El método de trabajo de un caché de resultados anteriores cambió. Y se hizo mucho mejor y más completa que la anterior.

Si necesita introducir un nuevo enfoque en el método genético, añada un nuevo elemento a la pestaña "optimización",

Crear una descripción y técnicas para trabajar con ella.

Eche un vistazo a los enlaces de arriba - todos estos artículos son de nuestro sitio. El optimizador genético ha sido discutido instantáneamente durante muchos años.

Busca "probador de estrategias", "optimizador genético" en la búsqueda, por favor.

Y hazme caso: la optimización de un solo factor de recuperación en la genética está contraindicada. Simplemente engañas al algoritmo con una relación"beneficio/máximo drawdown" completamente inestable y engañosa (para los automáticos), que genera fácilmente valores enormes. Piensa en cómo y por qué.


El lunes corregiremos el dibujo del gráfico de optimización.

 
¿Habrá ejecución parcial de las órdenes limitadas, en función del volumen del mercado?
 
pivomoe:
¿Habrá una ejecución parcial de las órdenes limitadas, en función de los volúmenes que pasen por el mercado?

¿Ha visto alguna vez volúmenes en un vaso en la historia? Es poco realista ponerlo en práctica sin tener una visión del mercado.

 
Aleksey Vyazmikin:

¿Ha visto alguna vez volúmenes en un vaso en la historia? Es imposible hacerlo sin un molde del vaso.

No se me ocurriría. Me gustaría que el límite de compra con precio 90 y lote 10 se activara parcialmente, si, por ejemplo, hubiera un tick de VENTA con precio 89 y volumen 1. Ahora es muy triste. La orden se activaría si hubiera un tick de COMPRA con el precio 90 y el lote 1... y a todo volumen.

 
Renat Fatkhullin:

El algoritmo del probador genético no ha cambiado. Las afirmaciones sobre las 3 veces son absolutamente infundadas.

Lo que se ha cambiado es el funcionamiento de la caché de resultados anteriores. Y se convirtió en algo radicalmente mejor y más completo que el anterior.


Hice algunas pruebas comparativas en las nuevas y viejas construcciones del probador.

Aquí están los resultados. Registros y descripción en el post #34.

11

 

Aquí está mi prueba con las condiciones sugeridas:

  • ajustes de https://www.mql5.com/ru/forum/241285/page4#comment_7271206
  • todas las cachés de los archivos de los probadores una vez eliminadas del disco antes de que comiencen las pruebas
  • Windows 10, Intel Xeon E5-2630 v4 a 2,20 GHz, 8 núcleos utilizados para los agentes

Pase completo hasta el final, luego reinicio del terminal
con parada en 1000 (aprox.) pases
Continuar después de la parada
Metatrader 5 build 1755
38 segundos, 4780 pases
15 segundos, 1105 pases
25 segundos, 3487 pases
Metatrader 5 build 180933 segundos, 5.549 pases
9 segundos, 1126 pases
36 segundos, 5863 pases


Metatrader 5 build 1755:

  • Bild 1755 full pass, un total de 8960 variantes pasadas, de las cuales 4780 fueron realmente calculadas y 4180 fueron tomadas de la caché acumulada en la misma sesión

    después de lo cual el terminal se reinicia para evitar el efecto directo de las cachés calientes en la memoria
    2018.04.30 11:20:46.867	Tester	Best result 3391.17 produced at generation 22. Next generation 33
    2018.04.30 11:20:47.118	Tester	genetic calculation is over
    2018.04.30 11:20:47.126	Tester	4697 records written to file cache C:\Users\sys\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\tester\cache\Moving Average.EURUSD.M5.1.xml
    2018.04.30 11:20:47.338	Tester	result cache used 4180 times
    2018.04.30 11:20:47.338	Tester	genetic optimization finished on pass 8960 (of 49644595)
    2018.04.30 11:20:47.349	Statistics	optimization done in 0 minutes 38 seconds
    2018.04.30 11:20:47.349	Statistics	local 4780 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
    

  • construye 1755 con una parada en 1337 ejecuciones. 216 de ellas se toman de la caché (216 / 1337 = 16% de acierto en la caché, no es mucho debido a la aleatoriedad inicial y al pequeño tamaño de la muestra)
    2018.04.30 11:24:15.913	Tester	Best result 3254.53 produced at generation 0. Next generation 4
    2018.04.30 11:24:16.775	Tester	file cache used 19 times
    2018.04.30 11:24:16.775	Tester	result cache used 216 times
    2018.04.30 11:24:16.775	Tester	genetic optimization finished on pass 1337 (of 49644595)
    2018.04.30 11:24:16.775	Statistics	optimization done in 0 minutes 15 seconds
    2018.04.30 11:24:16.775	Statistics	local 1105 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
    
  • build 1755 con continuación después de una parada en Stop, el terminal no se reinició, continuación.

    prueba continúa desde el punto de parada y no desde el principio como en build 1809, entonces de la propuesta 10496 pases se tomaron 3487 y 66+3814 tomados de la caché (66+3814 / 10496 = 36% de acierto en la caché)
    2018.04.30 11:26:27.931	Tester	Best result 3363.35 produced at generation 15. Next generation 32
    2018.04.30 11:26:28.104	Tester	genetic calculation is over
    2018.04.30 11:26:28.111	Tester	3422 records written to file cache C:\Users\sys\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\tester\cache\Moving Average.EURUSD.M5.1.xml
    2018.04.30 11:26:28.539	Tester	file cache used 66 times
    2018.04.30 11:26:28.539	Tester	result cache used 3814 times
    2018.04.30 11:26:28.539	Tester	genetic optimization finished on pass 8704 (of 49644595)
    2018.04.30 11:26:28.550	Statistics	optimization done in 0 minutes 25 seconds
    2018.04.30 11:26:28.550	Statistics	local 3487 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
    





Metatrader 5 build 1809:

  • Construir 1809 pases completos, un total de 8960 pases, de los cuales 5549 se contaron realmente y 3411 se tomaron del golpe de caché acumulado en la misma sesión

    después de lo cual se reinicia el terminal para evitar la influencia directa de las cachés calientes en la memoria.
    2018.04.30 10:50:58.997 Tester  Best result 3391.17 produced at generation 22. Next generation 33
    2018.04.30 10:50:59.485 Tester  genetic calculation is over
    2018.04.30 10:50:59.485 Tester  result cache used 3411 times
    2018.04.30 10:50:59.485 Tester  genetic optimization finished on pass 8960 (of 49644595)
    2018.04.30 10:50:59.495 Statistics      optimization done in 0 minutes 33 seconds
    2018.04.30 10:50:59.495 Statistics      local 5549 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
    

  • construir 1809 con parada en 1348 pases. 222 de ellos fueron tomados de la caché (222 / 1348 = 16% de acierto en la caché, no es suficiente debido a la aleatoriedad inicial y a la pequeña muestra)
    2018.04.30 11:00:59.532 Tester  Best result 3263.17 produced at generation 0. Next generation 4
    2018.04.30 11:00:59.742 Tester  result cache used 222 times
    2018.04.30 11:00:59.742 Tester  genetic optimization finished on pass 1348 (of 49644595)
    2018.04.30 11:00:59.742 Statistics      optimization done in 0 minutes 09 seconds
    2018.04.30 11:00:59.742 Statistics      local 1126 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
    
  • construir 1809 con la continuación después de una parada en la parada, el terminal no se reinició, la continuación.

    como la prueba se inicia desde el principio, a partir de la propuesta 10240 pases se hizo limpia 5863 y 4377 fueron tomadas de la memoria caché (4377 / 10240 = 42% de golpe de caché)
    2018.04.30 11:04:28.046 Tester  Best result 3391.17 produced at generation 27. Next generation 38
    2018.04.30 11:04:28.477 Tester  genetic calculation is over
    2018.04.30 11:04:28.477 Tester  result cache used 4377 times
    2018.04.30 11:04:28.477 Tester  genetic optimization finished on pass 10240 (of 49644595)
    2018.04.30 11:04:28.488 Statistics      optimization done in 0 minutes 36 seconds
    2018.04.30 11:04:28.488 Statistics      local 5863 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
    



Ahora las conclusiones:

  1. Su afirmación sobre "3 veces más lento" es errónea.

  2. De hecho, el probador de la build 1809 se ha vuelto más rápido gracias a la optimización y reescritura de los procesos internos.

    Esto se puede ver en el tiempo de pase completo, es de 33 segundos en lugar de 38 segundos. Y 33 segundos para un mayor número de pases.

    Si recalculamos el número de pasadas por segundo, resulta que:
    - build 1755 da 4780 pasadas / 38 seg = 125 pasadas por segundo
    - build 1809 da 5549 pasadas / 33 seg = 168 pasadas por segundo

  3. El nuevo esquema del optimizador genético "continuación después de la parada" con generación de un nuevo plan de población es correcto.

    Estamos reevaluando el concepto de probador y corrigiendo antiguas decisiones erróneas.

    Dado que las pruebas genéticas deben ejecutarse varias veces para cubrir el área de búsqueda de forma más completa, nuestro nuevo modelo con visualización de las ejecuciones anteriores desde la caché permite comprender mejor la mecánica del flujo de trabajo de la genética.

    El nuevo modelo de visualización de los resultados de la optimización, con todos los datos de las cachés calculadas previamente añadidos a la tabla, permite ver la imagen de forma más completa. Es posible calcular su estrategia en trozos y ver los resultados completos cada vez, incluyendo las ejecuciones anteriores.

    Debido a que las tablas de resultados fusionados son realmente grandes, hemos desactivado la visualización en tiempo real de la lista de resultados y mostramos el resultado acumulado después de fusionar todos los resultados anteriores.
 

Mi robot se bloquea durante la inicialización, tanto en Runtime como en Debug. La compilación está bien.

Hay una clase con miembros estáticos en el código, probablemente por ellos. Antes todo funcionaba bien. Pero ahora informa de un error durante la inicialización global.

Eliminados los miembros estáticos de la clase, funciona bien.

 
Dennis Kirichenko:

Mi robot se bloquea durante la inicialización, tanto en Runtime como en Debug. La compilación está bien.

Hay una clase con miembros estáticos en el código, probablemente por ellos. Antes todo funcionaba bien. Ahora escribe un error durante la inicialización global.

Se han eliminado los elementos estáticos de la clase y se ha lanzado con normalidad.

Escriba su solicitud a Service Desk y adjunte el Asesor Experto (puede ser un archivo ex5), por favor.

 
Aleksey Vyazmikin:

¡Todo esto es genial!

Sin embargo, le rogamos que recupere la pestaña "Optimización", ya que es imposible trabajar sin los análisis operativos. Las tablas grandes son lentas - hagamos un filtro - mostremos los 20 mejores para cada criterio - no es tan intensivo en recursos(?), pero ayudará mucho a ver el panorama. Y, esos miles de millones de pases, ¿quién los hace? Son unidades con enormes capacidades -tú mismo hablas de lo razonable de aplicar la genética, y ahí no hay tales portentos. Así que más de 10 mil pases es una rareza.


Triste.

Al menos se ha podido construir una imagen con datos preliminares, mientras se lleva a cabo la optimización.

 
Renat Fatkhullin:

Estamos ocupados con una gran actualización del rendimiento del probador y estamos rediseñando los modos de carga pesada. Se han realizado importantes mejoras y pronto se aplicarán nuevos métodos de aceleración.

La ventana de la lista de pasillos decidió mostrarse al final del cálculo erróneo, para no desperdiciar recursos realmente grandes en el mantenimiento, la reordenación y la visualización de la lista de pasillos siempre cambiante.

Realmente hubo un gran desperdicio de recursos y ralentizaciones. Sobre todo cuando hablamos de cientos de miles de filas, millones y decenas de millones de pases. No tiene sentido mirar un montón de datos preliminares con los ojos.


Hacemos nuestra propia optimización y realizamos pruebas con 100 millones de pases completos.

Está claro que con semejantes números está fuera de lugar reordenar en tiempo real y mostrar una tabla de 2-5-10-50 millones de valores. Sólo hay una opción: reunirlo todo de forma rápida y económica, para ordenarlo finalmente y ofrecer una visión de cualquier profundidad.

Cuéntanoslo y ya está.