English Русский 中文 Deutsch 日本語 Português
El tester en la terminal MetaTrader 4: Debería saberse

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

MetaTrader 4Probador | 30 marzo 2016, 13:20
1 475 0
MetaQuotes
MetaQuotes

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.

  • Basándose en las barras que ya están compuestas, prepare de antemano un archivo de datos que pudiera contener todos los valores de los precios necesarios, indicadores y otros parámetros, y envíelo a continuación al tester (genera la secuencia necesaria con la posibilidad teórica de indagar en el futuro). La información se recibe en la forma de barras ya compuestas sin modelar la información de las barras de precios;


  • prepare un archivo que contenga sólo el precio modelado, y envíelo al tester, introduzca los cambios de precio (ticks de precio), como en la vida real. En este momento, el tester no tiene futuro intínsicamente.

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.

  • ¿Por qué mi Asesor experto, cuando utiliza un indicador, abre los trades en la ubicación errónea?

    Una vez que acaba la prueba, puede utilizar el botón "Abrir gráfico" para abrir un gráfico, reflejando todos los puntos de entrada y salida, así como los indicadores a los que llamó el Asesor experto. Pero a menudo se ignora que los valores del indicador, en el momento en el que se calculan en el historial, pueden ser diferentes de los valores del momento de la prueba (online). Un ejemplo claro es el indicador ZigZag.

    Al abrir el gráfico de prueba del AE en el que se utilizó el indicador, se puede ver claramente todas las rupturas del ZigZag. Se podría esperar un buen beneficio de una estrategia basada en el seguimiento de estas rupturas en la barra cero. Aquellos que no comprenden el principio de funcionamiento del tester MT4, creen equivocadamente que una estrategia así debería mostrar el beneficio absoluto en el tester, porque en otros programas AT se ve el futuro de estas estrategias. Pero no se ve ningún beneficio. Es más, ¡los trades se abren en la ubicación errónea! Empiece la prueba en el modo visual, adjunte al gráfico todos los indicadores que usa el AE, ¡y las ilusiones se desvanecerán! Para hacer esto no necesita un conocimiento especial: el tester mostrará todo en el modo visual. Aquí tiene los ejemplos para un AE así: ExpertZigZag


    Importante: si no está seguro sobre el correcto funcionamiento del tester, utilice el tester visua. Verá el proceso de prueba tal y como es, y no como usted cree que sería.


  • ¿Por qué los valores del indicador en la prueba y los valores del indicador en el gráfico online no son iguales?

    Uno de los errores durante la escritura de un indicador es un cálculo incorrecto de los valores y paralogismos del indicador. Como resultado, el indicador empieza a "mentir" y a coleccionar errores. En otras palabras, el día anterior el indicador mostró valores diferentes de los del día actual en el mismo periodo.

    El error de estos indicadores también se ven en el funcionamiento online del indicador.- Por ejemplo, se adjunta el indicador a un gráfico de 15 minutos, se espera a que aparezcan 3 o 4 barras nuevas y luego se adjuntan más indicadores de ese tipo, pero utilizando otros colores. A menudo, la diferencia se aprecia visualmente. Aquí tiene los ejemplos de un indicador incorrecto:


    Importante: los indicadores se calculan durante la prueba, como en el funcionamiento online, por eso todos los errores de la lógica de los indicadores aparecen en el proceso de prueba.


  • ¿Por qué mi AE ve precios erróneos de un periodo de tiempo más alto, aunque he importado mi propio historial?

    Para los modelajes del tester, utilice los datos de los archivos fxt. Generalmente, el indicador genera estos archivos en base al historial disponible en los archivos hst. Pero si el archivo FXT se generó en otra hora, o en otras cotizaciones del broker (o lo preparó usted mismo, el formato del archivo fxt es abierto), y los datos en este archivo fxt no se corresponde con los datos en los archivos hst, pueden ocurrir varios errores. Normalmente esto suele pasar después de la importación del manual y la reconversión de las cotizaciones laterales.

    Por ejemplo, el AE llama a la función iOpen (NULL, PERIOD_D1, 1) o iHighest(NULL_PERIOD_D1, MODE_HIGH,20, 1). iOpen (NULL, PERIOD_D1, 1) pide el precio de apertura del día anterior en el mismo símbolo en el que se lleva a cabo la prueba. iHighest(NULL, PERIOD_D1, MODE_HIGH,20, 1) ofrece el índice de la barra diaria con el valor de Alto más grande dentro de las 20 barras, empezando por la primera (del día anterior). En el tester, ambas funciones se calculan en la base de los datos de los archivos hst.

    Y si el archivo fxt no se corresponde con el historial en los archivos hst (en este ejemplo, los datos en EURUSD1440.hst), los precios en el tester serán completamente diferentes. Hay dos historiales diferentes: el del tester, y el del archivo EURUSD*hst.

    Importante: una prueba correcta necesita la correspondencia entre los datos en los archivos fxt- y hst-. No se aconseja utilizar la importación de parches de fuentes laterales. Utilice el Centro de historial estándar con el historial por minutos de las cotizaciones de 1999. Las cotizaciones por minuto del Centro de historial se recalculan automáticamente en todos los periodos de tiempo y se convierten a la hora de la cuenta actua, lo que elimina la "variación de tiempo".


  • ¿Por qué después de importar mis cotizaciones, los indicadores de los periodos de tiempo más altos mienten en el tester?

    Mientras que sólo se modelen los precios de la barra cero, los valores de los indicadores estándar y los personalizados en las otras barras se calculan en base a los datos de los archivos hst. Es decir, los valores correctos de los indicadores no se pueden calcular sin el precio de fuente corriente de los datos de otros periodos de tiempo.

    Importante: antes de empezar la prueba, asegúrese que se han sacado todos los datos de precios necesarios de otros periodos de tiempo. El Centro estándar de historial ofrece la corrección de todos los periodos de tiempo, porque automáticamente lo recalcula desde los datos por minuto de todos los otros periodos.


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.

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

Archivos adjuntos |
CheckModelling.mq4 (2.52 KB)
ExpertZigzag.mq4 (1.46 KB)
Matemáticas de trading. Cómo evaluar los resultados de las transacciones comerciales Matemáticas de trading. Cómo evaluar los resultados de las transacciones comerciales
Todos somos conscientes de que "No obtener beneficios en el pasado garantizará el éxito en el futuro". Sin embargo, todavía es muy actual el poder estimar los sistemas de trading. Este artículo trata sobre algunos métodos simples y convenientes que ayudarán a estimar los resultados de trade.
Interacción entre MetaTrader 4 y Matlab a través de archivos CSV Interacción entre MetaTrader 4 y Matlab a través de archivos CSV
Las instrucciones paso a paso de cómo organizar las gamas intercambio de datos entre MetaTrader 4 y Metlab a través de archivos CSV.
Desarrollo del tester de estrategia limit para probar un AE hedge Desarrollo del tester de estrategia limit para probar un AE hedge
Una idea para probar la Asesor experto hedge utilizando el tester de estrategia.
MT4TerminalSyn: Sistema para la Sincronización de Terminales MetaTrader 4 MT4TerminalSyn: Sistema para la Sincronización de Terminales MetaTrader 4
Este artículo está dedicado al tema "Ampliar las posibilidades de los programas MQL4 utilizando funciones de sistemas operativos y otros medios de desarrollo de programas". El artículo describe un ejemplo de un sistema que integra la tarea de la sincronización de varias copias de terminales basada en una única plantilla de base.