English Русский 中文 Deutsch 日本語 Português
Utilizando MetaTrader 4 en el análisis de patrones temporales

Utilizando MetaTrader 4 en el análisis de patrones temporales

MetaTrader 4Sistemas comerciales | 16 noviembre 2015, 10:04
864 0
Giampiero Raschetti
Giampiero Raschetti

Introducción

Los posts del foro del Campeonato de Trading Automático y las entrevistas realizadas suelen aportar mucha información interesante, pero enterrada en un montón de ruido.
Los argumentos que expuso William Boatright (Wackena) en su entrevista, https://championship.mql5.com captaron mi atención: un enfoque temporal que consistía en elegir una hora del día para abrir una posición; una técnica intradía de swing trading.
Así que comencé a recopilar información sobre dicha aproximación y decidí implementar un sistema que verificara la efectividad real de esa técnica.

Este artículo adjunta el código correspondiente (sin una estrategia de salida real, sin embargo) para mostrar un ejemplo de los patrones temporales que uno puede esperar de MetaTrader, en sus investigaciones estadísticas y de minería de datos con secuencias de datos relativamente largas.


Búsqueda de literatura

En primer lugar, me puse a buscar información sobre esta idea y encontré un artículo muy interesante en el libro "Nuevos sistemas y métodos de Trading" de Perry J. Kaufman, una Biblia muy pesada sobre análisis técnico. El capítulo 15 habla sobre el reconocimiento de patrones, y los argumentos más importantes se centran precisamente en la hora del día y en los hábitos de trading.
Este capítulo hace referencia al libro "Stock Market Correspondence Lessons", escrito por Frank Tubbs, donde se explican los seis patrones dominantes en el mercado de valores basados en horas de trading US. El artículo 4 afirma: "si el mercado ha sido alcista hasta las 14:00, continuará probablemente así hasta el cierre, y al día siguiente".

Bueno, las 14:00. GMT-5, es exactamente 20:00 GMT+1, la hora en que Wackena realiza sus operaciones. Esta es la primera confirmación interesante sobre la efectividad de esta técnica. Hay otras referencias interesantes sobre este tema en este capítulo de Kaufman.


Implementación del EA básico

El primer apunte sobre la implementación de un sistema de este tipo es que las únicas señales relevantes que pueden buscarse son aquellas que brindan información acerca de la dirección de tendencia, y los métodos de contratendencia no son adecuados para este propósito.

En este artículo se presentó un Asesor Experto básico, así como un diagrama de bloques para representar el flujo de operaciones, como muestra la siguiente figura.

Donde:
  • La rutina Analyzer llama a una secuencia de detectores de señal, dando respuesta sobre la fuerza de la tendencia en ese momento.
  • TrailingStopEngine evalúa de forma dinámica el siguiente beneficio objetivo y el nuevo trailing stop, dependiendo del rango verdadero promedio.
  • CurrentOpenOrders devuelve el número de órdenes abiertas.
  • LoopThroughOrders recorre todas las órdenes y, si hace falta, aplica nuevos trailing stop y nuevos objetivos de beneficio, o decide cerrar la posición como consecuencia de algún evento en particular.
  • BlockFilterTrading decide si existen condiciones donde no queremos operar en absoluto.
  • MoneyManagement devuelve el tamaño del lote como función del riesgo.
  • PlaceOrder, si es posible, coloca órdenes en la dirección establecida por Analyzer.

Resultados de las operaciones y optimización

Utilizo MetaTrader en un Apple MacBookPro con un pc virtual corriendo con Parallel Desktop. Funciona de forma rápida y fiable, así que puedo tomar fácilmente capturas de pantalla de la máquina virtual MS-windows, para elaborar la documentación.
El backtesting se ha realizado sobre el par de divisas EURUSD, con los datos del período de tiempo comprendido entre el 1 de enero de 2007 y el 29 de diciembre 2007, en un marco temporal de 15 minutos. Los resultados parecen satisfactorios.
Los parámetros de la operación principal se han tomado de un primer proceso de optimización; usted puede probar distintas combinaciones de los mismos.
En relación a la elección de los parámetros Take Profit y Stop Loss de esta prueba, cabe señalar que, en realidad, no nos interesa maximizar el saldo, ni ninguno de los parámetros de optimización de MetaTrader. Tenemos que maximizar el número de operaciones ganadoras para poner el foco en la estrategia de entrada.
La optimización de otros resultados debe hacerse en una fase posterior.

Este es el código del módulo Analyzer. Se puede añadir cualquier otro detector de señales para ejecutar pruebas.

Se deben poner de acuerdo dos señales diferentes para elegir la dirección correcta.

//+------------------------------------------------------------------+ 
//| Analizador de la dirección del precio 
//+------------------------------------------------------------------+ 
int Analyzer()  
{ 
 int  signalCount=0; 
 signalCount += EntrySignal1(); 
 signalCount += EntrySignal2(); 
 return(signalCount); 
} 
 
//+------------------------------------------------------------------+ 
//| MÓDULOS DE BLOQUEO DE SEÑALES DE ENTRADA 
//+------------------------------------------------------------------+ 
int EntrySignal1() 
{ // Detectar tendencia SMA a largo plazo
 int i,Signal; 
 
 int LongTrend=0; 
 for(i=0;i<3;i++) 
 { 
   if (iMA(Symbol(),PERIOD_H4,S1_MA_FAST,0,MODE_LWMA,PRICE_TYPICAL,i) > iMA(Symbol(),PERIOD_H4,S1_MA_FAST,0,
   MODE_LWMA,PRICE_TYPICAL,i+1)) 
     LongTrend++; 
   else 
     LongTrend--; 
 }     
 if( LongTrend < 0) 
   Signal=-1; 
 else 
   Signal=1;  
 return(Signal);  
} 
 
int EntrySignal2() 
{ // MACD diario
   int Signal; 
 
   if (iMACD(NULL,PERIOD_D1,S2_OSMAFast,S2_OSMASlow,S2_OSMASignal,PRICE_WEIGHTED,MODE_MAIN,0) > 
       iMACD(NULL,PERIOD_D1,S2_OSMAFast,S2_OSMASlow,S2_OSMASignal,PRICE_WEIGHTED,MODE_MAIN,1) ) 
     Signal=1; 
   else 
     Signal=-1; 
   return (Signal); 
}

La hora de trading se calcula en el siguiente módulo de filtro de trading.
La arquitectura modular descrita permite implementar nuevos filtros de bloqueo en el flujo de operaciones.

//+------------------------------------------------------------------+ 
//| MÓDULOS DE BLOQUEO 
//+------------------------------------------------------------------+ 
bool BlockTradingFilter1() 
{
 bool BlockTrade=false;  // operar por defecto 
 if (UseHourTrade) 
 { 
   if( !(Hour() >= FromHourTrade && Hour() <= ToHourTrade && Minute()<= 3) ) 
     { 
      //  Comment("No se puede hacer trading a esta hora!"); 
      BlockTrade=true; 
     } 
  } 
 return (BlockTrade);  
}

De hecho, podemos tener muchas operaciones ganadoras pequeñas sin considerar el saldo total.

Este es el ajuste de optimización principal:



Para analizar los intervalos de tiempo que dan los mejores resultados hay que establecer FromHourTrades de 0 a 23 y ejecutar el paso cada hora, y comprobar la bandera de optimización en la configuración de backtesting, antes de iniciar el proceso.



Estos son los resultados de la optimización:



Como se observa, hay horas donde las técnicas de detección de tendencia pueden ser muy peligrosas, mientras que en otras horas del día son considerablemente más rentables. En el intervalo de tiempo que va de las 19:00 a las 22:00 GMT + 1 (la tarde, hora del este) las noticias ya han sido asimiladas por el mercado.
En este caso, con los datos históricos disponibles, la hora máxima obtenida en el proceso de optimización corresponde a las 21:00 GMT+1 (hora central europea).
Claro que este resultado es válido para el mercado Forex de 2007, sin embargo la reflexión antigua de Frank Tubbs sobre los hábitos de trading sugiere que incluso puede ser efectivo en períodos de tiempo más largos.
Estos son los resultados detallados del proceso de optimización:



Tenga en cuenta que estos resultados también dependen de las señales de tendencia seleccionadas para tomar decisiones sobre la dirección de las órdenes. De acuerdo a mi experiencia puedo asegurar que, en esta estrategia temporal, un amplio abanico de señales genera un resultado parecido. Pero por supuesto que usted puede probar otras señales y compartir sus conclusiones.

Los informes de backtesting de las 21:00 GMT+1 son los siguientes:



Como se puede ver, hay un total de 160 operaciones de las cuales 154 son ganadoras (96.86%).
Esta información confirma lo que Wackena expone en su entrevista.

Presentación del Stop Loss basado en el tiempo

El número de transacciones ejecutadas durante un año sugiere que los resultados se pueden mejorar si introducimos un Stop Loss basado en el tiempo. Esto dejará espacio para nuevas transacciones, si hay pérdidas tras permanecer 23 horas en el mercado.
Para hacer esto, tan solo establezca la bandera UseTimeBasedStopLoss a true, y pruebe diferentes parámetros de optimización.
Esta tabla muestra las consecuencias de este cambio de estrategia.



Esta estrategia de salida permite adivinar que algunas operaciones swing largas, sobre todo en mercados débiles, podrían disuadirle de colocar órdenes indeseables en los malos momentos; por lo que es mejor ser paciente y esperar a que se rompa el mercado lateral.


Conclusión

El análisis de los patrones temporales basado en los hábitos de trading sugiere una investigación adicional, y justifica añadir a este Asesor Experto una estrategia válida de gestión del dinero, y sobre todo un motor válido de trailing stop. Pero entonces entraríamos en un nuevo tema que debería desarrollarse en un artículo nuevo.
El código adjuntado también se puede utilizar para llevar a cabo investigaciones sobre otros patrones y pares de divisas, y para analizar otros hábitos y comportamientos de trading relacionados con el tiempo. Explíqueme su experiencia sobre esta investigación.

REFERENCIAS
Nuevos sistemas y métodos de Trading, de Perry J. Kaufman
https://championship.mql5.com
The Encyclopedia of Trading Strategies, de Jeffrey Owen Katz, Donna L. McCormick
Forex conquered, de J.L.Person
Trading with the odds, de Cynthia A.Kase

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

Archivos adjuntos |
Sauron_1_3.mq4 (7.15 KB)
Scalping Agradable Scalping Agradable
Este artículo describe un método para crear una herramienta de scalping. El enfoque de apertura de posiciones que presentaremos puede aplicarse a cualquier tipo de trading.
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.
A la caza de la tendencia A la caza de la tendencia
El presente artículo describe un algoritmo para aumentar el volumen de una operación ganadora. Se adjunta la implementación correspondiente en el lenguaje MQL4.
Probando Asesores Expertos en marcos temporales no estándar Probando Asesores Expertos en marcos temporales no estándar
No es fácil, es facilísimo. ¡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.