English Русский 中文 Deutsch 日本語 Português
Probando Asesores Expertos en marcos temporales no estándar

Probando Asesores Expertos en marcos temporales no estándar

MetaTrader 4Probador | 12 noviembre 2015, 09:39
1 095 0
Dmitry Fedoseev
Dmitry Fedoseev

Introducción


El precio del mercado oscila con demasiada frecuencia como para poder utilizar el gráfico de cambio del precio, el así llamado gráfico de ticks, en nuestro análisis técnico. Para facilitar la percepción del cambio del precio y poder analizar marcos de tiempo más largos se utilizan gráficos de barras o velas. Cada barra representa el valor del precio al inicio y al final de un determinado período de tiempo, así como el valor máximo y mínimo del precio durante dicho período. Se suelen utilizar los siguientes intervalos de tiempo: 1 minuto, 5 minutos, 15 minutos, 30 minutos, 1 hora, 4 horas, diario, semanal y mensual. Estos períodos se encuentran disponibles en la barra de herramientas del terminal MetaTrader 4.



Los plazos de tiempo anteriores se han convertido en un estándar, pero no existe ninguna razón técnica por la que no podemos utilizar otros para representar el cambio del precio. Desde un punto de vista práctico, el terminal proporciona un script (period_converter) que permite a los usuarios crear gráficos con períodos de tiempo no estándar; por ejemplo de 2 minutos, 7 minutos, 45 minutos, 2 horas, y básicamente cualquier otro marco temporal, así como añadir los indicadores correspondientes. Sin embargo, el Probador de Estrategias del terminal solo permite seleccionar períodos estándar.

Así pues, podemos crear gráficos de tiempo no estándar pero no podemos utilizarlos para probar Asesores Expertos. Sin embargo, la situación es mucho mejor de lo que parece. ¡Los Asesores Expertos se pueden probar en marcos de tiempo no estándar! Tan solo hay que sustituir los datos del marco temporal estándar por los del no estándar. Incluso podemos probar nuestros Asesores Expertos en varios marcos temporales no estándar.

Puntos principales


Nuestro plan de acción es como sigue:

1. Prepare un terminal adicional para trabajar offline, de modo que los nuevos datos del marco temporal estándar no se añadan a los del gráfico no estándar.

2. Prepare los datos del periodo no estándar con el script period_converter en el terminal que tiene suficientes datos disponibles de minutos.

3. Importe los datos preparados en el terminal listo para las pruebas.

Echemos ahora un vistazo más exhaustivo:

1. Preparar el terminal de pruebas en marcos de tiempo no estándar.

Instale un terminal adicional. Ejecute el terminal, abra una cuenta demo y espere a que aparezca la lista de símbolos en la ventana "Observación del mercado":

Deshabilitar guardar información de la cuenta: clique con el botón izquierdo del ratón sobre el icono "Estado de la conexión", en la esquina inferior derecha del terminal y seleccione "Inicio de sesión". Desmarque la opción "Guardar información de la cuenta", inicie sesión y espere a que el terminal se conecte a la cuenta.


Esto es para que el terminal no se conecte automáticamente a la cuenta y evitar así que los nuevos datos se añadan al historial. Apague el terminal.

En la carpeta del historial, abra una carpeta cuyo nombre se corresponda con el del broker de la cuenta demo, y elimine de ella todos los archivos *.hst.

2. Preparar los datos del marco temporal no estándar.

Cree períodos no estándar con el script period_converter (disponible en el terminal MetaTrader 4); por ejemplo, M2 y M7, en otro terminal que tenga la cantidad suficiente de datos M1 para el símbolo correspondiente, por ejemplo EURUSD. Con este objetivo, abra el gráfico EURUSD M1 y ejecute el script period_converter. Antes de ejecutar el script, establezca ExtPeriodMultiplier a 2 en la ventana de propiedades. Cuando el script haya terminado de convertir los datos, en la pestaña "Asesores Expertos" del terminal tiene que aparecer un mensaje sobre el número de entradas del archivo, por ejemplo:

"2009.03.19 18:28:09 period_converter EURUSD,M1: 25378 record(s) written"

La secuencia de comandos puede entonces eliminarse del gráfico (haga clic con el botón derecho del ratón en el gráfico donde se ejecutó el script, y seleccione "Eliminar Script"). Abra el gráfico resultante: Menú Principal - Archivo - Abrir sin conexión (busque EURUSD,M2 en la columna Datos del historial). De igual modo, cree el marco de tiempo M7 (estableciendo ExtPeriodMultiplier a 7 antes de ejecutar el script period_converter).

Escribir un script que guarde los datos del gráfico en un archivo *.csv (se adjunta s_ExportChartToCSV_v1.mq4):

int start(){
   int h=FileOpen(Symbol()+Period()+".csv",FILE_WRITE|FILE_CSV,",");
      for(int i=Bars-1;i>=0;i--){
         FileWrite(h,TimeToStr(Time[i],TIME_DATE),TimeToStr(Time[i],TIME_MINUTES),Open[i],High[i],Low[i],Close[i],Volume[i]);
      }
   FileClose(i);
   return(0);
}

Ejecute la secuencia de comandos en los gráficos con marcos temporales no estándar. Como resultado obtendremos archivos *.csv en la carpeta experts/files, con datos del marco temporal no estándar.

3. Importar datos.

Abra el terminal preparado anteriormente en 1. y vaya al Centro de historiales (Menú principal - Herramientas - Centro de historiales, o tecla F2). En la lista izquierda de símbolos, expanda la lista de marcos temporales del símbolo importado y seleccione М1 (haga doble clic para que el texto correspondiente aparezca en la barra de título de la ventana):

En la ventana abierta del Centro de historiales, haga clic en "Importar", seleccione el archivo EURUSD2.csv generado anteriormente en 2. y a continuación clique en "Aceptar". De igual modo, importe los datos de EURUSD7.csv a M5 y cierre la ventana del Centro de historiales. ¡Esto es todo!

Cuando abra el gráfico EURUSD M1 podrá ver los datos de M2:

Lo mismo sirve para EURUSD M5 - en lugar de M5, se visualizarán los datos de M7.

Para probar un Asesor Experto en el Probador de Estrategias deberá seleccionar M1 para probar los datos de M2, y M5 para probar los datos de M7. Para acceder a los datos de M7 en los indicadores utilizados por un Asesor Experto, tiene que especificar el marco temporal M5.

4. Comprobación.

Utilizaremos un sencillo Asesor Experto que abre y cierra órdenes en la intersección de dos MAs (se adjunta 2MA.mq4). ¡Atención! Este Asesor Experto está diseñado solo para operar en el Probador de Estrategias.

extern int TimeFrame=0;
extern double Lots=0.1;
extern int FastMAPeriod=13;
extern int FastMAMethod=0;
extern int FastMAPrice=0;
extern int SlowMAPeriod=21;
extern int SlowMAMethod=0;
extern int SlowMAPrice=0;

int start(){
      double fast_ma_1=iMA(NULL,TimeFrame,FastMAPeriod,0,FastMAMethod,FastMAPrice,1);
      double slow_ma_1=iMA(NULL,TimeFrame,SlowMAPeriod,0,SlowMAMethod,SlowMAPrice,1);
      double fast_ma_2=iMA(NULL,TimeFrame,FastMAPeriod,0,FastMAMethod,FastMAPrice,2);
      double slow_ma_2=iMA(NULL,TimeFrame,SlowMAPeriod,0,SlowMAMethod,SlowMAPrice,2);
      static int bt=0;
      static int st=0;
         if(fast_ma_1>slow_ma_1){
            if(fast_ma_2<=slow_ma_2){
               if(st>0)OrderClose(st,Lots,Ask,0,CLR_NONE);
               st=0;
               if(OrdersTotal()==0)bt=OrderSend(Symbol(),OP_BUY,Lots,Ask,0,0,0,"",0,0,CLR_NONE);
            }
         }
         if(fast_ma_1<slow_ma_1){
            if(fast_ma_2>=slow_ma_2){
               if(bt>0)OrderClose(bt,Lots,Bid,0,CLR_NONE);
               bt=0;            
               if(OrdersTotal()==0)st=OrderSend(Symbol(),OP_SELL,Lots,Bid,0,0,0,"",0,0,CLR_NONE);
            }
         }         
   return(0);
}

4.1. Asesor Experto en un solo marco de tiempo no estándar.

Abra el Probador de Estrategias (Menú principal - Ver - Prueba de estrategia, o Ctrl+R). Seleccione el Asesor Experto - 2MA, símbolo - EURUSD, marco temporal - M1, abra la ventana de propiedades del Asesor Experto (botón "Propiedades del experto" del Probador de Estrategias) y establezca el valor de la variable TimeFrame a 1 o 0. Ejecute sus pruebas, y, una vez completadas, abra el gráfico (botón "Abrir gráfico" del Probador de Estrategias) para comprobar que se han realizado correctamente.

4.2. Asesor Experto en un solo marco temporal diferente al del Probador de Estrategias.

En la ventana de propiedades del Asesor Experto, establezca la variable TimeFrame a 5 y a continuación comience sus pruebas. Abra el gráfico y cambie el marco de tiempo a М5; establezca dos medias móviles simples con períodos 13 y 21 basadas en los precios de cierre para asegurarse de que las pruebas se han realizado correctamente.

4.3. Asesor Experto con dos marcos temporales.

El Asesor Experto que vamos a utilizar abre órdenes en la intersección de dos MAs (medias móviles) en uno de los marcos de tiempo, dichos puntos se confirman en la posición de dos MAs en un marco de tiempo mayor (se adjunta 2MA2TF.mq4). ¡Atención! Este Asesor Experto está diseñado solo para operar en el Probador de Estrategias.

int start(){
      double fast_ma_1=iMA(NULL,TimeFrame,FastMAPeriod,0,FastMAMethod,FastMAPrice,1);
      double slow_ma_1=iMA(NULL,TimeFrame,SlowMAPeriod,0,SlowMAMethod,SlowMAPrice,1);
      double fast_ma_2=iMA(NULL,TimeFrame,FastMAPeriod,0,FastMAMethod,FastMAPrice,2);
      double slow_ma_2=iMA(NULL,TimeFrame,SlowMAPeriod,0,SlowMAMethod,SlowMAPrice,2);
      
      double _fast_ma_1=iMA(NULL,MA2TimeFrame,FastMAPeriod,0,FastMAMethod,FastMAPrice,1);
      double _slow_ma_1=iMA(NULL,MA2TimeFrame,SlowMAPeriod,0,SlowMAMethod,SlowMAPrice,1);
      
      static int bt=0;
      static int st=0;
         if(fast_ma_1>slow_ma_1){
            if(fast_ma_2<=slow_ma_2){
               if(_fast_ma_1>_slow_ma_1){
                  if(st>0)OrderClose(st,Lots,Ask,0,CLR_NONE);
                  st=0;
                  if(OrdersTotal()==0)bt=OrderSend(Symbol(),OP_BUY,Lots,Ask,0,0,0,"",0,0,CLR_NONE);
               }
            }
         }
         if(fast_ma_1<slow_ma_1){
            if(fast_ma_2>=slow_ma_2){
               if(_fast_ma_1<_slow_ma_1){
                  if(bt>0)OrderClose(bt,Lots,Bid,0,CLR_NONE);
                  bt=0;            
                  if(OrdersTotal()==0)st=OrderSend(Symbol(),OP_SELL,Lots,Bid,0,0,0,"",0,0,CLR_NONE);
               }
            }
         }         
   return(0);
}

Los siguientes valores se establecen por defecto: TimeFrame - 1, MA2TimeFrame - 5. Seleccione en el Probador de Estrategias el marco de tiempo M1 y comience a ejecutar sus pruebas. A continuación, abra el gráfico y utilice las líneas verticales en los puntos de apertura de posición y en los puntos de intersección de las medias móviles que no resultaron en apertura de posición, mientras cambia de M1 a M5, y asegúrese de que las pruebas se han hecho correctamente.



Conclusión

¡Estas manipulaciones sencillas amplían el abanico de posibilidades para probar nuestros Asesores Expertos! La única pega es la falta de actualizaciones automáticas. Para mejorar las capacidades del Probador de Estrategias, repita de vez en cuando (por ejemplo una vez por semana) las acciones descritas en los pasos 1 a 3. Borre todos los datos del terminal para realizar sus pruebas, y exporte e importe los períodos no estándar al terminal.

Traducción del inglés realizada por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/en/articles/1368

Archivos adjuntos |
2MA.mq4 (1.29 KB)
2MA2TF.mq4 (1.64 KB)
Indicador de líneas de tendencia según el enfoque de T. Demark Indicador de líneas de tendencia según el enfoque de T. Demark
Este indicador muestra las líneas de tendencia junto con los acontecimientos recientes que suceden en el mercado. Se desarrolla de acuerdo a las recomendaciones de Thomas Demark en lo relativo al análisis técnico. El indicador muestra la dirección de la tendencia actual y la penúltima dirección opuesta de la misma.
Dibujando niveles de ruptura horizontales utilizando fractales Dibujando niveles de ruptura horizontales utilizando fractales
Este artículo describe la creación de un indicador que muestra los niveles de soporte y resistencia por medio de fractales alcistas/bajistas.
Utilizando MetaTrader 4 en el análisis de patrones temporales Utilizando MetaTrader 4 en el análisis de patrones temporales
El análisis de patrones basados en el tiempo sirve para determinar cuál es el mejor momento para entrar en el mercado, o para saber si una operación determinada debe evitarse a toda costa. En este artículo utilizamos MetaTrader 4 para analizar el historial de datos, y generamos unos resultados de optimización que pueden resultar útiles en los sistemas de trading automáticos.
Trabajamos con archivos ZIP con los medios de MQL5, sin usar bibliotecas ajenas Trabajamos con archivos ZIP con los medios de MQL5, sin usar bibliotecas ajenas
El lenguaje MQL5 prosigue su desarrollo, continuamente se le añaden nuevas funciones para trabajar con datos. Desde hace cierto tiempo, gracias a las innovaciones, resulta posible trabajar con archivos ZIP con las herramientas estándar MQL5, sin tener que implicar bibliotecas DLL ajenas. Este artículo describe de forma detallada cómo hacerlo, usando como ejemplo la descripción de la clase CZip, un instruemnto universal de lectura, creación y modificación de archivos ZIP.