Algorítmos genéticos vs. Búsqueda simple en el Optimizador MetaTrader 4
1. ¿Qué son los algoritmos genéticos?
La plataforma MetaTrader 4 ahora ofrece algoritmos genéticos de optimización de las entradas del Asesor experto. Reducen bastante el tiempo de optimización sin invalidación de las pruebas. El principio de su funcionamiento se describe con detalle en el artículo Algoritmos Genéticos: Matemáticas .
Este artículo está dedicado a la optimización de las entradas del AE utilizando algoritmos genéticos comparados con los resultados obtenidos utilizando la búsqueda directa, completa de valores del parámetro.
2. El Asesor experto
Para mis experimentos, completé el AE CrossMACD, que puede que conozca del artículo Gestión de las órdenes: ¡Es sencillo!:
- Añadí StopLoss y TakeProfit a las posiciones colocadas.
- Añadí Trailing Stop.
- Utilicé el parámetro Open Luft para las señales de filtro: Ahora aparecerá una señal si se cruza la línea cero en un número concreto de puntos (con la precisión de una posición decimal).
- Añadí el parámetro CloseLuft para el filtro similar de señales cerradas.
- Puse los periodos de promedios de movimiento lento y rápido en las variables externas utilizadas para los cálculos MACD.
Ahora es un Asesor experto prácticamente completo. Sería apropiado optimizarlo y usarlo en trading. Puede descargar el AE <a href="/es/articles/download/1409/CrossMACD_DeLuxe.mq4" title=" Algorítmos genéticos vs. Búsqueda simple en el Optimizador MetaTrader 4
1. ¿Qué son los algoritmos genéticos?
La plataforma MetaTrader 4 ahora ofrece algoritmos genéticos de optimización de las entradas del Asesor experto. Reducen bastante el tiempo de optimización sin invalidación de las pruebas. El principio de su funcionamiento se describe con detalle en el artículo Algoritmos Genéticos: Matemáticas .
Este artículo está dedicado a la optimización de las entradas del AE utilizando algoritmos genéticos comparados con los resultados obtenidos utilizando la búsqueda directa, completa de valores del parámetro.
2. El Asesor experto
Para mis experimentos, completé el AE CrossMACD, que puede que conozca del artículo Gestión de las órdenes: ¡Es sencillo!:
- Añadí StopLoss y TakeProfit a las posiciones colocadas.
- Añadí Trailing Stop.
- Utilicé el parámetro Open Luft para las señales de filtro: Ahora aparecerá una señal si se cruza la línea cero en un número concreto de puntos (con la precisión de una posición decimal).
- Añadí el parámetro CloseLuft para el filtro similar de señales cerradas.
- Puse los periodos de promedios de movimiento lento y rápido en las variables externas utilizadas para los cálculos MACD.
Ahora es un Asesor experto prácticamente completo. Sería apropiado optimizarlo y usarlo en trading. Puede descargar el AE CrossMACD_DeLuxe.mq4 en su ordenador y probarlo de forma independiente.
3. Optimización
Ahora podemos empezar a optimizar el AE. Se realizarán tres pruebas con diferentes cargas de optimización. Esto ayudará a comparar los beneficios que se obtienen utilizando los algoritmos genéticos en varias situaciones.
Después de cada prueba, eliminaré manualmente la caché del tester para que las siguientes pruebas no utilicen combinaciones que ya se han encontrado. Esto sólo es necesario para que el experimento sea más preciso; normalmente el cambio automático de los resultados mejora la optimización repetida.
Para comparar los resultados, la optimización con algoritmos genéticos se hará dos veces: la primera vez para encontrar el beneficio máximo (Beneficio); y la segunda para encontrar el factor de beneficio (Factor de Beneficio) más algo. Después de eso, los tres mejores resultados de ambos métodos de optimización se pondrán en el informe sintetizado.
La optimización es puramente experimental. El objetivo de este artículo no es encontrar las entradas que obtengan los mejores beneficios.
Prueba 1
- Símbolo del gráfico – EURUSD;
- Periodo de tiempo de la del gráfico – H1;
- Periodo de prueba – 2 años;
- Elaboración – "Sólo precios abiertos";
- Entradas buscadas en:
Nombre variable |
Valor inicial |
Fase |
Valor final |
StopLoss |
0 |
10 |
100 |
TakeProfit |
0 |
10 |
150 |
TrailingStop |
0 |
10 |
100 |
OpenLuft |
0 |
5 |
50 |
CloseLuft |
0 |
5 |
50 |
Número de búsquedas |
234256 |
Hay que tener en cuenta que, cuando se usan los algoritmos genéticos, se espera que el tiempo de optimización sea aproximadamente el mismo que el de la optmización con la búsqueda directa de entradas. La diferencia es que los algoritmos genéticos eliminan algunas combinaciones innecesarias y, de este modo, reducen la cantidad de pruebas necesarias (puede que en decenas, cientos o miles de veces). Por eso no debería orientarse según el tiempo de optimización esperado cuando use los algoritmos genéticos. El tiempo real de la optimización siempre será más corto:
Como puede ver, la optimización con algoritmos genéticos duró menos de cuatro minutos, en lugar de las cinco horas y media que se esperaban.
El gráfico de optimización con algoritmos genéticos también difiere de la de la búsqueda directa. Como ya se han eliminado las malas combinaciones, las pruebas siguientes se realizan con combinaciones más beneficiosas por defecto. Por eso el gráfico de balance aumenta:
Vamos a explicar con más detalle los resultados de ambos métodos de optimización.
Tabla de resultados:
Búsqueda directa |
Algoritmo genético | |||||||||||
Tiempo total de la optimización |
4 h 13 min 28 sec |
3 min 50 sec | ||||||||||
SL |
TP |
TS |
Open Luft |
Close Luft |
Beneficion |
SL |
TP |
TS |
Open Luft |
Close Luft |
Beneficion | |
1 |
70 |
140 |
0 |
20 |
30 |
1248,08 |
70 |
140 |
0 |
20 |
30 |
1248,08 |
2 |
70 |
140 |
0 |
20 |
35 |
1220,06 |
70 |
140 |
0 |
20 |
35 |
1220,06 |
3 |
70 |
150 |
0 |
20 |
30 |
1176,54 |
70 |
150 |
0 |
20 |
30 |
1176,54 |
SL |
TP |
TS |
Open Luft |
Close Luft |
Factor de beneficio |
SL |
TP |
TS |
Open Luft |
Close Luft |
Factor de beneficio | |
1 |
100 |
50 |
40 |
50 |
5 |
4,72 |
0 |
50 |
40 |
50 |
5 |
4,72 |
2 |
90 |
50 |
40 |
50 |
5 |
4,72 |
90 |
50 |
40 |
50 |
5 |
4,72 |
3 |
80 |
50 |
40 |
50 |
5 |
4,72 |
80 |
50 |
40 |
50 |
0 |
4,72 |
Como puede ver en la tabla, ¡la optimización con algoritmos genéticos es bastante más rápida! Los resultados son prácticamente los mismos. Hay varios resultados con un beneficio máximo de 4,72, por eso se informa de varias combinaciones de entradas, pero no es muy importante.
Ahora vamos a intentar reducir la cantidad de búsquedas, pero aumentar el tiempo de prueba. Utilizaremos el modelo "Todos los ticks".
Prueba 2
- Símbolo del gráfico – EURUSD;
- Periodo de tiempo de la del gráfico – H1;
- Periodo de prueba – 2 años;
- modelo – "Todos los ticks";
- Entradas buscadas en:
Nombre variable |
Valor inicial |
Fase |
Valor final |
StopLoss |
0 |
10 |
100 |
TakeProfit |
0 |
10 |
150 |
TrailingStop |
0 |
10 |
100 |
OpenLuft |
0 |
10 |
50 |
Número de búsquedas |
11 616 |
Tabla de resultados:
Búsqueda directa |
Algoritmo genético | |||||||||
Tiempo total de la optimización |
32 h 32 min 37 sec |
1 h 18 min 51 sec | ||||||||
SL |
TP |
TS |
Open Luft |
Beneficio |
SL |
TP |
TS |
Open Luft |
Beneficio | |
1 |
50 |
0 |
0 |
20 |
1137,89 |
50 |
0 |
0 |
20 |
1137,89 |
2 |
70 |
0 |
0 |
20 |
1097,87 |
70 |
0 |
0 |
20 |
1097,87 |
3 |
60 |
0 |
0 |
20 |
1019,95 |
60 |
0 |
0 |
20 |
1019,95 |
SL |
TP |
TS |
Open Luft |
Factor de beneficio |
SL |
TP |
TS |
Open Luft |
Factor de beneficio | |
1 |
50 |
90 |
60 |
50 |
4,65 |
50 |
90 |
60 |
50 |
4,65 |
2 |
50 |
140 |
60 |
50 |
4,59 |
50 |
140 |
60 |
50 |
4,59 |
3 |
100 |
90 |
60 |
50 |
4,46 |
70 |
90 |
60 |
50 |
4,46 |
Para tal cantidad de búsquedas, el rango de optimización varía 25 veces, que tampoco está mal. Los resultados coinciden prácticamente al 100%, la única diferencia está en el valor StopLoss en el tercer pase. El factor de beneficio sigue siendo el máximo.
Ahora vamos a intentar aumentar la cantidad de búsquedas y reducir el tiempo de prueba. Utilizaremos el modelo "Puntos de control".
Prueba 3
- Símbolo del gráfico – EURUSD;
- Periodo de tiempo de la del gráfico – H1;
- Periodo de prueba – 2 años;
- modelo – "Puntos de control"
- Entradas buscadas en:
Nombre variable |
Valor inicial |
Fase |
Valor final |
StopLoss |
0 |
10 |
100 |
OpenLuft |
0 |
5 |
50 |
CloseLuft |
0 |
5 |
50 |
Número de búsquedas |
1 331 |
Tabla de resultados:
Búsqueda directa |
Algoritmo genético | |||||||
Tiempo total de la optimización |
33 min 25 sec |
31 min 55 sec | ||||||
SL |
Open Luft |
Close Luft |
Beneficio |
SL |
Open Luft |
Close Luft |
Beneficio | |
1 |
0 |
0 |
45 |
1078,03 |
0 |
0 |
45 |
1078,03 |
2 |
70 |
20 |
15 |
1063,94 |
70 |
20 |
15 |
1063,94 |
3 |
70 |
20 |
25 |
1020,19 |
70 |
20 |
25 |
1020,19 |
SL |
Open Luft |
Close Luft |
Factor de beneficio |
SL |
Open Luft |
Close Luft |
Factor de beneficio | |
1 |
80 |
50 |
15 |
2,73 |
80 |
50 |
15 |
2,73 |
2 |
70 |
50 |
15 |
2,73 |
70 |
50 |
15 |
2,73 |
3 |
90 |
50 |
15 |
2,65 |
90 |
50 |
15 |
2,65 |
La situación ha cambiado. Los periodos de optimización coinciden (se admite un error insignificante), y los resultados son idénticos. Esto se puede explicar con que la optimización sólo ha consistido en 1 331 búsquedas y esta cantidad de pases no es suficiente para utilizar algoritmos genéticos. No tienen tiempo para "coger velocidad"; la optimización es más rápida por la eliminación de ciertas combinaciones de entradas incorrectas, pero con tal cantidad de combinaciones como las de arriba, los algoritmos genéticos no pueden definir qué "progenitores" (combinaciones de entradas) generan malas "off-spring". Por lo que tiene sentido utilizarlos.
4. Conclusiones
Los algoritmos genéticos son una buena incorporación a las estrategias de optimización de MT 4. La optimización mejora mucho si la cantidad de búsquedas es grande, los resultados coinciden con los que se obtienen con la optimización normal.
Por lo que no tiene sentido utilizar la búsqueda completa en las entradas. Los algoritmos genéticos encontrarán los mejores resultados más rápido y sin reducir eficiencia.
5. Epílogo
Tras escribir el artículo, satisfice mi curiosidad y realicé una optimización de CrossMACD_DeLuxe en todas las entradas. Hice más de cien millones de combinaciones (103 306 896). La optimización con los algoritmos genéticos sólo me llevó 17 horas, mientras que la optimización con búsqueda en todas las entradas aproximadamente tardaría 35 años (301 223 horas).
Traducción del ruso hecha por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/ru/articles/1409
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso