Simulación de patrones que surgen al comerciar con cestas de parejas de divisas. Parte III

27 marzo 2018, 10:25
Andrei Novichkov
0
2 910

Introducción

Pasamos a la parte final de la simulación de los patrones que surgen cuando tradeamos con cestas de parejas de divisas. Recordaré que en el artículo anterior estábamos hablando del patrón que se formaba cuando el gráfico del indicador combinado cruzaba la media móvil. Además, fue considerada la posibilidad de usarlo como filtro para el patrón de ruptura de las líneas de sobrecompra y sobreventa

Ya hicimos conclusión que el tema del futuro desarrollo de los patrones que surgen en los gráficos de los indicadores-osciladores es bastante prometedor. Podemos considerar este tema por agotado.

Vamos a testear el último tipo de patrones. En el artículo principal que describe el trading con parejas de divisas, él está descrito bajo los números 4 y 5. Voy a recordar en dos palabras donde se puede encontrar estos patrones.

Cada divisa de la pareja pertenece a su cesta. Por ejemplo, la pareja EURUSD representa dos cestas: EUR y USD. Se puede analizar el comportamiento de esta pareja usando dos indicadores combinados: por uno para cada cesta. Analizamos la diferencia entre los valores de estos indicadores. Así, se revela el reforzamiento o debilitamiento de las divisas de la pareja respecto una a otra. Entonces, obtenemos la posibilidad de sacar conclusiones sobre la dirección de la tendencia.

El gráfico del indicador combinado se basa en el principio descrito, y nosotros buscamos los patrones № 4 y 5 en él. Ya conocemos su apariencia general: uno de ellos se basa en la ruptura de las líneas de sobrecompra/sobreventa (los vamos a testear en este artículo), el segundo se basa en la intersección de la media móvil y el gráfico del indicador combinado.

Vamos a recordar las ventajas de este tipo de patrones:

  1. El análisis se hace más preciso, porque en él se considera el comportamiento de ambas divisas de la pareja, en vez de una (como fue en los artículos anteriores, aquí y aquí).
  2. La entrada en el mercado según estos patrones se realiza sólo en una pareja, y no en la cesta entera. En su lugar, eso nos da otras ventaja:
    • una reducción considerablemente más baja;
    • el mayor confort psicológico para el trader y conveniencia en la gestión habitual de posiciones.

Patrones para la investigación

Los patrones para la investigación permanecen los mismos: es que los vamos a buscar en los gráficos de indicadores combinados. Primero, examinaremos el patrón de los niveles de sobrecompra y sobreventa que han sido rotos por el gráfico del indicador combinado. Vamos a suponer que ya sabemos la posición de estos niveles. El patrón es bien conocido en el análisis técnico y ha sido descrito aquí. Lo vamos a identificar en el cierre de la vela, y él debe parecer evidente:

Patrón de destino
Sin patrón




Herramientas para empezar la investigación

Como antes, usamos el indicador «WPR combinado» y las herramientas a base de él. Los códigos de los indicadores principales ya fueron mostrados «antes». En el presente artículo, ellos se adjuntan como archivo test.zip. Primero, vamos a definir el número posible de transacciones.

Número posible de transacciones

Ya determinábamos el número posible de transacciones más de una vez. Lo hacemos para comparar los resultados y usarlos para estimar la posición de los niveles de sobrecompra y sobreventa. Como puede recordar, la posición de estos niveles en el indicador WPR padre es la siguiente:

  • Nivel de sobrecompra - 20%
  • Nivel de sobreventa - 80%

Pero el indicador «WPR combinado» cambia de -100% a +100%, y por tanto los niveles se desplazan hacia los puntos +60% y -60%, respectivamente. Si el número de sus rupturas será comparable con los resultados ya obtenidos, vamos a considerar que los niveles mantienen su posición.

Vamos a realizar nuestras investigaciones en los timeframes H1, H4, D1 en la siguiente orden.

  1. Colocamos el indicador testDistance.mq5 en el gráfico. Tiene disponibles otros dos indicadores: testWPRjpy.mq5 y testWPeur.mq5.
  2. Primero, modificamos el código de dos últimos indicadores: cada uno de ellos debe trabajar con una de las divisas de la pareja en cuyo gráfico el indicador testDistance.mq5. está colocado. Por ejemplo, el indicador testWPRjpy.mq5 contiene las parejas de divisas para la cesta JPY, y testWPReur.mq5, para la cesta EUR. Por tanto, testDistance.mq5 está colocado en la pareja EURJPY.
  3. Colocamos el indicador testIndexZig-Zag1.mq5 (ya hemos hablado de él en uno de los artículos anteriores) en el gráfico del indicador testDistance.mq5. El divide el rango de valores del indicador testWPReur.mq5 (de 100% a -100%) en intervalos de 0 a 99 y calcula el número de rupturas que entra en cada intervalo.  El número de rupturas encontrado se considerará como resultado del trabajo del indicador testIndexZig-Zag1.mq5 (en adelante «resultado»), que se guardará en el archivo. La creación de este archivo será el objetivo principal de esta etapa de trabajo. Abajo se encuentra un fragmento de este archivo mostrado en forma de la tabla por motivos de conveniencia:
    Número del intervalo Rango del indicador Valor mín. del indicador
    Valor máx. del indicador
    Número de rupturas
    ... ... ... ... ...
    47 -4 -6 -4 3
    48 -2 -4 -2 5
    49 0 -2 0 5
    50 2 0 2 7
    ... ... ... ... ...
  4. Vamos analizar los archivos obtenidos.

De la misma manera, se puede trabajar con todas las parejas analizadas cambiando de forma semejante los indicadores testWPRjpy.mq5 y testWPeur.mq5. Como ejemplo, analizaremos dos parejas, EURJPY y EURUSD.

Comparamos las rupturas de los niveles de sobrecompra/sobreventa para estas dos parejas y para sus divisas(EUR, USD y JPY) en tres timeframes: H1, H4 y D1.

Lo más probable, habrá mucho menos patrones detectados que en los casos considerados antes. La razón es simple: para que el gráfico de este indicador combinado rompa el nivel de sobrecompra/sobreventa, dos eventos deben ocurrir al mismo tiempo:

  1. la moneda base estuviera sobrevendida;
  2. la moneda de cotización estuviera sobrecomprada,

o viceversa. En otras palabras, es necesario que una divisa sea lo más débil posible, y la otra sea lo más fuerte posible al mismo tiempo. No es un situación muy frecuente, por eso, el número comparativo de las rupturas no será muy grande.

La coincidencia de dos eventos arriba descritos también puede tener un carácter ocasional, no del mercado. Por ejemplo, puede tratarse de la publicación simultánea de las noticias «dirigidas opuestamente». En estos casos, no será de todo correcto usar los conceptos de «sobrecompra» y «sobreventa», pero no vamos a complicar el asunto y dejaremos estas denominaciones tradicionales.

El archivo adjunto Files.zip contiene los resultados completos del trabajo del indicador testIndexZig-Zag1.mq5 (los archivos obtenidos como resultado del trabajo de este indicador). La simulación fue realizada en todo el historial disponible.

Vamos a resumir los resultados más significativos en siguiente tabla:

Símbolo

Timeframe:
D1 H4 H1
EURJPY 2 / 3 19 / 19 39 / 46
EURUSD 3 / 1 17 / 17 31 / 50
EUR 5 / 1 15 / 16 67 / 73
JPY 5 / 5 20 / 17 79 / 62
USD 2 / 9 13 / 9 80 / 69

Vamos a aclarar el contenido de esta tabla:

  • Las primeras dos líneas representan los resultados del trabajo del indicador testIndexZig-Zag1.mq5 en dos parejas de divisas seleccionadas.
  • Las últimas tres líneas representan los resultados del trabajo del indicador testIndexZig-Zag1.mq5 en tres cestas de parejas separadas. Cada una de las cestas está compuesta para la divisa base o para la divisa de cotización de las parejas de divisas de las primeras dos líneas.
  • Los datos numéricos en tres columnas de la derecha son los datos sobre el número de las rupturas de los niveles de sobreventa (-60% ) y —separados con barra inclinada— de sobrecompra (60%), que se encuentran en los ficheros del archivo comprimido adjunto Files.zip. Por ejemplo, 80/69 significa que se han encontrado 80 rupturas del nivel -60% y 69 rupturas del nivel 60%.


Nuestra tarea es comparar los datos de las primeras dos líneas con las tres últimas. La previsión inicial respecto a la reducción del número de las rupturas que ha sido hecha en el inicio del capítulo ha sido justificada en el timeframe H1 y «ha fallado» en H4 y D1. Se puede suponer que en H4 y D1 no hay rupturas suficientes para las conclusiones estadísticas justificadas, y probablemente, hay que mover de nuevo los niveles de sobrecompra/sobreventa, pero no vamos a hacerlo por ahora. El análisis ha sido realizado sólo en dos parejas de divisas, lo que no es suficiente para las conclusiones válidas. Por eso, al acumular la estadística, probablemente habrá que ajustar la posición de los niveles de sobrecompra/sobreventa.

No obstante, podemos sacar una conclusión válida: como antes, el número de las entradas en el mercado en el timeframe D1 es despreciable.

Inicio de la simulación

Ya hemos testeado el patrón semejante. Por eso, vamos a usar el EA testEAbasket2.mq5 ya hecho, introduciendo las mínimas modificaciones en él.

  • El EA va a llamar al indicador testDistance.mq5.
  • El EA será autorizado para entrar en el mercado con cada detección del patrón (es decir, en caso de cada ruptura de los niveles de sobrecompra/sobreventa), a pesar de las órdenes ya abiertas.

Cambiaremos un poco la forma del patrón con el fin de aumentar el número de transacciones. Reflejaremos estos cambios en los parámetro de entrada del EA.

  • SELLPROFIT. Cuando el WPR combinado alcance este valor, cerramos todas las posiciones de venta de la cesta. Por defecto es 0%.
  • SELL1LIMIT. Se trata del valor mínimo del WPR combinado para el punto №1 (ver la imagen más arriba) para comenzar la identificación del patrón de venta de la cesta. Por defecto es 65%.
  • SELL2FROM. Valor máximo del WPR combinado para el punto №2 para la identificación del patrón de venta de la cesta. Por defecto, 60% es el nivel de sobrecompra.
  • SELL2TO. Valor mínimo del WPR combinado para el punto №2 para la identificación final del patrón de venta de la cesta. Por defecto es 40%.
  • BUYPROFIT. Cuando el indicador del WPR combinado alcanza este valor, cerramos todas las posiciones de compra de la cesta. Por defecto es 0%.
  • BUY1LIMIT. Es el valor máximo del WPR combinado para el punto №1 para comenzar la identificación del patrón de compra de la cesta. Por defecto es -65%.
  • BUY2FROM. Valor mínimo del WPR combinado para el punto №2 para la identificación del patrón de compra de la cesta. Por defecto, -60% es el nivel de sobreventa.
  • BUY2TO. Valor máximo del WPR combinado para el punto №2 para la identificación final del patrón de compra de la cesta. Por defecto es -40%.

Además de eso, el indicador principal testDistance.mq5 aplicará los indicadores testWPRХХХ.mq5 que proporcionan los valores del WPR combinado de una determinada cesta. Alternaremos el modo del cálculo del último indicador de la media aritmética a la geométrica. Aquí fueron mostrados diferentes métodos del cálculo de los valores de este indicador con una explicación detallada. Vamos a mostrar sólo un fragmento del código del indicador de prueba que se encarga del cálculo principal:

double m_dParam = 0.143; // 1/LG

double GetValue(int shift) 
  {
   double dBuf[1];
   double res=0.0;
   
         res = 1;
         for (int i = 0; i < LG; i++) {
            CopyBuffer(h[i],0,shift,1,dBuf);
            if (bDirect[i]) res *= dBuf[0];
            else            res *= dBuf[0] + 100;            
         }  
         res = -MathPow (MathAbs(res), m_dParam);  
   return (NormalizeDouble((res + 50) * 2, _Digits) );
  }

El conjunto completo de los indicadores aplicados y el EA se encuentran en el archivo adjunto test2.zip.

Comenzamos con EURUSD. Este es el resultado para el último año:

Sin embargo, la continuación de la simulación en AUDUSD y USDJPY no produce ninguna transacción. Es obvio que los casos de la sobrecompra simultánea de una divisa de la cesta con la sobreventa de la otra son muy raros. Vamos a aumentar el número de rupturas cambiando los parámetros del patrón, y continuamos la simulación. Abajo se muestra la lista renovada de los parámetros de entrada.

  • SELLPROFIT. Sin cambios.
  • SELL1LIMIT = 50%.
  • SELL2FROM = 40%
  • SELL2TO     = 20%.
  • BUYPROFIT. Sin cambios.
  • BUY1LIMIT  = -50%
  • BUY2FROM  = -40%
  • BUY2TO      = -20%.

El archivo comprimido adjunto result.zip contiene los informes de la simulación del EA en las parejas de divisas principales. En la tabla se muestra el beneficio y las pérdidas:

 AUDUSDEURUSDGBPUSDNZDUSDUSDCADUSDCHFUSDJPY
H1 -27.63 48.28 49.34 -20.02 -20.04 29.82 -19.99
H4 -35.10 14.44 1.60 -49.18 -38.75 -15 2.46

En timeframe D1 prácticamente no hay transacciones, por eso, este timeframe no está incluido en los informes. En los otros timeframes, el número de transacciones también es escaso. Sólo el timeframe H1 ha mostrado los resultados aceptables. El muestra beneficio en tres parejas (EURUSD, GBPUSD y USDCHF). En otras parejas hay pérdidas, pero no son tan significantes como para ser consideradas como un fallo evidente del algoritmo. Es que hemos probado la versión más simple del EA: sin filtración, con la única regla de la entrada en el mercado y la única regla de la salida. Desde luego, eso no es suficiente para el trading real, y por eso, se puede intentar mejorar el EA y hacer que genere beneficios. Intentaremos analizar los resultados obtenidos más detalladamente. Eso mostrará cuál será el siguiente paso en el trabajo con algoritmo.

Análisis de los resultados de la simulación

El primer momento en el que tenemos que centrarnos es la diferencia entre el número de transacciones en el timeframe H1 y H4.  Es bastante lógico que en timeframe H4 hay menos transacciones —el número de velas que tiene es cuatro veces menos que en H1 para el mismo intervalo. Podría parecer que el número de transacciones también tiene que ser cuatro veces menos. En nuestra investigación, esta regla más o menos se cumple: el número de transacciones es aproximadamente cinco veces menos en todas las parejas analizadas en H4 que en H1. Tomando en cuenta que en H1 tampoco hay muchas transacciones, surge la pregunta, ¿qué hacemos si queremos negociar en H4 usando la metodología analizada? Puede haber sólo una solución: «expandir» el patrón aún más:

  • SELLPROFIT. Sin cambios.
  • SELL1LIMIT = 45%.
  • SELL2FROM = 40%
  • SELL2TO     = 10%.
  • BUYPROFIT. Sin cambios.
  • BUY1LIMIT  = -45%
  • BUY2FROM  = -40%
  • BUY2TO      = -10%.

Eso debe aumentar el número de transacciones, ¿pero cómo puede afectar eso el beneficio y la reducción (drawdown)? Hagamos una prueba adicional en dos parejas— en GBPUSD (aquí teníamos un buen beneficio en H1) y AUDUSD (aquí había perdidás).

El resultado ha sido obtenido y ha sido adjuntado como archivo comprimido  result-1.zip. De hecho, la «expansión» del patrón ha provocado el aumento del número de transacciones (lo que se esperaba). Es interesante que la rentabilidad/irrentabilidad ha resuldado «herredada» de H1: en GBPUSD hemos obtenido el beneficio, en AUDUSD, las pérdidas. ¿Pero es verdad que el patrón ha sido «expandido» y ha empezado a identificarse con más frecuencia? Inicialmente, el patrón aparece en la ruptura de las líneas de sobrecompra y sobreventa. Después de dos «expansiones», es difícil hablar de la ruptura y de una nueva posición de los niveles. Tal vez, un trader cauteloso no debe intentar buscar este patrón en los timeframes mayores de H1.

Veamos otra situación, cuando han sido detectadas las reducciones durante la simulación. Podemos ver su presencia en la captura de pantalla del EA en EURUSD más arriba. Además de las reducciones, podemos observar que las órdenes entran en un beneficio sólido, volviendo después a las posiciones más modestas. Ya vimos eso cuando probábamos un patrón similar aquí. ¿Qué quiere decir eso?

  1. Las desventajas de las reglas de la salida del mercado. Como puede recordar, la salida del mercado se realiza cuando WPR combinado rompe su nivel cero. En otras palabras, cuando entra en la zona del equilibrio entre la divisa base y la divisa de cotización. Es evidente que eso no es suficiente y necesitamos algunos métodos adicionales para definir la hora de la salida. Pero en este caso, no vamos a aplicar ningunos medios adicionales con el fin de excluir la influencia externa.
  2. En cuanto a las desventajas en la identificación del patrón. Es que hemos expandido los parámetros de entrada tanto en H1,como en H4. En el proceso de la «expansión» del patrón, hemos desplazado los niveles de sobrecompra/sobreventa hasta los valores de 45 - 40%.  Por eso, cuando el sistema encuentra automáticamente el patrón, puede que no ocurra la ruptura real de las líneas de sobrecompra/sobreventa. Por ejemplo, el nivel puede ser roto sólo para una divisa, o ambas divisas pueden oscilar alrededor de los niveles de sobrecompra/sobreventa, sin cruzarlas realmente. En estas situaciones, lo más probable que la tendencia actual va a continuar, y la reversión esperada no va a ocurrir. Está claro que la probabilidad de este curso de las cosas se aumenta cuanto más «expansiones» sean realizadas. Resulta que cuanto más amplias sean los parámetros de entrada del patrón, menos sentido tiene. Los eventos descritos provocan una reducción.

Aquí, consideramos la simulación por terminada y hacemos el resumen de todo nuestro trabajo.

Conclusión

  • El patrón prácticamente no se identifica en el timeframe D1, y aparece muy raras veces en el timeframe H4. No recomiendo buscarlo en el timeframe mayor de H1.
  • Para aumentar el número de posibles transacciones, se puede «ampliar» el patrón, disminuyendo los requerimientos hacia su forma y calidad. Pero si vamos a exagerar, el patrón pierde su sentido y no va a reflejar la situación comercial real de la ruptura del nivel de sobrecompra/sobreventa. Por esa razón, hay que tener mucho cuidado al expandir el patrón.
  • La verificación de la rentabilidad del patrón no ha supuesto ningunas sorpresas. No obstante, también hay momentos esperanzadores. No hemos detectado pérdidas significativas con ninguna pareja probada, mientras que algunas de ellas han mostrado ganancias. Como podemos recordar, el timeframe H1 ha sido completamente irrentable en las pruebas anteriores. Mientras que aquí podemos ver una perspectiva de que el patrón genere un beneficio estable aplicando las técnicas estándar (trailing, etc.).
  • El patrón descrito no aparece con frecuencia. Entonces, debe ser considerado como una señal adicional que refuerza otros patrones, y no como una herramienta principal para tomar decisiones sobre la entrada en el mercado. Intentaremos aclararlo más tarde.

Los programas usados en el artículo:

 # Nombre
Tipo
 Descripción
1 test.zip Archivo
Herramientas para determinar un posible número de transacciones.
2
Files.zip Archivo Resultados de la determinación del número de las entradas potenciales en el mercado.
3 test2.zip Archivo Herramientas para testear el EA.
4 result.zip Archivo Informes sobre la simulación del patrón (en formato html).
5
result-1.zip Archivo
Informes sobre la simulación adicional en H4 (en formato html).

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

Archivos adjuntos |
test.zip (8.28 KB)
test2.zip (16.62 KB)
result.zip (832.8 KB)
result-1.ZIP (127.29 KB)
Files.zip (11.54 KB)
Optimización controlable: el método del recocido Optimización controlable: el método del recocido

En el simulador de estrategias de la plataforma comercial MetaTrader 5 solo existen dos variantes de optimización: la iteración completa de parámetros y el algoritmo genético. En este artículo se propone una nueva variante de optimización de estrategias comerciales: el método del recocido. Se muestra el algoritmo del método, su implementación y su método de inclusión en cualquier asesor. El algoritmo desarrollado se ha puesto a prueba con el asesor Moving Average.

Comparamos la velocidad de los indicadores de almacenamiento automático en la caché Comparamos la velocidad de los indicadores de almacenamiento automático en la caché

En el artículo se compara el acceso MQL5 clásico a los indicadores con los métodos alternativos del estilo MQL4. Se analizan diversas variantes de estilo MQL4 para el acceso a los indicadores: con almacenamiento de manejadores en la caché y sin él. Se analiza el registro de los manejadores de los indicadores dentro del núcleo MQL5.

Gráfico del balance de multisímbolos en MetaTrader 5 Gráfico del balance de multisímbolos en MetaTrader 5

En este artículo, se muestra el ejemplo de la aplicación MQL con la interfaz gráfica en la que se muestran los gráficos del balance de multisímbolos y reducción del depósito según los resultados de la última prueba.

Desarrollando los Asesores Expertos multimódulo Desarrollando los Asesores Expertos multimódulo

El lenguaje de programación MQL permite implementar el concepto del diseño modular de las estrategias comerciales. En este artículo, se muestra el ejemplo del desarrollo del Asesor Experto multimódulo compuesto de los módulos de archivos compilados separadamente.