English Русский 中文 Deutsch 日本語 Português
Calificación de Asesores Expertos dentro de un Asesor Experto

Calificación de Asesores Expertos dentro de un Asesor Experto

MetaTrader 4Sistemas comerciales | 10 mayo 2016, 17:36
960 0
Evgeniy Trofimov
Evgeniy Trofimov

Introducción

¡Queridos programadores y analistas bursátiles!

A menudo, muchos sistemas de trading (ST) son estables en un determinado intervalo, pero después de un tiempo, la curva del balance empieza a moverse hacia abajo. Esto decepciona a los traders y empiezan a buscar nuevas soluciones mágicas, a optimizar los parámetros, etc.

Les propongo una herramienta para llevar a cabo transacciones virtuales, se trata de VirtualTrend.mqh. Mediante esta función se pueden abrir, cerrar y arrastrar transacciones virtuales.

Incluye las siguientes características:

  1. La posibilidad de crear Asesores Expertos que pueden activar y desactivar el trading virtual
  2. Evaluar varios sistemas de trading (se proporcionan 5 sistemas de trading en este ejemplo) en términos de porcentaje dependiendo de su rentabilidad. El resultado de la evaluación permite elegir el mejor sistema de trading para utilizarlo más adelante en el mercado real.
  3. La posibilidad de implementar sistemas de trading que permiten abrir varias transacciones al mismo tiempo mediante un sólo instrumento, en la plataforma MetaTrader 5 que usa las posiciones acumuladas (esta posibilidad no está descrita en este artículo, pero se propone como alternativa).

Veamos las dos primera características:

Vamos a considerar como ejemplo de un Asesor Experto adaptativo el código de Competition_v1.0.mq4; se define el sistema de trading que se va a utilizar en base a su competitividad. El Asesor Experto usa 5 (puede añadir más si quiere) sistemas de trading que no se eligen de forma aleatoria, sino en base a la mayor o menor estabilidad de funcionamiento en el período de tiempo diario de EURUSD.

¡Importante! Sólo hay que utilizar sistemas de trading estables capaces de generar beneficios o pérdidas constantes en un intervalo de tiempo determinado.

Por ejemplo, un sistema de trading cuya secuencia de resultados es "BBBBBBBPPPPPPPPBBPBBBBBBBB", es adecuado para usarlo en este Asesor Experto, pero si la secuencia de resultados es "PPBBPBPPBBBPPBPBBPBPBPBBPBP", el sistema no es adecuado ("P" son operaciones con pérdidas, "B" son operaciones con ganancias).

Tampoco se puede utilizar un sistema de trading donde las operaciones con pérdidas son más frecuentes que las rentables y las operaciones rentables compensan las pérdidas anteriores, ya que el Asesor Experto no tiene tiempo para adaptarse a la rentabilidad.

Se determina la estabilidad de un sistema de trading "a simple vista" a partir de los resultados de las pruebas llevadas a cabo en el mayor intervalo de tiempo (todo el historial) en la prueba de estrategias. El diagrama de cambio de balance que se obtiene permite determinar el número promedio de transacciones que causan un cambio de tendencia. Por ejemplo, un sistema de trading con la siguiente secuencia de resultados: GGGGGGGGPPPPPPGGGGGGGGGPGPPPPPPPPPPPGGGGGGGPPPPPPPPPPPPPGGGGGGPPPPPPPPPPGPGGGPPGGGGGG. La tendencia del balance cambia aproximadamente cada 6 - 8 transacciones. Al calcular la calificación, se recomienda establecer el período de promediado del balance a la mitad de estas transacciones. Es decir 3 o 4.

Se activa o desactiva el sistema de calificación que ayuda al Asesor Experto a adaptarse a los cambios de dinámica de la rentabilidad mediante el parámetro RatingON. Con este parámetro se puede encontrar fácilmente el período de promediado del balance y configurarlo para el parámetro Tх.PeriodRating.

Se puede activar o desactivar cada sistema de trading mediante el parámetro Tx.Enabled, donde x es el número del sistema de trading (TS).

Se han realizado todas las siguientes pruebas con EURUSD (período de tiempoD1) durante el intervalo que va desde el 01.01.1999 hasta el 01.06.2010.

El sistema de trading n.º 1

  • Condición de entrada: cuando el promedio móvil rápido cruza el lento (ver la función T1_SignalOpen()).
  • Condición de salida: cruce inverso (ver la función T1_SignalClose()).


Figura 1Prueba del sistema de trading n.º 1 sin adaptación (RatingON = false)

De acuerdo con los resultados de la prueba, podemos concluir que después de cada 18-20 operaciones, esta estrategia cambia su dinámica de rentabilidad.

Por eso se establece el parámetro T1.PeriodRating a 20.

Prueba del sistema de trading n.º 1 con adaptación (RatingON = true)

Figura 2Prueba del sistema de trading n.º 1 con adaptación (RatingON = true)

El sistema de trading n.º 2

  • Condición de entrada: cuando el indicador CCI cruza cierto nivel de arriba hacia abajo (ver la función T2_SignalOpen()).
  • Condición de salida: cuando aparece la señal en la dirección opuesta (ver la función T2_SignalClose ()).

Durante la prueba en el mismo período hemos descubierto que la estabilidad es aproximadamente igual a 10 transacciones.


Figura 3Prueba del sistema de trading n.º 2 sin adaptación


Figura 4Prueba del sistema de trading n.º 2 con adaptación

El sistema de trading n.º 3

Lo lógica de entrada y salida es la misma que en el sistema n.º 1, no obstante, los períodos de promediado de los promedios móviles son distintos.

Un pequeño inciso:Puede reescribir Competition_v1.0.mq4 por completo y combinarlo con las estrategias que contienen únicamente promedios móviles con distintos períodos de promediado.

Aún no he llevado a cabo esta tarea, pero si lo hago, se lo haré saber.


Figura 5Prueba del sistema de trading n.º 3 sin adaptación

Este sistema de trading lleva a cabo pocas transacciones durante un largo intervalo de tiempo (casi 11 años). No recomiendo usar esta estrategia en el trading real ya que el número de transacciones en la prueba de estrategias es muy pequeño.

He añadido esta estrategia para mostrar con más claridad el desarrollo de la adaptación. Para esta estrategia, se establece el parámetro T3.PeriodRating a 2.


Figura 6Prueba del sistema de trading n.º 3 con adaptación

El sistema de trading n.º 4

He visto esta estrategia muchas veces en la literatura.

Parece atractiva incluso sin adaptación, pero su uso en el trading no requiere un trading automatizado, ya que es a largo plazo.

  • Entra al mercado cuando se disponen los tres promedios móviles en orden y si MACD es superior al nivel establecido; T4.LimitMACD (ver la función T4_SignalOpen()).
  • Sale si el precio cruza el segundo promedio móvil (ver la función T4_SignalClose()).


Figura 7Prueba del sistema de trading n.º 4 sin adaptación

La estabilidad de esta estrategia de trading es constante, por lo que intervalo de procesado de datos para calcular la calificación tiene que ser por lo menos de 20 transacciones. He establecido T4.PeriodRating = 20.


Figura 8Prueba del sistema de trading n.º 4 con adaptación

El sistema de trading n.º 5

He desarrollado este sistema de trading personalmente y quiero compartirlo con ustedes de manera más elaborada.

  • Compramos si el indicador CCI cruza el nivel establecido T5.LevelCCI de abajo hacia arriba (ver la función T5_SignalOpen()). Ajustamos el nivel de cierre de las transacciones Mylevel con T5.TralingCCI puntos por debajo del nivel de apertura de T5.LevelCCI. Se puede observar que el indicador CCI levanta el nivel de cierre de MyLevel con unos pasos concretos, de modo que la distancia entre el valor actual del indicador CCI y el nivel MyLevel sea superior al doble del valor de T5.TralingCCI.
  • Se cierra la posición de compra si el indicador CCI cruza el nivel MyLevel de arriba hacia abajo (ver la función T5_SignalClose()).


Figura 9Prueba del sistema de trading n.º 5 sin adaptación

Se puede dejar este gráfico sin adaptación, pero de todas formas establecemos T5.PeriodRating = 10.


Figura 10Prueba del sistema de trading n.º 5 con adaptación

Asesor Experto multisistema

Se ha mostrado antes el funcionamiento de 5 Asesores Expertos con y sin adaptación.

Ahora vamos a ver un ejemplo del funcionamiento conjunto de todos estos Asesores Expertos:

Símbolo

EURUSD (Euro vs US Dollar)

Período

Día (D1) 1999.05.24 00:00 - 2010.07.05 00:00 (1999.01.01 - 2010.07.05)

Modelo

Puntos de control (método muy bruto, no se pueden tener en cuenta los resultados)

Parámetros

RatingON=false; FastTest=true; file="virtual.csv"; MinRating=50; _tmp1_="---- Trading system 1 ----"; T1.Enabled=1; T1.Magic=101; T1.lot=0.1; T1.Fast=10; T1.Slow=100; T1.TS=7000; T1.PeriodRating=20; _tmp2_="---- Trading system 2 ----"; T2.Enabled=1; T2.Magic=102; T2.lot=0.1; T2.PeriodCCI=30; T2.LevelCCI=200; T2.SL=500; T2.PeriodRating=10; _tmp3_="---- Trading system 3 ----"; T3.Enabled=1; T3.Magic=103; T3.lot=0.1; T3.Fast=30; T3.Slow=200; T3.TS=5000; T3.PeriodRating=2; _tmp4_="---- Trading system 4 ----"; T4.Enabled=1; T4.Magic=104; T4.lot=0.1; T4.SL=5000; T4.TS=5000; T4.LimitMACD=0.002; T4.PeriodRating=60; _tmp5_="---- Trading system 5 ----"; T5.Enabled=1; T5.Magic=105; T5.lot=0.1; T5.PeriodCCI=90; T5.LevelCCI=100; T5.TralingCCI=100; T5.SL=5000; T5.TS1=5000; T5.PeriodRating=10;






Barras en la prueba

2994

Ticks modelados

219840

Calidad del modelado

n/a

Depósito inicial

500000,00





Beneficio neto total

617173,70

Beneficio bruto

1342671,82

Pérdida bruta

-725498,13

Factor de beneficio

1,85

Rentabilidad esperada

2373,74



Disminución absoluta

76798,13

Disminución máxima

172676.05 (28.98%)

Disminución relativa

28.98% (172676.05)


Total de operaciones

260

Posiciones cortas (ganado %)

126 (29.37%)

Posiciones largas (ganado %)

134 (33.58%)


Operaciones de beneficios (% del total)

82 (31.54%)

Operaciones de pérdidas (% del total)

178 (68.46%)

Mayor

Operación de beneficios

78151,67

Operación de pérdidas

-18831,39

Media

Operación de beneficios

16374,05

Operación de pérdidas

-4075,83

Máximo

ganancias consecutivas (beneficios en dinero)

6 (89681.19)

pérdidas consecutivas (pérdidas en dinero)

21 (-100325.23)

Máximo

beneficios consecutivos (número de ganancias)

95057,65 (3)

pérdidas consecutivas (número de pérdidas)

-100325,23 (21)

Media

ganancias consecutivas

2

pérdidas consecutivas

4



Figura 11Prueba del Asesor Experto multisistema sin adaptación

La combinación de los sistemas de trading da lugar a un incremento del beneficio, de la disminución y del número de transacciones.

Veamos la misma prueba pero habilitando el parámetro RatingON.

Período

Día (D1) 1999.05.24 00:00 - 2010.07.05 00:00 (1999.01.01 - 2010.07.05)

Modelo

Puntos de control (método muy bruto, no se pueden tener en cuenta los resultados)

Parámetros

RatingON=true; FastTest=true; file="virtual.csv"; MinRating=1; _tmp1_="---- Trading system 1 ----"; T1.Enabled=1; T1.Magic=101; T1.lot=0.1; T1.Fast=10; T1.Slow=100; T1.TS=7000; T1.PeriodRating=20; _tmp2_="---- Trading system 2 ----"; T2.Enabled=1; T2.Magic=102; T2.lot=0.1; T2.PeriodCCI=30; T2.LevelCCI=200; T2.SL=500; T2.PeriodRating=10; _tmp3_="---- Trading system 3 ----"; T3.Enabled=1; T3.Magic=103; T3.lot=0.1; T3.Fast=30; T3.Slow=200; T3.TS=5000; T3.PeriodRating=2; _tmp4_="---- Trading system 4 ----"; T4.Enabled=1; T4.Magic=104; T4.lot=0.1; T4.SL=5000; T4.TS=5000; T4.LimitMACD=0.002; T4.PeriodRating=60; _tmp5_="---- Trading system 5 ----"; T5.Enabled=1; T5.Magic=105; T5.lot=0.1; T5.PeriodCCI=90; T5.LevelCCI=100; T5.TralingCCI=100; T5.SL=5000; T5.TS1=5000; T5.PeriodRating=10;






Barras en la prueba

2994

Ticks modelados

219840

Calidad del modelado

n/a

Depósito inicial

500000,00





Beneficio neto total

227123,75

Beneficio bruto

388438,79

Pérdida bruta

-161315,05

Factor de beneficio

2,41

Rentabilidad esperada

2341,48



Disminución absoluta

10921,17

Disminución máxima

76482.03 (12.48%)

Disminución relativa

12.48% (76482.03)


Total de operaciones

97

Posiciones cortas (ganado %)

50 (40.00%)

Posiciones largas (ganado %)

47 (46.81%)


Operaciones de beneficios (% del total)

42 (43.30%)

Operaciones de pérdidas (% del total)

55 (56.70%)

Mayor

Operación de beneficios

71192,28

Operación de pérdidas

-12680,47

Media

Operación de beneficios

9248,54

Operación de pérdidas

-2933,00

Máximo

ganancias consecutivas (beneficios en dinero)

5 (80463.85)

pérdidas consecutivas (pérdidas en dinero)

13 (-50753.48)

Máximo

beneficios consecutivos (número de ganancias)

80463,85 (5)

pérdidas consecutivas (número de pérdidas)

-50753,48 (13)

Media

ganancias consecutivas

2

pérdidas consecutivas

3


Figura 12.Prueba del Asesor Experto multisistema con adaptación

La línea de balance tiene una forma más aplanada, el número de disminuciones repentinas se ha reducido, el beneficio se ha reducido en 2,71 veces, la disminución se ha reducido en 2,32 veces y el factor de beneficio se ha incrementado en 1,3 veces.

A diferencia de las pruebas anteriores, aparece el diagrama de volúmenes en la figura 12. Esto se debe a la actividad del sistema de calificación.

Funciona de la siguiente manera: en primer lugar se suman los beneficios Tx.PeriodRating de todas las transacciones virtuales cerradas y se divide el resultado por el número de días en los que se han realizado estas transacciones. Se añade el valor obtenido al beneficio total de todas las posiciones abiertas y se divide por el número de días en las que han estado activas.

Si el valor obtenido es negativo, se iguala a cero.Se lleva a cabo esta operación con cada sistema de trading.

Este sistema distingue entre los distintos sistemas de trading mediante los números mágicos (magic) asignados a las estrategias de trading en los parámetros iniciales de Tx.Magic. Busca el sistema de trading más rentable mediante el valor máximo del beneficio y asigna una calificación del 100 % a este sistema.

Se asignan a todos los demás sistemas de trading unas calificaciones relativas a la calificación de este sistema.Al final, se crea una tabla con tres columnas.

Ejemplo:

Número mágico
Beneficio
Calificación, %
1
9
40,9
2
0
0,0
3
3
13,6
4
10
45,5
5
0
0,0
6
17
77,3
7
0
0
8
12
54,5
9
0
0,0
10
22
100,0

En el trading real, se multiplica la calificación obtenida por el volumen del lote Tx.lot y se divide por 100. En este caso, todos los sistemas de trading con una calificación superior a cero participarán en el trading real.

Par utilizar únicamente el mejor sistema en el trading real, hay que asignar el valor 100 al parámetro MinRating en el Asesor Experto Competition_v1.0.

Conclusión

El método que hemos visto no garantiza un beneficio al 100 %; pero le puedo asegurar que siempre suaviza la curva de balance. En concreto, ¡está garantizada la reducción del beneficio, de la disminución y del número de transacciones realizadas! El aumento de la rentabilidad es ambiguo.

Le dejo decidir si el método es bueno o no.

La descripción de los parámetros del Asesor Experto Competition_v1.0.mq4:

  • RatingOn – interruptor de la calificación (si está desactivado, las transacciones en el archivo tienen que ser compatibles con las transacciones reales)
  • FastTest – no cambia el archivo con cada cambio de matriz de transacciones virtuales durante la prueba.
  • file - archivo del trading virtual (está en el directorio TerminalPath()+"\experts\files")
  • MinRating – calificación mínima (en porcentaje) necesaria para abrir una posición real
  • Tх.Enabled – interruptor del sistema de trading
  • Tх.Magic – número mágico
  • Tх.lot – volumen máximo a utilizar para el trading cuando la calificación es igual al 100 %
  • Tх.Fast– período del МА (promedio móvil) rápido
  • Tх.Slow– período del МА (promedio móvil) lento
  • Tх.SL – Stop Loss en puntos
  • Tх.TS1 – Trailing Stop de una vez en puntos (mueve el Stop Loss al nivel de equilibrio)
  • Tх.TS– Trailing Stop en puntos
  • Tх.PeriodRating - período de promediado de la calificación (número de transacciones del historial)
Enlaces a temas similares: http://forum.mql4.com/ru/23455

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

Archivos adjuntos |
RealTrend.mqh (8.17 KB)
VirtualTrend.mqh (36.03 KB)
Mejorar la calidad del código mediante la prueba unitaria Mejorar la calidad del código mediante la prueba unitaria
Incluso en los programas más sencillos surgen a menudo errores que parecen increíbles. "¿Cómo he podido escribir esto?" es la primera pregunta que nos viene a la mente cuando surge este tipo de errores. "¿Cómo puedo evitarlo?" es la segunda pregunta, pero con menos frecuencia. Es imposible crear un código exento al cien por cien de errores, especialmente en los proyectos grandes, pero es posible utilizar técnicas para detectarlos a tiempo. Este artículo describe cómo se puede mejorar la calidad del código MQL4 con la ayuda del conocido método de pruebas unitarias (Unit Testing).
Superposición e interferencia de los instrumentos financieros Superposición e interferencia de los instrumentos financieros
Cuantos más factores influyen en el comportamiento de un par de divisas, más difícil será evaluar su comportamiento y hacer previsiones. Por lo tanto, si conseguimos extraer de los componentes de un par de divisas los valores de una divisa local en función del tiempo, podremos reducir significativamente el movimiento de la divisa local en comparación con el par de divisas que contiene esta divisa, además del número de factores que influyen en su comportamiento. Por consiguiente, mejoramos la precisión de la evaluación de su comportamiento y la predicción de sus valores. ¿Cómo podemos hacerlo?
Definir las condiciones del trading mediante los niveles de soporte y resistencia y el movimiento del precio Definir las condiciones del trading mediante los niveles de soporte y resistencia y el movimiento del precio
Este artículo describe cómo se puede utilizar el movimiento del precio y el seguimiento de los niveles de soporte y resistencia para entrar al mercado en el momento oportuno. También se describe un sistema de trading que combina de manera efectiva las características anteriores para determinar las condiciones del trading. Se explica el código MQL4 correspondiente que se puede utilizar en los Asesores Expertos basados en estos conceptos de trading.
Kit del trader: Indicadores para el diseño Kit del trader: Indicadores para el diseño
Este artículo incluye las principales tareas para el diseño de los indicadores, así como soluciones y automatizaciones.