Como realizar un backtesting en Metatrader 4 de calidad

IndicatoriNosu julio 03, 2010 12 Comentarios

En el artículo de hoy quiero mostraros como se realiza un backtesting de calidad en Metatrader 4. Todos lo que usamos Metatrader hemos usando el satrategy tester alguna vez para probar algún sistema automático (Expert Advisor), sin embargo los resultados obgtenidos en dicha prueba no son siempre los más fiables. El mejor parámetro para determinar la calidad de los resultados de las pruebas de Expert Advisors en Metatrader es el modelling quality cuyo valor puedes ver en el informe final del strategy tester en la esqwuina superior derecha. El valor de la calidad del backtesting debe estar por encima de 90% para que se pueda considerar como un backtesting de calidad siendo el óptimo un 99% (nunca o casi nunca se llega al 100%).

El backtesting de Metatrader se realiza utilizando los datos históricos de todos los timeframes inferiores al timeframe en el que vas a realizar la prueba y, por tanto, gran parte de la calidad del backtesting viene determinada por la disponibilidad de dichos datos para el período elegido para el backtesting. Así, si voy a realizar un backtesting de un EA para el período 1 de Enero de 2009 y 1 de Febrero de 2010 en gráficos de 1 hora, el estrategy tester intentará utilizar los precios históricos de apertura, cierre, máximo y mínimo de las velas de gráficos de 60, 30, 15, 5 y 1 minutos perdiéndose calidad en los resultados del backtesting cuando los datos de los diferentes timeframes no estén disponibles. Ahora explicaré como conseguir un modelado de calidad de al menos el 90% utilizando los datos históricos de velas M1.

Lo primero que se ha de hacer es obtener el histórico de gráficos M1 de tu broker. Para ello hay varias vías:

  • Colectar los datos M1 en tiempo real: tendrás que tener un gráfico M1 abierto y esperar a que el tiempo pase y se vayan acumulando los datos minuto a minuto, día tras día hasta que consideres que tienes datos suficientes para tu backtesting. Esta es, sin duda, la vía menos viable.
  • Descargar los datos M1 utilizando el desplazamiento lateral en el gráfico. Mediantes este método no consigues descargar datos de más de dos meses, puede que tres, para un instalación nueva de Metatrader por lo que tampoco se adapta a las necesidades de la inmensa mayoría de nosotros.
  • Descargar los datos M1 a través del history center : a través del history center de Metatrader se pueden descargar los datos del timeframe que quieras pero con varios problemas: la cantidad de datos puede estar limitada y no todos los brokers tienen habilitada esta función. Si tu broker tiene deshabilitada esta función los datos se descargan desde metaquotes y pueden estar desincronizados con la zona horaria de tu broker. Por tanto, esta tampoco es la mejor opción pero puede valer si tu broker lo ofrece.
  • Descargar los datos M1 desde la base de datos de tu broker de forma externa. Esta es la mejor opción. Pregunta a tu broker como y donde puedes acceder a la descargar de los archivos con los históricos de precios de velas M1.

Procedamos pues con los pasos para realizar un backtesting de calidad:

  1. Instala un Metatrader a parte del que uses normalmente, para ello simplente especifica una carpeta de instalación diferente al instalar Metatrader. No abras ninguna cuenta demo ni real. Si lo abres cierralo.
  2. Ve a a la carpeta Archivos de programa>Metatrader4>history>Servidor y borra todos los archivos con nombre de un par de divisas, no borres symbols.sel nisymgroups.raw. Borra también todos los archivos de la carpeta downloads en metatrader4>history>downloads
  3. Descarga los datos mediante la opción del punto 4 de las mencionadas anteriormente o mediante la opción del punto 3 si tu broker ofrece esta descarga de forma adecuada. Los datos descargados se guardarán en la carpeta archivos de programa>Metatrader>history>downloads.
  4. Abre Metatrader. Te aparecerá la ventana para abrir una demo, cierra dicha ventana. Las ventanas de gráficos no deben mostrar nada pues has borrado los datos en el paso dos.
  5. Ve a Herramientas>Opciones y pincha sobre la pestaña gráficos. Por el máximo en los campo «Max. barras en historial» y en «Max. barras en gráfico». Para poner el máximo no selecciones de las opciones sino que escribe en la casilla tantos 9 como te deje el programa. Pulsa Aceptar.
  6. Ahora ve a Herramientas>History Center. Despliega hasta que encuentres el par de divisas cuyos datos has descargado y selecciona dicho par. Al seleccionar el par no haber aparecer ningún dato pues los borrastes en el paso 2. Haz clic en el botón Importar. Se abrirá una ventana en la que debes seleccionar el archivo descargado. Una vez cargado dicho archivo pulsa Aceptar y otra vez Aceptar.
  7. Al no tener ninguna cuenta abierta no habrá conexión con ningún servidor. Ve a Archivo>Abrir sin conexión y selecciona el par de divisas con el que has estado trabajando durante todo el proceso en la opción en la que aparezca M1.
  8. Ahora debes ejecutar el script «period converter» en el gráfico M1 para pasar los datos a temporalidades superiores (este script viene incluído en Metatrader, mira bajo la lista de Asesores Expertos e Indicadores Personalizados). Debes ejecutar el script una vez por cada temporalidad que quieras construir y es necesario tener los datos de la temporalidad en la que vayas a realizar la prueba y en todas las temporalidades inferiores. Así, si vas a realizar la prueba en gráficos H1 deberás ejecutar el script period converter 4 veces: para 5, 15, 30 y 60 minutos. Cada vez que ejecutas el script debes introducir en los parametros del script el número de minutos para la conversión: 5, 15, 30, 60, 240, etc.
  9. Tras realizar el paso 8 ve a Archivo>Abrir sin Conexión y podrás abrir todos los gráficos del par de divisas y timeframes para lo que hayas realizado el paso 8. Abre el gráfico en el que vayas a realizar el backtesting, añade el Expert Advisor que vayas a probrar y Feliz Backtesting.

Un modelo del 90% de calidad es suficientemente aceptable. No obstante si quieres obtener el 99% hay un tutorial que explica el proceso utilizando los datos de Dukascopy. Un proceso mucho más engorroso y que bajo mi punto de vista no ofrece demasiadas ventajas pues para la mayoría de EAs un 90% es más que suficiente. No obstante, EAs con estrategias de scalping pueden ser extermadamente sensibles a cambios muy pequeños en los precios y puede que necesites llegar al 99% de calidad en el backtesting, si este es tu caso aquí tienes el enlace al mencionado tutorial: Como obtener un 99% de calidad en el backtesting

OJO!!! que obtener una buena calidad del backtesting no significa que los resultados del EA vayan a ser positivos!!!

Compártelo: Facebook GoogleTwitterEmail
Mostrar Mas

Añade un comentario

12 Comentarios

Muy buena explicación, por fin me entero. Gracias!!!!!!!!!!

Muy buena explicación, por fin me entero. Gracias!!!!!!!!!!

Quiero aumentar mi modelling quality a 99% si es posibleeee, tenia antes un 90%, pero luego bajo a 50% no se porke , si son tan amables de ayudarme para hacer testeos de calidad por favor

Gracias por aclarar la duda… Y repito mi agradecimiento por tan buen aporte.

Quiero aumentar mi modelling quality a 99% si es posibleeee, tenia antes un 90%, pero luego bajo a 50% no se porke , si son tan amables de ayudarme para hacer testeos de calidad por favor

Buen artículo, quiero añadir primero que no es necesario estar desconectado para realizar el backtesting, simplemente al momento de realizar el análisis es necesario marca la opción «Use date» y poner de inicio y de fin de la base de datos que descargamos para que no se contamine con las actualizaciones recientes del MT.

Por otra parte, sería interesante tener un artículo que explique como interpretar los resultados del backtesting y de la optimización. Debería responder a preguntas como ¿como se debe interpretar X criterio (p.e. «Factor benefit») ¿en que criterios me debo basar para evaluar mi estrategia? ¿que criterios me permiten decir que una estrategia es mejor que otra? etc.

Estoy comenzando operaciones, no sé nada y aún con estas explicación tengo mis dudas, pero algo me ha ayudado.

Buen artículo, quiero añadir primero que no es necesario estar desconectado para realizar el backtesting, simplemente al momento de realizar el análisis es necesario marca la opción «Use date» y poner de inicio y de fin de la base de datos que descargamos para que no se contamine con las actualizaciones recientes del MT.Por otra parte, sería interesante tener un artículo que explique como interpretar los resultados del backtesting y de la optimización. Debería responder a preguntas como ¿como se debe interpretar X criterio (p.e. «Factor benefit») ¿en que criterios me debo basar para evaluar mi estrategia? ¿que criterios me permiten decir que una estrategia es mejor que otra? etc.

Hola.

En primer lugar felicitarte por el artículo, me parece muy bueno y me ha ayudado mucho.

No obstante no logro cargar los datos, me ocurre lo siguiente: para el CFD del SP500 mi broker si proporciona datos, unos 34.000 registros en vela de 1M para este CFD, lo que es mes y medio mas o menos. Cuando convierta a vela diaria, apenas tendré 30 velas.

El problema es que el dato del cfd del futuro del SP500 no es tan facil de conseguir como datos de FX para cargarlos de una cuenta externa.

Por otro lado, cuando ejecuto el script period_converter, me sale el mensaje de que se ha cargado correctamente pero no dice nada más, se queda como trabajando pero en ningún sitio puedo ver el progreso que lleva. Si intento cambiar la temporalidad de la ventana me dice que si quiero cancelar el script, por lo que entiendo que está funcioando. ¿Lo estoy haciendo bien?

Muchas gracias.

Hola.En primer lugar felicitarte por el artículo, me parece muy bueno y me ha ayudado mucho.No obstante no logro cargar los datos, me ocurre lo siguiente: para el CFD del SP500 mi broker si proporciona datos, unos 34.000 registros en vela de 1M para este CFD, lo que es mes y medio mas o menos. Cuando convierta a vela diaria, apenas tendré 30 velas.El problema es que el dato del cfd del futuro del SP500 no es tan facil de conseguir como datos de FX para cargarlos de una cuenta externa.Por otro lado, cuando ejecuto el script period_converter, me sale el mensaje de que se ha cargado correctamente pero no dice nada más, se queda como trabajando pero en ningún sitio puedo ver el progreso que lleva. Si intento cambiar la temporalidad de la ventana me dice que si quiero cancelar el script, por lo que entiendo que está funcioando. ¿Lo estoy haciendo bien?Muchas gracias.

Gracias por aclarar la duda… Y repito mi agradecimiento por tan buen aporte.

Estoy comenzando operaciones, no sé nada y aún con estas explicación tengo mis dudas, pero algo me ha ayudado.

La inversión es especulativa. Al invertir su capital está en riesgo. Este sitio no está destinado para su uso en jurisdicciones en las que las operaciones o inversiones descritas están prohibidas y solo deben ser utilizadas por dichas personas y en las formas legalmente permitidas. Es posible que su inversión no califique para la protección de los inversores en su país o estado de residencia, por lo que debe realizar su propia diligencia debida. Este sitio web es gratuito para su uso, pero es posible que recibamos una comisión de las compañías que presentamos en este sitio. Haga clic aquí para mas información.