Discusión sobre el artículo "Optimización móvil continua (Parte 4): Programa de control de la optimización (optimizador automático)"

 

Artículo publicado Optimización móvil continua (Parte 4): Programa de control de la optimización (optimizador automático):

El principal objetivo del artículo consiste en describir el mecanismo de trabajo con la aplicación obtenida y sus posibilidades. De esta forma, el artículo supondría una serie de instrucciones de uso de esta aplicación, en la que se habla sobre todas las posibles trampas y detalles en sus ajustes.

Para comenzar a analizar el funcionamiento del propio programa creado, primero debemos determinar el objetivo de este proyecto. Teniendo en cuenta que hemos decidido utilizar un enfoque científico del trading y que hemos comenzado a crear algoritmos comerciales programados con precisión (no importa que tratemos con robots indicadores o con robots basados en el uso de modelos de lógica difusa o redes neuronales, todos ellos son algoritmos programados que ejecutan tareas claramente establecidas), también deberemos formalizar el enfoque sobre el proceso de selección de los resultados. Dicho de otra forma, si durante el proceso de trading nos abstraemos de las casualidades, el proceso de preparación para las transacciones también deberá ser automatizado. De lo contrario, podría resultar que seleccionemos al azar los resultados que nos gusten de entre la masa de parámetros de optimización obtenidos, lo cual se asemeja más a la adivinación que al comercio sistemático. La idea planteada es el primero de los motivos que han impulsado al autor a crear esta aplicación. El siguiente sería la posibilidad de poner a prueba los algoritmos mediante su optimización: la propia optimización móvil continua, que se muestra visualmente en el gráfico de abajo.   


La optimización móvil continua alterna las pasadas de optimización históricas (amarillas) y en tiempo real (verdes) en el intervalo temporal establecido. Por ejemplo, disponemos de una historia de 10 años. Hemos decidido que el intervalo de optimización debe constar de un intervalo igual a 1 año, mientras que el intervalo en tiempo real debe constar de 3 meses. Como resultado, obtenemos para una pasada de optimización + un test en tiempo real con un intervalo de 1,25 años (1 año + 1 trimestre). En el diagrama mostrado, cada línea caracteriza precisamente el intervalo temporal mencionado. 

Autor: Andrey Azatskiy

 
Trabajo serio. Sería interesante comparar los resultados entre diferentes implementaciones de auto-optimización en el mismo EA.
 
fxsaber:
Trabajo serio. Sería interesante comparar los resultados entre diferentes implementaciones de la autooptimización en el mismo EA.

Gracias por los comentarios positivos

 

Es toda una proeza por tu parte hacer un trabajo así de forma voluntaria. Hay una semana de escritura y cerca de medio año de desarrollo de código. ¿No es la automatización de la optimización la tarea más importante para la parte cliente del terminal? Desafortunadamente MQ no le presta atención y presta más atención a las peticiones de los brokers (ellos pagan). Es extraño que no haya una explosión de comentarios entusiastas por parte de los usuarios. ¿Qué, nadie está optimizando?

Aún no he tenido ocasión de compilar el proyecto, sólo de ver la interfaz en modo depuración y leer el artículo, pero todo parece muy prometedor. Necesito encontrar instrucciones sobre cómo compilar en Visual Studio.

Estaría bien añadir la posibilidad de enumerar las herramientas en la visión general del mercado para cada intervalo de optimización. Requerirá potencia, pero en intervalos cortos será posible evaluar el resultado. ¿Quizás localización rusa? Pero todo está claro.

Le doy la mano y me inclino por su trabajo.

 
Good Beer:

Es toda una proeza por tu parte hacer un trabajo así de forma voluntaria. Hay una semana de escritura y cerca de medio año de desarrollo de código. ¿No es la automatización de la optimización la tarea más importante para la parte cliente del terminal? Desafortunadamente MQ no le presta atención y presta más atención a las peticiones de los brokers (ellos pagan). Es extraño que no haya una explosión de comentarios entusiastas por parte de los usuarios. ¿Qué, nadie lo optimiza?

Aún no he tenido ocasión de compilar el proyecto, sólo de ver la interfaz en modo depuración y leer el artículo, pero todo parece muy prometedor. Necesito encontrar instrucciones sobre cómo compilar en Visual Studio.

Estaría bien añadir la posibilidad de enumerar las herramientas en la visión general del mercado para cada intervalo de optimización. Requerirá potencia, pero en intervalos cortos será posible evaluar el resultado. ¿Quizás localización rusa? Pero todo está claro como está.

Le doy la mano y me inclino por su trabajo.

Gracias por tu comentario, espero que mis desarrollos sean útiles. En próximos artículos describiremos cómo compilar el proyecto en VS y cómo puedes implementar tu propia lógica de optimización.

Respecto a la compilación, si ejecutas el proyecto en modo depuración en el estudio, ya ha sido compilado. Puede encontrarlo en el directorio MetaTrader Auto Optimiser/bin/Debug

 

Aún no he empezado su programa, pero ya han aparecido las primeras preguntas:

1. ¿He entendido bien que no se admite ningún criterio de optimización definido por el usuario? Sería muy necesario.

2. 2. ¿Cómo se garantiza el deslizamiento continuo de la optimización? ¿Hay que introducir manualmente todos los rangos de optimización y de avance? ¿Por qué no implementarlo así?

Fecha de inicio de la optimización/período de optimización (mes; semana; día)/escala perid de optimización/período de avance/escala de avance. Divida programáticamente el periodo en pasadas. Esto lo hice en el multitester. Pero un año de escribir a cabo incluso una semana a la vez le volará la mente. Y también se puede usar scalping.

3. Sólo una curiosidad: ¿Por qué necesita la macro sustitución "TESTER_ONLY"? El Asesor Experto se descargará del gráfico sin ella.

 
Good Beer:

Aún no he empezado su programa, pero ya tengo las primeras preguntas:

1. ¿He entendido bien que no se admite ningún criterio de optimización definido por el usuario? Sería muy necesario.

2. 2. ¿Cómo se proporciona el deslizamiento continuo de la optimización? ¿Hay que introducir manualmente todos los rangos de optimización y de avance? ¿Por qué no implementarlo de esta manera?

fecha de inicio de la optimización/periodo de optimización (mes; semana; día)/escala perid de optimización/periodo forward/escala forward. Divida programáticamente el periodo en pasadas. Esto lo hice en el multitester. Pero un año de escribir a cabo incluso una semana a la vez le volará la mente. Y también se puede utilizar scalping.

3. Sólo una curiosidad: ¿Por qué necesita la macro sustitución "TESTER_ONLY"? El Asesor Experto se descargará del gráfico sin ella.

1. No he rellenado el criterio personalizado, como muchos otros diferentes sustituido, pero en el futuro, si creo que para desarrollar el proyecto (como todos los artículos de esta serie se completará, 2 más que planeo) - se puede añadir, no es difícil. Incluso una decisión razonable, gracias por su consejo.

2. En cuanto a las fechas, sólo tiene que introducir una vez, luego guardarlos en un archivo y luego sólo tiene que cargar el archivo guardado en el futuro. Hice este desglose a partir del hecho de que yo mismo lo utilizo para pruebas bursátiles en el mercado de futuros. Los futuros se prueban en grapas y las fechas de las grapas no son fijas y las proporciona el broker. Como resultado, establezco manualmente el desglose de las grapas para que el periodo de prueba no caiga en el momento del grapado. Basta con introducir una vez las ventanas de optimización necesarias, guardarlas en un archivo y, a continuación, cargar este archivo.

3. una macro que no se ejecutaría accidentalmente en la vida real. El Asesor Experto es de prueba mucho no está terminado para el comercio real. Decidí poner #define este para que alguien no accidentalmente ejecutarlo en el comercio real. Gracias a este #define, el Asesor Experto se le permite trabajar sólo en el probador, y si se carga el robot en el gráfico de una vez, simplemente será eliminado.

 
Good Beer:

2. ¿Cómo se garantiza la optimización continua del deslizamiento? ...

En el último artículo describiré paso a paso todo el proceso de optimización deslizante con el código adjunto. El punto es que el algoritmo de optimización en sí se implementa por separado. Y como he mencionado antes, se puede añadir otro algoritmo al algoritmo de optimización actual.

 

Good Beer:

Todavía no he conseguido compilar el proyecto ...

La forma más fácil y rápida de compilar es abrir el proyecto y pulsar CTRL+MAYÚS+B.

Más visual - haga clic en la flecha verde en el editor, la aplicación se iniciará en el modo de depuración de código, pero la compilación se llevará a cabo también.

Otra opción - en el menú desplegable, haga clic en Build

Más tarde en la rutaMetaTrader Auto Optimiser/bin/Debug (o MetaTrader Auto Optimiser/bin/Release, dependiendo del tipo de compilación seleccionado) - aparecerá el programa compilado.

 

En la ventana de clasificación se pueden introducir varios criterios de optimización. ¿Cómo deben multiplicarse? De todos modos, no se puede prescindir de uno personalizado. Por ejemplo, es bueno tomar como raíz el número de transacciones o tomar el Sharpe módulo al número de transacciones. Por favor, no abandone esta idea.

La lista de periodos se puede crear utilizando herramientas MQL.

Acerca de #define TESTER_ONLY me refería a que la expresión entre paréntesis funcionará sin TESTER_ONLY. No entiendo por qué es necesario utilizar la sustitución? Lo he visto muchas veces.

 
Good Beer:

En la ventana de clasificación se pueden introducir varios criterios de optimización. ¿Cómo deben multiplicarse? De todos modos, no se puede prescindir de uno personalizado. Por ejemplo, es bueno tomar como raíz el número de transacciones o tomar el Sharpe módulo al número de transacciones. Por favor, no abandone esta idea.

La lista de períodos se puede crear utilizando herramientas MQL.

Acerca de #define TESTER_ONLY me refería a que la expresión entre paréntesis funcionará sin TESTER_ONLY. No entiendo por qué es necesario utilizar la sustitución? Lo he visto muchas veces.

Bueno, tan pronto como termine la primera versión del artículo, voy a planear una continuación, todavía hay algunas ideas que me gustaría poner en práctica.

Lista de puntos - exactamente en el auto optimizador es necesario, que cambia las pruebas de sí mismo y debe ver estos períodos (de acuerdo a la lógica del programa resultante).

En cuanto a la definición:

#ifdef  TESTER_ONLY
   if(MQLInfoInteger(MQL_TESTER)==0 &&
      MQLInfoInteger(MQL_OPTIMIZATION)==0)
     {
      Print("This expert was created for demonstration! It is not anabled for real trading !");
      ExpertRemove();
      return(INIT_FAILED);
     }
#endif

La expresión se envuelve en la construcción #ifdef #endif - es una condición que se ejecuta en tiempo de compilación. Si compilas el proyecto definiendo #define TESTER_ONLY, la expresión envuelta en esta condición se incluirá en la compilación, si no la declaras, no se incluirá. Lo hice de manera que si alguien quiere experimentar y ejecutar el robot a su propio riesgo en el real, todo lo que se necesita es comentar #define TESTER_ONLY - sin cambiar el código fuente.



El método de tener en cuenta varios tipos seleccionados se describe en el primer artículo de esta serie. Allí todo pasa por la normalización de los parámetros. Sin embargo, como he dicho antes, usted puede crear su propio optimizador y hacer su propio sistema de contabilización de estos parámetros - se describirá en un próximo artículo.