Mira cómo descargar robots gratis
¡Búscanos en Facebook!
Pon "Me gusta" y sigue las noticias
¿Es interesante este script?
Deje un enlace a él, ¡qué los demás también lo valoren!
¿Le ha gustado el script?
Evalúe su trabajo en el terminal MetaTrader 5
Asesores Expertos

Gold Dust - Asesor Experto para MetaTrader 5

Publicado por:
Vladimir Karputov
Visualizaciones:
1181
Ranking:
(32)
Publicado:
2019.01.18 11:17
Gold Dust.mq5 (72.74 KB) ver
¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa

Autor de la idea -   Yury Reshetov

Autor del código mq5 - barabashkakvn.

Gold Dust


Un poco de teoría:

Como se sabe, muchos sistemas comerciales automáticos tienden al sobreajuste. Es decir, se optimizan muy bien en un cierto período de datos históricos, pero si colocamos este sistema optimizado en una cuenta demo o real, puede resultar ser no rentable ya que las señales comerciales serán próximas a las aleatorias. Eso se debe al hecho de que los instrumentos financieros no son estacionarios, es decir, sus características estadísticas son inestables.

Para determinar la probabilidad del sobreajuste a los datos históricos, podemos usar así llamada la prueba forward clásica, que se describe en el libro de Robert Pardo [1]. La idea del método clásico consiste en lo siguiente: cogemos dos intervalos no cruzados de datos históricos para el sistema comercial. Optimizamos el sistema comercial en uno de ellos, usamos el segundo para realizar la prueba forward con los parámetros de entrada optimizados en la fase anterior. Si la prueba en el segundo intervalo forward de datos históricos no ha tenido éxito, se supone que el sistema comercial es propenso al sobreajuste y no vale para el trading automático. Si la prueba forward ha pasado con éxito, se realiza el análisis adicional del comportamiento del sistema en este mismo intervalo de prueba con el fin de identificar sus características.

Pero el sistema comercial capaz de pasar todas las pruebas descritas en el libro de Robert Pardo [1] prácticamente no existe. Por eso, el autor no propone ningún ejemplo específico. La optimización en un intervalo y la prueba forward en otro, así como el análisis posterior de los resultados de las pruebas forward no dan ningunas garantías:

  1. La prueba forward fallada en el segundo intervalo puede descartar un sistema comercial robusto. Es que los algoritmos de la optimización a menudo se concentran en los extremos locales y ajustan los parámetros de entrada del sistema a ellos.
  2. El análisis de los resultados de las pruebas forward es prácticamente inútil, ya que si usamos un intervalo independiente que todavía no participaba en la optimización y la prueba, y realizamos ahí el análisis adicional, veremos que los resultados del análisis en él no van a coincidir con el intervalo anterior. La razón es la misma: carácter no estacionario de los instrumentos financieros. Es más, una prueba forward de éxito en un intervalo independiente puede no ser exitosa en cualquier otro intervalo. Es decir, no hay nada que analizar en estos casos.

Puesto que el método clásico para descartar los sistemas comerciales tiene muchos desventajas, he desarrollado y he testeado otro método más seguro llamado Gold Dust (arena aurífera).

La diferencia del nuevo método del clásico es que la optimización del sistema comercial se realiza en dos y más intervalos, en vez de uno. Como resultado, obtenemos diferentes conjuntos de parámetros del sistema comercial para cada intervalo. Algunos de ellos van a coincidir, otros serán diferentes. Probablemente, una parte de los conjuntos de parámetros son de sobreajuste, y otra parte no lo son. Podemos averiguarlo a través de la prueba forward. 

Pero la prueba forward se diferencia de la prueba clásica en que se realiza usando dos o más conjuntos de parámetros, en vez del único conjunto de parámetros del sistema comercial detectados durante la optimización. La idea es la siguiente: si el sistema comercial con todos los conjuntos de parámetros produce una señal concordada de compra o de venta, la transacción se abre. Si las señales son desconcordadas, es decir, hay una contradicción en las señales comerciales para diferentes conjuntos de parámetros, el sistema comercial no hace nada hasta la siguiente señal comercial.

¿Qué nos da eso?

Aquí tenemos que decidirnos con la robustez del sistema comercial. Los sistemas comerciales pueden ser potencialmente robustos, es decir, con probabilidad más de cero de que pasen la prueba forward en el método clásico; y no robustos, es decir, con una gran probabilidad del sobreajuste.

  • Si el sistema comercial no es robusto, entonces a través de su sobreajuste en dos o más intervalos de datos históricos, puede llegar a ser robusto si las señales sobreajustadas se concuerdan. O sea, si filtramos las señales por la concordancia, se puede usarlas en el futuro para el trading automático.
  • Si el sistema comercial es más o menos robusto, entonces la prueba forward exitosa en el modo de concordancia de las señales sobreajustadas y no sobreajustadas puede significar que uno o varios conjuntos de parámetros de entrada del sistema obtenidos durante la optimización en diferentes intervalos históricos no es/son sobreajustado(s) al historial y conviene(n) para el trading automático.

No vamos a considerar aquí los sistemas comerciales no robustos, porque si incluso vamos a filtrar sus señales por la concordancia, los resultados en los intervalos donde la optimización no se realizaba no son tan estables, para tradear. Estos sistemas convienen mejor para los experimentos.

Vamos a proceder al sistema comercial que tiene la robustez y que se encuentra en el archivo adjunto. Este sistema se basa en la previsión de una futura dirección del movimiento de cotizaciones que implementa la selección de los coeficientes de peso de una red neuronal elemental de una capa (perceptrón a base de datos históricos) usando el algoritmo genético del Probador de Estrategias estándar del terminal MetaTrader. 


Métodos de optimización, simulación y detección de robustez de los parámetros de entrada del sistema comercial

Vamos a usar los datos históricos para EURUSD durante 9 meses anteriores o más, en el gráfico con el marco temporal H1. Los dividimos en tres intervalos independientes de tres meses. Dejamos el primer intervalo para la prueba final, otros dos usamos para el sobreajuste al historial. Para no iniciar el sistema por separado, he combinado dos perceptrones en un sistema.

Para la prueba y optimización separadas, la función conmutadora Supervisor() en el código del EA provee tres modos del funcionamiento, dependiendo del parámetro de entrada pass:

  1. Optimización y simulación del primer perceptrón;
  2. Optimización y simulación del segundo perceptrón;
  3. Filtrar los valores contradictorios de ambos perceptrones en el modo de simulación sin optimización.

Los siguientes coeficientes de peso de los perceptrones se optimizan: x11, x12 … x42, así como MA: averaging period Stop Loss. El parámetro de entrada Stop Loss es constante para todos los intervalos. Este nivel de Stop Loss se establece para todas las posiciones a abrir. Otro parámetro de entrada, MA: averaging period, denota el período temporal del retardo (lag) para la diferencia de los precios de apertura, y también es constante. 

La entrada en el mercado se realiza al principio de la formación de una barra nueva, es decir, por los precios de apertura de las barras y por los valores de los perceptrones, dependiendo del valor del parámetro de entrada pass; mientras que la salida se realiza sólo cuando se dispara el Stop Loss. La optimización se realiza usando el algoritmo genético que busca los valores extremos (es decir, el máximo del balance como extremo). 

Para evitar la influencia de los margin call en el algoritmo durante la optimización, el importe inicial tiene que ser muy grande, por ejemplo, $1 000 000.

En la primera fase, tenemos que determinar

los valores de los parámetros de entrada de la MA: averaging period y Stop Loss. Para eso, seleccionamos dos últimos intervalos del historial, es decir, desde el mes 6 hasta hoy. Establecemos todos los parámetros de pesos de los perceptrones de Start = 0 a Stop = 100, con el paso 10. Establecemos el valor de MA: averaging period de Start = 3 a Stop =100, con el paso 10, el valor de Stop Loss de Start = 10 a Stop =75, con el paso 10. El valor de pass se establece en 1. Marcamos los parámetros a optimizar: x11, x21, x31, x41MA: averaging period y Stop Loss. Los demás tienen que estar desmarcados. Iniciamos la optimización. Después de finalizar la optimización, establecemos los parámetros de entrada según el mejor repaso.

Segunda fase. Optimización de los pesos del primer perceptrón en el segundo intervalo de datos históricos. Establecemos la fecha y la hora de la optimización de 6 a 3 meses atrás. Desmarcamos los parámetros a optimizar sólo de las variables de entrada MA: averaging period y Stop Loss. Iniciamos la optimización. Después de finalizar la optimización, establecemos los parámetros de entrada según el mejor repaso. El valor de pass se establece en 1.

Tercera fase. Optimización de los pesos del segundo perceptrón en el tercer intervalo de datos históricos. Establecemos la fecha y la hora de la optimización de 3 meses atrás al día de hoy. Desmarcamos los parámetros a optimizar: x11, x21, x31, x41 y marcamos x12, x22, x32 y x42. Los demás tienen que estar desmarcados. Establecemos el valor de la variable pass igual a 2. Iniciamos la optimización. Después de finalizar la optimización, establecemos los parámetros de entrada según el mejor repaso.

Fase 4. Nuestro sistema comercial ya está optimizada a base de los datos históricos de 6 meses atrás al día de hoy. Guardamos los valores de los parámetros de entrada en el archivo de los ajustes. Establecemos la variable de entrada pass en 3. Ahora, tenemos que verificar la robustez de nuestro sistema comercial, es decir, la probabilidad de que los parámetros de entrada del EA no están sobreajustados a los datos históricos, sino tienen una cierta probabilidad de sacar beneficios fuera de los intervalos donde se realizaba la optimización. Para eso, establecemos las fechas de 9 a 6 meses atrás desde el día de hoy (el intervalos que no participaba en la optimización) e iniciamos la simulación.
Si el resultado no será rentable en el modo 3, entonces con un alto grado de probabilidad nos enfrentamos al sobreajuste de los coeficientes de peso de ambos perceptrones. En este caso, hace falta volver a realizar la optimización, para obtener otros valores de los parámetros SL y P en el primer intervalo (la razón puede consistir en ellos). Además, la razón del fallo puede consistir en un pequeño número de transacciones durante la optimización de la primera y la segunda fase (tienen que haber por lo menos 100), entonces, hay que reducir el valor del rango máximo Stop para el parámetro SL.

Si hemos superado la cuarta fase con éxito, con un alto grado de probabilidad podemos suponer que el primer perceptrón o el segundo, o bien ambos, pueden dar beneficios fuera de los intervalos optimizados, y por tanto, se puede usarlos en el trading. Ahora no queda elegir un determinado perceptrón. Para eso, establecemos las fechas de 9 meses atrás al día de hoy, y ejecutamos las pruebas del EA en los modos pass  igual a 1 y a 2.

El modo con los mejores resultados probablemente es menos sobreajustado y conviene mejor para el trading. Psamos el EA en este modo, guardamos los parámetros de los ajustes del EA en el archivo. Después de eso, colocamos el EA en el gráfico, establecemos el timeframe H1 y cargamos sus ajustes del archivo guardado anteriormente.

Desde luego, para cerciorarse de que este método de detección de la robustez del sistema comercial sea realmente eficaz, es necesario desplazar todos los intervalos de datos históricos a tres o más meses dentro la profundidad del historial, con el fin de obtener otro intervalo adicional que servirá del «futuro» intervalo respecto a los nuestros, y usarlo para testear el modo de trabajo del sistema (conjunto de parámetros de entrada) según la técnica arriba mencionada.

Está claro que la técnica de la detección de un conjunto robusto de parámetros del sistema comercial no es sencilla. Pero al mismo tiempo, es más simple, y en mayoría de los casos es más segura, en comparación con la técnica clásica expuesta en el libro de Robert Pardo [1], ya que prácticamente excluye el análisis inútil y que consume muchos recursos del sistema comercial tras la prueba forward.

Referencias:

1. Robert Pardo. Design, Testing and Optimisation of Trading System. - Minax, 2002, - 224 pages. ISBN 5-902270-01-4

Traducción del ruso realizada por MetaQuotes Ltd
Artículo original: https://www.mql5.com/ru/code/23220

Float_Pivot_Smoothed_Digit Float_Pivot_Smoothed_Digit

Indicador Float_Pivot_Digit con el suavizado de series temporales de entrada que se utilizan en los cálculos. Los parámetros del suavizado de las series temporales se determinan por las variables de entrada del indicador.

Float_Pivot_Digit Float_Pivot_Digit

Es una alternativa para el canal Bollinger Bands® con el relleno del área del canal, en forma de una nube de color, con visualización de los últimos valores en forma de las etiquetas de precio y posibilidad de redondear los niveles del canal hasta el número de dígitos necesario.

Gap DM Gap DM

El Asesor Experto espera la brecha (gap) durante la apertura de la barra.

XFisher_org_v1_Vol_Supr_Zer XFisher_org_v1_Vol_Supr_Zer

El indicador XFisher_org_v1_Vol_Supr señaliza adicionalmente los momentos de la ruptura de la línea cero por la línea de indicador usando puntos redondos de color.