El tester en la terminal MetaTrader 4: Debería saberse

MetaQuotes | 30 marzo, 2016

Introducción

Trabajar en mercados financieros es imposible sin un sistema de trading. Los traders invierten mucho tiempo y esfuerzo desarrollando reglas de apertura y cierre de posiciones, seleccionando métodos de modificación de estas posiciones empíricamente a través de Trailing Stop. Aquí se utiliza el conocimiendo de varios campos de la ciencia. Y cuando se crea una estrategia, lo primero que hay que hacer es probar el sistema de trading mecánico (STM) en los datos del historial. Esto quiere decir que el tester se convierte en el componente más importante de cualquier programa.


Dos tipos de modelaje

No todos los programas para el análisis técnico (AT) tienen la opción de prueba, por lo tanto, no todas las terminales lo tienen. Incluso si un programa está establecido para tener tester y tiene la opción de probar, puede tener errores o restricciones o prohibiciones arquitecturales. Es por esto que durante el desarrollo del tester para la terminal de MetaTrader 4, fue muy importante incluir de antemano las soluciones arquitecturales, que impedirían la existencia de una clase completa de estrategias basadas en el conocimiento del futuro. Hay dos maneras de prueba de programa de cualquier estrategia.

El triángulo "Hora actual" denota un lugar en el que se encuentra el tester en la hora actual. En el primer caso se ve la hora anterior (Última), en la que el tester ha procesado los datos; y la hora futura (Futura) en la que el tester funcionará. Ambas, pasada y futura, ya están calculadas (indicadores, precio de cierre, precio de apertura, Alto y Bajo), y el tester sólo sigue este secuencia. Y si existe la posibilidad de ver el futuro (real o erróneo), los resultados de la prueba necesitan una verificación exhaustiva. Y cerrar las posibilidades que ya se conocen no asegura que no haya otras posibilidades. Al final, esto se convierte en un problema constante para un desarrollador de tester o para los usuarios.

En el segundo caso sólo se ve la hora anterior (Última), no hay un futuro intínseco (un cuadrado oscuro). En este acercamiento siempre se tiene la información del pasado, y no hay información sobre el futuro, como en el trading real. Con cada nuevo tick (cambio de precio) en el tester, se mueve en el presente, el triángulo de la hora actual se mueve hacia la derecha hacia la nueva hora conocida y recibe precios nuevos. Cada nuevo tick crea el Presente, aumenta la información sobre el Pasado y todavía tiene un Futuro oscuro delante. En este caso, el tester no tiene la posibilidad de ver el futuro intrínsecamente, independientemente de los errores, un trader podría comprometerse a escribir una estrategia.

Precisamente esta es la diferencia entre los dos acercamientos. El primer acercamiento para crear un tester ofrece una ilusión de simplicidad y rapidez de la prueba, el segundo da la seguridad de que todas las estrategias escritas se comportarán de la misma manera que en el trading real con cambios de precio iguales. Por eso las secuencias, modeladas para el tester, se almacenan como archivos que contienen fotografías del estado de la barra (archivo fxt), que pueden abrirse como un gráfico normal utilizando el menú "Archivo" ->> "Abrir sin conexión".


Los archivos de tester se marcan con un icono con la letra G (generado) y ofrece la información sobre el tipo de modelaje, el rango de los cambios de precios modelados, número de barras, y periodo de tiempo:

Por ejemplo, si se abre el archivo EURUSD M15, se verá de qué manera se modeló una barra de 15 minutos para el tester:



La imagen muestra el progreso de una barra en un periodo de tiempo de 15 minutos. Durante la prueba de un Asesor experto, el tester vio esta vela de 15 minutos (21/04/2006 10:00) exactamente en esa secuencia. El número de los cambios de precio en una barra de minutos es igual al número de los cambios de las velas durante la prueba. Por lo que en cada punto de tiempo en el que el tester vee un precio correcto Abierto (que se arregla y es igual a Abierto[0]), corrige el precio máximo y el mínimo (que pueden haber cambiado durante el preiodo de progreso de la barra), lo iguala al Alto[0] y Bajo[0] actuales, y el último precio conocido Apuesta, igual al precio actual Cerrado[0], que cambia antes de que la barra se cierre. Los volúmenes también se modelan correctamente, lo que es obvio por el crecimiento del histograma verde de volúmenes, como en un gráfico simple. La línea roja rota es la del Movimiento promedio del indicador (movimiento simple promedio) con el periodo 1. Este movimiento promedio muestra la posicióon de Cerrado en cada momento durante la prueba.

¡Importante! El tester en MetaTrader 4 procesa cada cambio de precio y no deja forma de indagar en el futuro.


Modelaje en periodos de tiempo diferentes de un símbolo probado

El tester en MetaTrader 4 permite ver, además de los periodos de tiempo probados, otros periodos de tiempo: más altos y más bajos. Por lo que si se prueba un Asesor experto en el periodo de tiempo EURUSD M15m, se opuede ver que los valores de los indicadores para EURUSD H1 o EURUSD M5. También se pueden ver los precios máximos y mínimos de la barra cero actual en cualquier periodo de tiempo EURUSD. Si se necesita el precio máximo del día actua, sólo hay que ver el valor iHigh(NULL,PERIOD D1,0 Es como en el trading online. Y no se diferencia entre el periodo que se probó en el Asesor experto o en el gráfico en el que adjunta el periodo de tiempo en el modo de tiempo real.

Por lo tanto, la tarea del tester es modelar de forma correcta tanto el periodo de tiempo actual, como otros periodos de tiempo necesarios. Esta tarea se realiza en el tester de la siguiente manera: además del progreso de la barra en la barra cero actua, también se modelan de la misma manera todos los otros periodos de tiempo. El recibo de cada nuevo tick cambia la información de la condición de la barra cero en cada periodo de tiempo, todo se hace de forma sincronizada. Aquí puede ver una imagen:



El color azul indica las barras completas; el verde la barra cero actual que está cambiando. Las imágenes +1 indican el recibo de un nuevo tick. Todos los periodos de tiempo modelados necesarios reciben inmediatamente cada tick. Para asegurarse, puede comenzar probando un Asesor experto simple CheckModelling.mq4, que muestra los precios disponibles para el tester en cada punto.

Todos los periodos de tiempo necesarios (y no sólo los precios, sino también los volúmenes) se modelan correctamente. El tester ve el progreso sincrónico de precios en cada periodo de tiempo, como en la vida real:


Está claro que el precio Bajo del periodo de tiempo de 15 minutos, es diferente al precio Bajo de los periodos de tiempo más altos. Lo mismo pasa con el precio Alto. Sin embargo, el precio Puja de todos os periodos de tiempo es el mismo al recibir un nuevo tick.

Importante: Todos los periodos de tiempo de los símbolos probados también se modelan correctamente: los precios Abierto, Alto, Bajo y Cerrado se modelan de forma 100% correcta. Los volúmenes de los periodos de tiempo más alto también se modelan de forma 100% correcta.


Modelar precios en otros símbolos

La cantidad de datos modelados para una prueba más precisa a veces es más grande y puede necesitar más recursos de memoria y procesador. El tester en MetaTrader 4 no permite realizar pruebas al portfolio, pero las tecnología informática se está desarrollando tan rápidamente que, probablemente, pronto sea capaz de realizar una prueba precisa de estrategias más complejas, que abriría posiciones en muchos símbolos. Sin embargo, el tester en MetaTrader 4 permite recibir información sobre los precios de otros símbolos, diferentes de los que se han probado. Pero en este caso, el modelaje no se lleva a cabo, los datos se extraen tal y como están. La barra cero se simplifica para introducir el principio del proceso de la siguiente manera: Alto[0]=Bajo[0]=Cerrado[0]=Abierto[0], Volumen[0]=1, que permite saber el precio al principio de la barra, pero no el precio al final. Para asegurarse, sólo tiene que probar un Asesor experto simple en EURUSD, en el modo "todos los ticks".

//+------------------------------------------------------------------+
//|                                               CheckModelling.mq4 |
//|                      Copyright © 2007, MetaQuotes Software Corp. |
//|                                        https://www.metaquotes.net/|
//+------------------------------------------------------------------+
#property copyright "Copyright © 2007, MetaQuotes Software Corp."
#property link      "https://www.metaquotes.net/"
 
//---- input parameters
extern int       DayS=21;
extern int       MonthS=4;
extern int       YearS=2006;
extern int       HourS=10;
extern int       MinuteS=00;
extern int       CounterS=20;
int counter;
int start()
  {
//----
   if (counter>CounterS) return;
   if (Year()<2006) return;
   if (Month()<MonthS) return;
   if (Day()<DayS) return;
   if (Hour()<HourS) return;
   if (Minute()<MinuteS) return;
   Print("My time frame   "," Open=",Open[0],"  High=",High[0],"   Low=",Low[0],
      "  Close=",Close[0],"  Volume=",Volume[0],"  Bid=",Bid);
   Print("30 minute frame "," Open=",iOpen(NULL,PERIOD_M30,0),"  High=",iHigh(NULL,PERIOD_M30,0),
      "   Low=",iLow(NULL,PERIOD_M30,0),"  Close=",iClose(NULL,PERIOD_M30,0),
      "  Volume=",iVolume(NULL,PERIOD_M30,0),"  Bid=",Bid);
   Print("1 hour frame    "," Open=",iOpen(NULL,PERIOD_H1,0),"  High=",iHigh(NULL,PERIOD_H1,0),
      "   Low=",iLow(NULL,PERIOD_H1,0),"  Close=",iClose(NULL,PERIOD_H1,0),
      "  Volume=",iVolume(NULL,PERIOD_H1,0),"  Bid=",Bid);
   Print("4 hour frame    "," Open=",iOpen(NULL,PERIOD_H4,0),"  High=",iHigh(NULL,PERIOD_H4,0),
      "   Low=",iLow(NULL,PERIOD_H4,0),"  Close=",iClose(NULL,PERIOD_H4,0),
      "  Volume=",iVolume(NULL,PERIOD_H4,0),"  Bid=",Bid);
 
   counter++;  
//----
   return(0);
  }
//+------------------------------------------------------------------+


Cálculo de los indicadores durante el modelaje

Hace diez años, el bajo rendimiento de los ordenadores y de las estaciones de trabajo, suponían restricciones para los desarrolladores de software. Una memoria operacional limitada, un procesador por debajo de los 100MHz generalmente... todo esto sólo permitía los tipos de cálculos y de pruebas de estrategias de trading eficientes en espacio. Las pruebas de las barras interiores no existía, todos los indicadores se calculaban con antelación y se probaban en una forma ya lista e inalterable. En aquel momento ésta era la única solución, que limitaba la prueba. De este modo, se recibían los valores correctos de los indicadores sólo del momento en el que la barra se cerraba, y utilizar los datos en la barra cero significaba indagar en el futuro.

El tester en MetaTrader 4 no recibe ningún dato calculado, sólo el progreso de los precios modelados, y basándose en la nueva entrada de precios, todos los indicadores necesarios se calculan en el curso de la prueba. Es decir, todos los indicadores se calculan de la misma que durante el funcionamiento online. Esta es ventaja suficiente para el tester, pero si el algoritmo del indicador no es óptimo, la prueba de un AE se puede ralentizar considerablemente. El cálculo del indicador en el tester es tan rápido como en la termina, y puede dejar pasar algún algoritmo sin mejorar. Pero en el tester MetaTrader 4, durante el cálculo de millones de barras (un minuto de historial de EURUSD de 1999 contiene casi tres millones de barras), cualquier cosa que no esté mejorada es obvia. No olvide que cada modelaje de ticks en una barra de un minuto no da uno, sino varios ticks, cada uno calculado por el tester.

Hoy en día, los procesadores colocan gigabytes de memoria funcional y frecuencias de múltiples de gigaherzios, la arquitectura de 32-bit se sustituye por sistemas de 62-bit, incluso aparecen los multiprocesadores. Pero todavía hay mucha gente que trabajan con las categorías del siglo pasado, y que envían todos los inconvenientes de la generación anterior de programas AT y desarrolladores al tester de MetaTrader 4. Este tipo de personas temen al modelaje de llas barras, lo consideran un funcionamiento erróneo del tester. El tester en MetaTrader 4 demuestra, además de la posibilidad de un modelaje correcto del precio en cualquier periodo de tiempo, la necesidad de este acercamiento en la prueba de la estrategia basada en el historial.

Puede ver el vídeo y estimar el progreso del precio y el calculo del indicador en el tester.


Importante: el tester realiza un modelo real de prueba que necesita ciertos recursos.


Preguntas frecuentes que resultan del desconocimiento del del modelaje de precios correctos en el tester

MetaTrader 4 salió oficianlmente el 1 de julio de 2005, y desde entonces aparecen siempre las mismas preguntas en diferentes foros; preguntas que están conectadas con el uso incorrect del tester. Aquí tiene las preguntas más frecuentes, que resultan de los mitos sobre los testers de los últimos años.


Conclusión

El tester en MetaTrader 4 es el resultado de la experiencia a largo plazo de escritura de varias generaciones de terminales de trading desde el año 2000. Todo se hizo para ofrecer al trader una oportunidad de probar estrategias con la máxima corrección posible. Esto elimina la necesidad de probar ideas de trading durante varios meses en modo de tiempo real. Pero al conocer todas estas opciones del tester, se ahorra tiempo y se es consciente de la importancia del desarrollo correcto de los indicadores y del AE.