English Русский 中文 Deutsch 日本語 Português
Prueba de Asesores Expertos en el terminal de cliente MetaTrader 4: Un vistazo desde fuera

Prueba de Asesores Expertos en el terminal de cliente MetaTrader 4: Un vistazo desde fuera

MetaTrader 4Probador | 15 febrero 2016, 09:02
2 636 2
Slava
Slava


Para llevar a cabo una prueba, tiene que abrir la ventana "Prueba de estrategia" si aún no está abierta. Esto se puede hacer de distintas maneras: ir a "Ver -> Prueba de estrategia" en el menú principal, pulsar Ctrl+R, hacer clic en "Prueba de estrategia" en la barra de herramientas, usar el menú contextual del gráfico al que hemos añadido el Asesor Experto ("Asesores Expertos -> Prueba de estrategia"), o pulsar F6.

Hay que seleccionar un Asesor Experto antes de iniciar la prueba. Se puede seleccionar desde el menú emergente o arrastrarlo desde la ventana del "Explorador" y soltarlo en la ventana del "Probador de estrategias". Se puede seleccionar el símbolo del mismo modo: seleccionar en el menú emergente o arrastrar y soltar desde la ventana de "Observación del mercado". Se puede seleccionar el Asesor Experto, el símbolo y el periodo del gráfico al mismo tiempo pulsando F6, pero hay que añadir el Asesor Experto al gráfico activo.

Hace falta también seleccionar el modelado de los datos del historial. Algunas estrategias de trading no dependen de los movimientos del precio en una barra, sino que dependen de las barras ya formadas. La barra del precio actual se forma por completo con la aparición de una nueva barra. El modelo "Sólo precios de apertura" está diseñado para este tipo de Asesores Expertos. Hay que tener en cuenta que si se usan los datos de la barra del precio actual para la toma de decisiones de trading en el Asesor Experto, la prueba de dicho Asesor Experto en el modo "Sólo precios de apertura" sería incorrecta! Por regla general, los Asesores Expertos que funcionan al completarse una barra tienen el siguiente código para comprobar si la siguiente barra a comenzado.

static datetime prevtime=0;
...
if(prevtime == Time[0]) return(0);
prevtime = Time[0];

En todos los demás casos, hay que utilizar el modelo "Cada tick". No se recomienda utilizar el modelo "Puntos de control" para las pruebas. Este modelo está diseñado para hacer una estimación aproximada de la actividad del Asesor Experto en el modo de optimización. Una vez añadidos los algoritmos genéticos de optimización al probador de estrategias, ya no es necesario utilizar el modelo "Puntos de control". Para modelar los datos del historial correctamente con el modelo "Cada tick", hay que disponer de la máxima cantidad posible de datos del marco temporal de un minuto. Si no se dispone de datos de un minuto, se usan los datos de cinco minutos para el modelado. Si tampoco están disponibles, se usan los datos de quince minutos, etc. Disminuirá la calidad del modelado respectivamente.

Al pulsar el botón "Iniciar", se generará primero la secuencia de simulación para el cambio de precio que se almacenará en caché en el archivo con la extensión FXT. Se almacenan todos los archivos FXT en el directorio <client_terminal_dir>\tester\history y tienen una nomenclatura del tipo SSSSSSPP_M.fxt, donde:

  • SSSSSS - es el símbolo de la prueba;
  • PP - es el valor en minutos del período del símbolo de la prueba;
  • M - es el modelo de la prueba (0 - "Cada tick", 1 - "Puntos de control", 2 - "Sólo precios de apertura").

Se escriben los ajustes actuales del símbolo y de la cuenta actual en la cabecera del archivo FXT. El terminal de cliente recibe estos ajustes de forma automática desde el servidor de trading. Por lo tanto, se simulará el funcionamiento real del servidor al hacer la prueba del: cálculo del ajuste de los márgenes, prorrogas, comisiones, tasas, etc. Si no hay una conexión en este momento, se usarán los últimos ajustes conocidos por el servidor de trading al cual se ha conectado el terminal de cliente por última vez. Cada vez que se pulsa el botón Iniciar se generará de nuevo un archivo FXT. La pregunta que se plantea ahora es: ¿Por qué utilizar este archivo si se genera de nuevo cada vez? En primer lugar, pueden haber tantos datos de ticks que simplemente no pueden caber en la RAM del ordenador, así que hace falta un almacenamiento externo del cual se toman los datos en bloques y que es de suma importancia para la optimización. En segundo lugar, podemos comprobar el tipo de secuencia que ha generado el probador de estrategias. Se puede abrir el archivo independientemente para ver cómo se modela el desarrollo de las barras de precios.


Entonces, ¿por qué volver a calcular datos que ya existen?

  • En primer lugar, los datos pueden estar obsoletos en un par de días, aunque exista la necesidad de probar los últimos datos del historial.
  • En segundo lugar, ocurre muy a menudo que en la generación inicial de los datos de cada tick no se haya podido descargar todos los datos de los marcos temporales más pequeños del servidor en el momento de generación de la secuencia de la prueba. Lo que pasa es que el flujo de datos es asíncrono ya que el el servidor no avisa al cliente sobre el hecho de que todos los datos requeridos han sido transmitidos. Pero podemos estar seguros de que todos los datos requeridos han sido recibidos en 1 o 2 minutos.
  • En tercer lugar, y este es el punto más importante, un usuario puede tener cuentas con varios brokers. Y distintos brokers no proporcionan solamente distintas condiciones de trading (recuerde que la cabecera del archivo FXT contiene informaciones muy importantes para simular la actividad del servidor de trading), sino también distintas calidades y volúmenes de datos del historial. En cuyo caso, es muy recomendable volver a calcular los datos después de cambiar a otra cuenta durante la prueba.
  • En cuarto lugar, sucede muy a menudo que hayan datos desajustados de distintos marcos temporales procedentes de distintas fuentes disponibles en el terminal de cliente. El problema se agudiza después de dotar el terminal de cliente con la función de descarga de cantidades enormes de historiales de pares de divisas básicos. Muchos traders trabajan con datos de brokers reales descargados de los servidores de Metaquotes. Este es un aspecto muy importante que influye en la calidad del modelado. Para llamar la atención sobre este problema, la prueba de estrategias tiene en cuenta los errores de desajuste de datos para distintos marcos temporales. ¿Qué tipo de errores son?

Hay que explicar cómo se forma la secuencia de simulación si se usa un rango de fechas "Desde" y "Hasta" (hay que marcar la casilla correspondiente "Utilizar datos"). La secuencia de simulación no comienza desde la fecha "Desde". Antes de iniciar la generación de ticks, el probador de estrategias coloca alrededor de 4 mil barras no destinadas al modelado al principio de la secuencia. Si hay menos barras iniciales, se usan todas las barras desde el principio del historial, pero no menos de 100. Por lo tanto, si la fecha "Desde" está colocada demasiado cerca del inicio de todo el historial, la generación del tick puede comenzar después de la fecha indicada. Tenemos que proporcionar por lo menos 100 barras antes del inicio de la prueba. Para que el Asesor Experto pueda calcular correctamente los indicadores en función de los datos anteriores hacen falta las barras iniciales (esto afecta en particular los promedios móviles). El siguiente ejemplo ilustra la secuencia que se genera de la evolución de las barras sobre ticks modelados con fecha inicial 01 de agosto 2002:


Se da por finalizado el modelado al alcanzar la fecha "Hasta". Los datos de los precios a partir de 0:00 de la fecha final no intervienen en la simulación ni entran en la secuencia generada. Si los datos especificados están fuera del intervalo del historial o se desactiva "Utilizar datos" todo el historial (salvo las 100 primeras barras) interviene en la generación. Establecer la cantidad máxima de barras en el gráfico no significa nada para el modelado - se usa todo el historial almacenado en el disco.

Si resulta que durante la secuencia de prueba los datos del historial son inferiores a 100 barras, aparecerá el mensaje "Test.Generator: deficient data" (datos incompletos) en el diario del probador de estrategias y no se ejecutará este último. Es posible también que no haya ningún dato, es algo que sucede si no se establece el intervalo de tiempo correctamente, y aparecerá el mensaje "Test.Generator: no history data" (no hay datos del historial) en el diario del probador de estrategias. En estos casos, se debe proporcionar la cantidad necesaria de datos del historial. Para proporcionar estos datos, se puede abrir el gráfico correspondiente e inyectar los datos de forma manual, mediante el botón PageUp (Avanzar página), y después habilitar "Recalcular" y reiniciar el probador de estrategias.

Antes de iniciar el probador de estrategias, es necesario indicar todos los parámetros de entrada del Asesor Experto de la prueba. Hay que prestar especial atención a la divisa del depósito. Por ejemplo, si se abre una cuenta de tipo MICEX, la prueba del asesor Experto sobre GAZP no dará ningún resultado si no se indica RUB (se puede introducir este símbolo manualmente a pesar de no estar en la lista desplegable) como divisa de depósito:


La pestaña "Entradas" sólo será visible si se declaran las variables externas. Se pueden guardar distintos conjuntos de valores de entrada en archivos de conjuntos con distintos nombres (el botón "Guardar") y usarlos posteriormente (el botón "Cargar").


Al pulsar el botón "Modificar experto" se hace una llamada a MetaEditor, en el cual se abrirá el Asesor Experto de la prueba para su edición. Este botón, igual que los demás, se bloquea al iniciar el probador de estrategias. No obstante, MetaEditor seguirá permitiendo la compilación del Asesor Experto durante su prueba. Al iniciar el probador de estrategias la próxima vez, se recargará el Asesor Experto compilado automáticamente para la prueba.

Conviene recordar que no se puede recargar el Asesor Experto durante su prueba. Supongamos que no perdió el tiempo y cambió el código fuente del Asesor Experto y lo compiló durante la prueba. Se completa la prueba y pulsa el botón "Iniciar" de nuevo con la intención de probar el Asesor Experto modificado. Pero no se puede, se probará de nuevo el archivo ejecutable descargado anteriormente. Para recargar la nueva versión del Asesor Experto, tiene que pulsar el botón "Detener" o esperar a que se finalice la prueba. Y sólo después, puede iniciar la compilación de su Asesor Experto en MetaEditor.

Una vez finalizada la prueba, puede abrir el gráfico que contiene las flechas de las operaciones de trading y los indicadores utilizados durante la prueba. Sin embargo, hay un problema con los indicadores que se han utilizado durante la prueba, se mostrarán en sus colores por defecto. Por ejemplo, si se han utilizado promedios móviles con distintos períodos de promedio, se dibujarán todos en color rojo, lo que resulta muy incómodo. Se pueden cambiar los colores manualmente, pero existe otra solución al problema. Si se crea con antelación una plantilla que podemos llamar <expert_name>.tpl (por ejemplo, Moving Average.tpl) con los indicadores añadidos, se puede utilizar esta plantilla cuando se abre el gráfico para la prueba. Si no se dispone de plantillas, se utilizará la plantilla tester.tpl.

Hay otro aspecto sutil aquí. Si se abre el gráfico como antes, se cargarán en él los datos actuales del historial. Si acabamos de conseguir la secuencia de la prueba, no hay ningún problema. ¿Pero si los datos utilizados proceden de otra fuente de datos? Afortunadamente, a partir de la versión del terminal de cliente MetaTrader4 Build 196, el probador de estrategias es compatible con lo que se conoce como el modo visual de la prueba de estrategias.



Al marcar la casilla "Modo visual", se abre el gráfico de "depuración" automáticamente al inicio del servidor mediante las plantillas <expert_name>.tpl o tester.tpl. Se muestra el estado actual de la secuencia de la prueba en el gráfico. Se puede cambiar la velocidad de la representación gráfica mediante el control deslizante. Si se mueve hacia la izquierda, será más lenta. Y se se mueve hacia la derecha, será más rápida. Para hacer una pausa, se pude pulsar el botón "||" o la tecla "Pausa" del teclado. Para reanudar la prueba después de la pausa, hay que pulsar ">>" o Pausa de nuevo. Durante la pausa de la prueba, se puede pulsar F12 para obtener una representación gráfica manual paso a paso. Se puede adelantar el proceso de la representación gráfica con el botón "+", ralentizar con el botón "-", hacer una pausa con "||" y reanudar después de la pausa con "||". Se puede indicar la fecha y pulsar "Saltar a". En este caso, no se volverá a dibujar el gráfico hasta que la prueba alcance la fecha indicada, lo que básicamente acelera el proceso. Una vez terminada la prueba (que se haya finalizado o detenido pulsando "Detener") se mostrará en el gráfico el estado de los datos del historial en este momento.

Al hacer un doble clic sobre una sección del gráfico de prueba se cambia a la pestaña "Resultados" y la selección de la posición correspondiente. Si el gráfico esta abierto (casilla "Modo visual" marcada o botón "Abrir gráfico" pulsado), un doble clic sobre la posición en la pestaña "Resultados" moverá el gráfico a la fecha correspondiente.

Para optimizar la estrategia de trading, hacen falta por lo menos 2 pasos. Marcar la casilla "Optimización" en la pestaña "Configuración" y establecer los valores iniciales y finales y el valor del paso del cambio para los parámetros optimizados en la pestaña "Entradas" de las propiedades del Asesor Experto.


Por lo tanto, no se puede optimizar un Asesor Experto que no tiene entradas. Se puede mejorar el proceso de optimización estableciendo los límites de optimización.


Nada más alcanzar el límite correspondiente, el probador de estrategias detiene la pasada y empieza una nueva con el siguiente conjunto de entradas. En este punto, se detiene la pasada ya que más allá del límite se considera infructuosa y no se incluirá en los resultados. Las pasadas con beneficios negativos también se consideran fallidas. Para incluir las pasadas fallidas en el listado de resultados de optimización, hay que desmarcar la casilla "Omitir resultados no útiles" en el menú contextual de la pestaña "Resultados de la optimización".

Por defecto, no se incluyen los resultados fallidos y es una causa muy común de declaraciones del tipo "el optimizador de estrategias no funciona". En este caso, aparecerá el mensaje "NNN results have been discarded as insignificant" (han sido descartados NNN resultados insignificantes) en el diario.

Para mejorar el proceso de optimización, se implementó el almacenamiento en caché de los resultados. Si el probador de estrategias encuentra en la caché el resultado correspondiente al conjunto actual de entradas en la siguiente pasada de optimización, se usará el resultado sin ejecutar el Asesor Experto. Por lo tanto, se puede detener la optimización ya que en el próximo lanzamiento de la optimización del Asesor Experto se puede recibir de la caché los resultados previamente calculados y reanudar los cálculos desde el punto de interrupción del probador de estrategias. Si se modifican los datos de la prueba o se vuelve a compilar el Asesor Experto o se sustituyen las librerías que usa el Asesor Experto, se reiniciará la caché del optimizador y se harán todos los cálculos de nuevo.

El probador de estrategias no puede controlar los cambios de nivel 2 o superiores en las librerías (es decir, las librerías a las que se llama desde otras librerías)! Es por ello que en estos casos es necesario reiniciar la caché de forma manual, por ejemplo, compilando el Asesor Experto de nuevo. Los archivos que contienen los datos de la caché se almacenan en el directorio tester\caches.

El almacenamiento en caché de los resultados de la optimización es muy útil, más aún si se habilita el algoritmo genético. Se puede habilitar el algoritmo genético de optimización en al pestaña "Prueba" de las propiedades del Asesor Experto.


Los parámetros del algoritmo genético se definen automáticamente.

  • El tamaño de la población depende de la cantidad de todas las combinaciones posibles de los parámetros y su valor puede estar entre 64 y 256.
  • La cantidad mínima de generaciones depende del tamaño de la población y su valor puede estar entre 15 y 31.
  • Por lo tanto, el número mínimo de pasadas del optimizador genético se encuentra entre 960 y 7936.
  • La probabilidad de cruce es del 100%. Los genes se cruzan aleatoriamente, siendo imposible que se cruce cada uno consigo mismo.
  • La probabilidad de mutación es del 10%.
  • La probabilidad de inversión es del 10%.
  • Se termina la optimización si no se puede mejorar un conjunto de genes dentro de un ciclo de vida de 10 generaciones, siempre y cuando se haya generado la cantidad mínima de generaciones.

El Diario de la prueba se encuentra en el directorio \logs. Sus archivos tienen la extensión .log. Cada archivo de registro corresponde a un día concreto. Los registros del probador de estrategias se borran automáticamente en el plazo de 5 días. Si se selecciona "Borrar todos los diarios" del menú contextual del la pestaña "Diario", se borrarán los contenidos actuales de esta pestaña y se eliminarán todos los archivos de registro.

Ya que es posible que haya un salida de datos en masa durante la prueba, no se puede meter toda la información en la pestaña "Diario", pero seguro que cabe en un archivo de registro. Durante la optimización, no se proporciona ninguna salida en el diario.

Una vez completada la prueba, se puede vaciar la RAM que ya no utiliza el probador de estrategias. Para hacerlo, basta con cerrar la ventana del "Probador de estrategias" usando el menú principal o Ctrl+R, o haciendo clic sobre "Prueba de estrategias" en la barra de herramientas.

Traducción del ruso hecha por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/ru/articles/1417

Junqui
Junqui | 4 oct. 2016 en 19:17
Muchas gracias señor Slawa, ahora por fín puedo identificar si un AE está hecho para cada tick o para solo precios de apertura, que me tenía como loco eso.
Sirio_42
Sirio_42 | 31 oct. 2018 en 15:16

Hola a todos,

Tengo un problema desde haces días con la mt4 que no he conseguido resolver; el problema es con el probador de estrategia en el gráfico de un minuto.

Cuando pongo mi EA desde unos dias no me abre posiciones porque en la pantalla del gráfico me queda registrado uno spread muy elevado de 14x1 lote a pesar que he marcado la casilla de spread actual que en mi broker (coinexx.com) esta ahora entre 1 y 2, y  2 de  comisiones seria un total de 4 pero no 14. Es como se si hubiera quedado lo spread en el gap  del fin desemana pasado y en la memoria de la mt4 se ha quedado como fijo. He probado tambien a poner en la casilla el valor de lo spread manual a 2 pero no funciona; sigue apareciéndome en la pantalla el mismo valor de spread que es 14 x lote , en mi caso 0,00014 x 0,03 lote.. y para que funcione mi EA necesito que sea no mas de 0,00003x 0,03lote si no no abre posiciones (que es lo que me esta pasando). He reinstalado la mt4 varias veces borrando mis datos, descargando otra vez el historial y hablé también con el equipo de asistencia del Broker sin exito. Lo curioso es loe EA que vienen por defecto funcionan bien; esto  me pasa también con todas la mt4 sea demo que real de otros broker también. He oido que se puede hacer una actualización forzada de la mt4 y a lo mejor se resuelve, pero necesitaría saber los pasos a seguir.

Alguien tiene alguna sugerencia de como puedo resolver este problema?  Gracias de antemano


 
Los diez errores básicos del principiante en trading Los diez errores básicos del principiante en trading
Hay diez errores básicos que comete un principiante en el trading: hacer trading a la apertura del mercado, precipitarse en retirar las ganancias, añadir lotes cuando la posición es perdedora, cerrar posiciones empezando por las mejores, venganza, las posiciones preferibles, hacer trading con el principio de "comprado para siempre", cerrar una posición estratégica rentable el primer día, cerrar una posición cuando se recibe una señal para abrir una posición opuesta, y las dudas.
Interfaces gráficas I: Formulario para controles (Capítulo 2) Interfaces gráficas I: Formulario para controles (Capítulo 2)
En este artículo vamos a crear el primero y el más importante elemento de las interfaces gráficas: formulario para los controles. A este formulario se le puede adjuntar múltiples controles de diferentes tipos en cualquier orden y secuencia.
Estrategias de trading Estrategias de trading
Todas las categorías utilizadas para clasificar les estrategias de trading son completamente arbitrarias. La siguiente clasificación pretende hacer hincapié en las diferencias básicas entre las posibles estrategias de trading.
Secretos de la Terminal de Cliente de MetaTrader4 : Sistema de alerta Secretos de la Terminal de Cliente de MetaTrader4 : Sistema de alerta
Cómo estar al tanto de lo que pasa en la terminal y en tu cuenta sin estar permanentemente mirando la pantalla. Eventos del sistema; eventos de cliente; archivos .wav y .exe; mensajes electrónicos; configuración del acceso a servidor SMTP; publicaciones; configuración del acceso a servidor FTP.