Cómo Hacer un Backtest en Gráfico Offline con Metatrader

Como ya sabréis, el Strategy Tester de Metatrader solo puede trabajar con los timeframes definidos de serie en Metatrader (M1, M5, M15, M30,etc.) lo que nos impide hacer backtests en gráficos que no sean los que están en el History Center, quedando limitados a utilizar gráficos de velas en dichos timeframes. Sin embargo, siguiendo los pasos que os vamos a contar en este artículo, podréis hacer backtests en otros timeframes o sobre gráficos Renko, Punto y Figura, etc.

Lo primero de todo es crear un servidor virtual de un broker ficticio (sí, como lo oyen :D). Para ello simplemente debemos ir a la carpeta de datos de Metatrader (accesible desde el menú File-> Open Data Folder), abrir la carpeta History y dentro de ella crear una carpeta con el nombre que deseemos para el servidor virtual. En nuestro ejemplo, hemos elegido como nombre para el broker «xtrader» (muy original :P):

Dentro de esa carpeta, debemos varios archivos desde la carpeta que tiene el nombre del servidor al que nos conectamos en nuestro broker. Dichos archivos son los siguientes:

  • symbols.raw
  • symbols.sel
  • symgroups.raw
  • ticks.raw
  • Los datos en timeframe de 1 minuto del activo que nos interese, por ejemplo, EURUSD1.hst, GBPUSD1.hst, USDCHF1.hst, etc. En nuestro ejemplo hemos cogido los datos en 1 minuto para el CFD del Dax (GER30).

Con esto logramos crear un broker de mentira que no tiene conexión, de tal forma que no puede conectarse a ningún sitio y descargar nuevos datos. Sin embargo, este broker tiene el mismo listado de instrumentos que nuestro broker de verdad.

Ok, ya falta menos: ahora tenemos que hacer login en nuestro broker virtual. Para ello simplemente tenemos que realizar el proceso habitual para iniciar sesión en nuestra cuenta y cambiar el nombre del servidor por el de la carpeta que hemos creado haciendo doble clic en ese apartado y poniendo el nombre. El resto de campos (usuario y contraseña) podemos dejarlos igual, no afectan para nada. Si lo hemos hecho bien, nos quedará así:

Ahora toca generar el gráfico offline que nos interese. En nuestro ejemplo vamos a generar un gráfico Renko usando el script RenkoLiveChart que podéis descargar desde el Foro haciendo clic aquí.

Para ello, copiamos el script en la carpeta MQL4Scripts, dentro de la carpeta de datos de Metatrader. Reiniciamos o refrescamos los scripts y nos aparecerá en el Navigator. Seguidamente abrimos el gráfico de 1 min del GER30 y ejecutamos el script sobre él. Nos aparecerá la siguiente ventana de parámetros:

Como podemos ver, hemos configurado el tamaño de las cajas a 100 puntos (el CFD cotiza con 1 decimal, por lo que si queremos velas Renko de 10 puntos tenemos que poner 100) y, lo más importante: en RenkoTimeFrame hemos puesto 5. Normalmente en este tipo de scripts se suele poner un número diferente de los timeframes estándar de Metatrader para no sobrescribir el histórico que tengamos pero ahora precisamente lo que queremos es crear ese histórico para ese timeframe. Por ello, en este campo, debemos poner 5, 15, 30 etc.
 
Si todo ha ido bien nos aparecerá el mensaje que podemos ver resaltado en esta imagen:

Si ahora cerramos Metatrader, la abrimos de nuevo y ponemos el gráfico en timeframe de 5 minutos deberíamos tener algo como esto:

Con esto verificamos que todo ha ido bien. Ahora simplemente debemos ir al Strategy Tester (Menú View->Strategy Tester o Ctrl+R), seleccionar el Expert Advisor que vayamos a utilizar, y aplicar al símbolo del gráfico offline que nos interese, usando M5 como timeframe. Y ¡listo! Ya lo tenemos en marcha haciendo el backtest. Para nuestro ejemplo, hemos ejecutado un backtest usando el Expert Advisor MACD Sample que viene de serie en Metatrader sobre el gráfico Renko del GER30 que acabamos de generar:

Finalmente sobre este procedimiento, algunos comentarios:

  1. No todos los Expert Advisors pueden ejecutarse sobre gráficos de este tipo. Probablemente los Expert Advisors más antiguos no funcionen correctamente. Lo ideal es recomendable que utilicen la nueva estructura de MQL4 para Expert Advisors, usando la función de gestión de eventos OnTick. Podéis encontrar más información al respecto en https://docs.mql4.com/basis/function/events
  2. La calidad de modelado se pierde completamente (aparece como n/a) y veremos un número muy alto de errores (Mismatched Chart Errors), algo que es normal porque hemos trasteado un poco con los datos para engañar a Metatrader. No obstante, todo ello nos debe hacer ser relativamente cautos sobre los resultados obtenidos en el backtest porque, aunque generalmente salen cosas muy buenas, puede que en ocasiones nos estemos engañando.

No obstante, si os apetece podemos seguir tratando este tema y probando estrategias sobre Renko u otros tipos de gráficos no estándar en Metatrader en el Foro, creo que entre todos podemos encontrar cosas realmente interesantes.

Saludos,
X-Trader

COMPARTIR EN: