Introducción a MQL5 (Parte 18): Introducción al patrón de onda de Wolfe
Introducción
¡Bienvenidos de nuevo a la parte 18 de la serie «Introducción a MQL5»! Esta parte sigue profundizando en todo lo que hemos visto hasta ahora, utilizando nuestro característico enfoque basado en proyectos para ayudarte a perfeccionar tus habilidades en MQL5 a través de ejemplos prácticos. En la parte 17, nos centramos en las rupturas de líneas de tendencia y las configuraciones de reversión, mostrando cómo se pueden crear asesores expertos que reaccionen ante los niveles clave y operen en función del comportamiento del precio en torno a las líneas de tendencia.
En este artículo, daremos un paso más allá y analizaremos un patrón gráfico más avanzado: la onda de Wolfe. A diferencia de los patrones básicos, que se basan en gran medida en simples rupturas de los niveles de soporte y resistencia, la onda de Wolfe presenta una estructura precisa de cinco puntos y tiene como objetivo predecir el movimiento del precio hacia una línea objetivo concreta. Es una herramienta muy eficaz para predecir cambios de tendencia y determinar el momento de abrir una operación con mayor precisión.
En esta sección nos centraremos en explicar los conceptos que subyacen a los patrones de onda de Wolfe, incluida la forma de identificar configuraciones tanto bajistas como alcistas. Aprenderás a identificar estos patrones en el gráfico y a comprender las condiciones que definen una estructura válida de la onda de Wolfe. En esta sección también se describe el marco para reconocer el patrón mediante programación y crear un asesor experto (EA) basado en él. En el próximo artículo aplicaremos esta lógica en MQL5 para identificar automáticamente las ondas de Wolfe y crear un asesor experto basado en este patrón.
1. Patrón de ondas de Wolfe
Una figura técnica de reversión que puede utilizarse para identificar un posible cambio en la dirección del mercado es la «onda de Wolfe». El movimiento del precio se compone de cinco ondas diferentes. Para trazar los cinco puntos, esta figura depende de la localización de máximos y mínimos de giro importantes. Una vez establecidos estos cinco puntos, la figura indica que el precio cambiará de tendencia en el quinto punto y avanzará hacia una línea objetivo trazada desde los puntos 1 a 4. Para aumentar aún más la precisión de la estrategia, también calcula el área objetivo prevista y valida el patrón mediante la herramienta de extensión de Fibonacci.
Patrón bajista de la onda de Wolfe
En un patrón bajista de onda de Wolfe deben identificarse sucesivamente cinco niveles de precios distintos, cada uno con principios estructurales bien definidos. El patrón debe comenzar con la onda 1, que debe ser un máximo de oscilación. La onda 2 debe situarse por debajo de la onda 1, ya que se trata de un mínimo de oscilación. La onda 3 es, por tanto, un máximo de oscilación que supera a la onda 1 y se sitúa dentro de un rango de extensión de Fibonacci predeterminado del movimiento del precio entre las ondas 1 y 2. A continuación, la onda 4 se forma como un mínimo de oscilación que debe mantenerse por encima de la onda 2, pero por debajo de las ondas 3 y 1.
Dado que la onda 5 es un máximo de oscilación que supera a la onda 3 y debe situarse dentro de un rango específico de extensión de Fibonacci del movimiento entre las ondas 3 y 4, acaba convirtiéndose en el punto más crucial. Dado que la finalización de la quinta onda suele indicar un impulso alcista excesivo, se considera que el mercado está preparado para un posible cambio de tendencia a la baja siempre que se cumplan todos estos requisitos.

Las ondas 3 y 4 deben tener un tamaño equivalente, como mínimo, al 70 % del de las ondas 1 y 2, lo que mejora la precisión de la inversión. Hay tres líneas de tendencia que son fundamentales para identificar el patrón de la onda de Wolfe. Para ayudar a definir mejor la estructura superior del patrón, se traza la primera línea de tendencia desde la onda 1 hasta la onda 3. El límite inferior lo forma la segunda línea de tendencia, que une las ondas dos y cuatro. El patrón queda enmarcado visualmente por la estructura convergente que forman estas dos líneas. La tercera línea de tendencia, que se traza desde la onda 1 hasta la onda 4, desempeña una función más estratégica. Ayuda a determinar la trayectoria prevista de la onda 5. Esta última línea de tendencia es un punto de referencia fundamental para abrir una operación, ya que a menudo indica un posible cambio de tendencia cuando el precio la toca o se acerca a ella.
Patrón alcista de la onda de Wolfe
En un patrón alcista de onda de Wolfe hay que identificar cinco puntos de inflexión distintos siguiendo un orden concreto, y cada uno de ellos debe cumplir unas reglas estructurales exactas. El patrón comienza con un mínimo oscilante en la onda 1. A continuación viene la onda 2, que crea un máximo oscilante que debe situarse por encima de la onda 1. A continuación, la onda 3 se identifica como un mínimo de oscilación que se sitúa dentro de un rango específico de extensión de Fibonacci del movimiento entre las ondas 1 y 2 y que se sitúa por debajo de la onda 1. A continuación, la onda 4 aparece como un máximo de oscilación que debe superar a las ondas 1 y 3, pero mantenerse por debajo de la onda 2.
El elemento más importante de esta configuración alcista es la onda 5. Debe situarse dentro de un rango concreto de extensión de Fibonacci del movimiento de la onda 3 a la onda 4 y se identifica como un mínimo de oscilación que se produce por debajo de la onda 3. Tras la finalización de la quinta onda, se considera que el mercado está sobreextendido a la baja, lo que apunta a una alta probabilidad de un cambio de tendencia al alza.
Al igual que el patrón bajista, la onda de Wolfe alcista se basa en cierta simetría entre sus ondas. Lo ideal es que las transiciones de la onda 3 a la onda 4 tengan la misma duración que las de la onda 1 a la onda 2. Más concretamente, la transición de la onda 1 a la onda 2 debería parecerse a la de la onda 3 a la onda 4 en al menos un 70 %.
Tres líneas de tendencia proporcionan una confirmación fundamental de la onda de Wolfe alcista. La línea de tendencia inicial, trazada desde la onda 1 hasta la onda 3, define la estructura inferior del patrón. La segunda línea de tendencia une las ondas dos y cuatro para establecer el límite superior de la estructura. Estas dos líneas de tendencia suelen formar una figura más estrecha y convergente. La tercera línea de tendencia se traza desde la onda 1 hasta la onda 4. Ayuda a predecir la trayectoria prevista de la onda 5 y constituye un punto de referencia esencial para abrir una operación.

Identificación de ondas
Para identificar las ondas de Wolfe, primero debemos comprender cómo detectar los máximos y mínimos de giro. En artículos anteriores, expliqué cómo identificar estos puntos críticos. Para que se considere un máximo de oscilación, el precio máximo de una barra concreta debe ser superior a los precios máximos de un número determinado de barras situadas antes y después de ella. Del mismo modo, se produce un «mínimo de oscilación» cuando el mínimo de una barra es inferior a los mínimos de un número determinado de barras a su alrededor. Estos puntos de inflexión sirven de base para determinar la estructura de cinco ondas del patrón de la onda de Wolfe. Si no se detectan con precisión, no es posible identificar el resto del patrón de forma fiable.
Una vez detectados con precisión los máximos y mínimos de giro, el siguiente paso consiste en organizarlos en la estructura de cinco ondas que define el patrón de la onda de Wolfe. Existe un orden concreto en el que cada onda debe conectarse con las demás. Por ejemplo, la onda 3 debe situarse dentro del rango de la expansión de Fibonacci válida del movimiento, mientras que las ondas 1 y 2 determinan la orientación inicial. Esta disposición ordenada conserva la simetría geométrica y la capacidad predictiva del patrón. Es fundamental crear correctamente esta secuencia antes de intentar incorporarla a un asesor experto.
Ejemplo:
//+------------------------------------------------------------------+ //| FUNCTION FOR SWING LOW | //+------------------------------------------------------------------+ bool IsSwingLow(const double &low_price[], int index, int lookback) { for(int i = 1; i <= lookback; i++) { if(low_price[index] > low_price[index - i] || low_price[index] > low_price[index + i]) return false; } return true; } //+------------------------------------------------------------------+ //| FUNCTION FOR SWING HIGH | //+------------------------------------------------------------------+ bool IsSwingHigh(const double &high_price[], int index, int lookback) { for(int i = 1; i <= lookback; i++) { if(high_price[index] < high_price[index - i] || high_price[index] < high_price[index + i]) return false; } return true; }

Un mínimo de oscilación en un gráfico de precios se puede detectar utilizando la función IsSwingLow(). Se produce un «mínimo de oscilación» cuando el mínimo de una barra es inferior a los mínimos de las barras que la rodean. Esta función toma como entradas una matriz de precios mínimos, un número de barras que especifica cuántas barras se deben comparar antes y después de la barra actual, y un índice concreto que se va a comprobar. A continuación, la función se utiliza para comparar el mínimo actual con cada una de las barras adyacentes. La función devuelve «false» si la barra actual no es un mínimo de oscilación. Si devuelve «true», significa que el mínimo actual es un mínimo de oscilación, ya que es inferior a todos los valores circundantes dentro del rango analizado.
Del mismo modo, la identificación de un máximo de oscilación es responsabilidad de la función IsSwingHigh(). Cuando el precio máximo de una barra en el gráfico supera los máximos de las barras inmediatamente anteriores y posteriores, se denomina «máximo de oscilación». Esta función, cuyo funcionamiento es similar al de IsSwingLow(), compara los precios máximos en lugar de los mínimos. Para determinar si alguna de las barras que rodean al índice de referencia ha alcanzado un máximo más alto, las revisa una por una. La función devuelve «false» y la barra actual no se considera un máximo de oscilación si ocurre esto aunque sea una sola vez. Se confirma un máximo de oscilación si el máximo de la barra actual es superior a los máximos de todas las barras que la rodean.
Al analizar patrones basados en ondas, como las ondas de Wolfe, estas funciones son fundamentales para localizar los picos y los valles en los datos de precios. Los máximos y mínimos de giro se unen para formar ondas en estos patrones. Estas características permiten al Asesor Experto construir estructuras de ondas válidas basadas en el comportamiento real del mercado, mediante la identificación programada de determinados momentos de inflexión.
En ambas funciones, el parámetro «lookback» es fundamental. Especifica el número de barras que se comprobarán a cada lado de la barra actual. Un valor de parámetro de lookback mayor reduce las señales falsas, ya que exige que la oscilación se distinga más claramente de la actividad de los precios circundantes. La lógica que permite reconocer las ondas en los patrones técnicos se basa en estas funciones, que se utilizan con frecuencia a lo largo del EA para identificar posibles oportunidades de operación.
Recuperación de datos de velas japonesas e identificación de oscilaciones
Como siempre, analizar cualquier patrón gráfico implica trabajar directamente con la evolución del precio. Y para analizar la evolución de los precios de forma eficaz, el primer paso, y el más importante, es extraer los datos de las velas del gráfico. Sin acceso a los datos de las barras, no es posible identificar los máximos y mínimos de giro necesarios para definir patrones gráficos como la onda de Wolfe. Para un número predeterminado de barras recientes, recuperaremos los datos de apertura, máximo, mínimo, cierre y hora. Para ayudar a identificar puntos de inflexión importantes en los precios, estos valores se almacenarán en matrices y se analizarán en las velas anteriores. Podemos empezar a identificar la formación de ondas que podrían asemejarse al patrón de la onda de Wolfe determinando estas posiciones de oscilación. Todo lo que viene después, como determinar las extensiones de Fibonacci, confirmar la estructura de los patrones y trazar líneas de tendencia, se basa en una detección precisa de las oscilaciones.
Ejemplo:input ENUM_TIMEFRAMES timeframe = PERIOD_CURRENT; int bars_check = 500; datetime time_bar; double total_symbol_bars; double open[]; double close[]; double low[]; double high[]; datetime time[]; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { total_symbol_bars = Bars(_Symbol, timeframe); time_bar = iTime(_Symbol, timeframe, 0); CopyOpen(_Symbol, timeframe, time_bar, bars_check, open); CopyClose(_Symbol, timeframe, time_bar, bars_check, close); CopyLow(_Symbol, timeframe, time_bar, bars_check, low); CopyHigh(_Symbol, timeframe, time_bar, bars_check, high); CopyTime(_Symbol, timeframe, time_bar, bars_check, time); } //+------------------------------------------------------------------+ //| FUNCTION FOR SWING LOW | //+------------------------------------------------------------------+ bool IsSwingLow(const double &low_price[], int index, int lookback) { for(int i = 1; i <= lookback; i++) { if(low_price[index] > low_price[index - i] || low_price[index] > low_price[index + i]) return false; } return true; } //+------------------------------------------------------------------+ //| FUNCTION FOR SWING HIGH | //+------------------------------------------------------------------+ bool IsSwingHigh(const double &high_price[], int index, int lookback) { for(int i = 1; i <= lookback; i++) { if(high_price[index] < high_price[index - i] || high_price[index] < high_price[index + i]) return false; } return true; }
Explicación:
Para regular el número de barras históricas que analiza, este asesor experto inicializa variables importantes como el marco temporal y «bars_check». Para identificar oscilaciones y patrones gráficos, también declara matrices para almacenar los datos de las velas japonesas. El EA utiliza las funciones Bars() e iTime() para determinar cuántas barras hay y cuándo empezar a copiar los datos. A continuación, las funciones Copy*() cargan los datos históricos de precios en matrices para su análisis.
Durante un periodo determinado y para un número concreto de barras, funciones como CopyOpen() cargan datos de precios específicos —como el precio de apertura, el de cierre, el máximo o el mínimo— en matrices. Aunque se centran en diferentes niveles de precios, todas las funciones siguen el mismo esquema. Las funciones IsSwingLow e IsSwingHigh ayudan a identificar puntos de inflexión clave en los precios al comprobar si el mínimo o el máximo de una vela es más extremo que el de las velas circundantes dentro de un intervalo de análisis retrospectivo. Si se cumple la condición, la vela se marca como un punto de oscilación válido.
Para localizar los cinco puntos de onda que caracterizan a los patrones gráficos, como la onda de Wolfe, es necesario utilizar estas funciones. En realidad, estas funciones de detección de oscilaciones seguirán siendo útiles mientras trabajemos con patrones gráficos. Constituyen la piedra angular de este enfoque y este artículo, al igual que los demás de esta serie, profundiza en las ideas fundamentales expuestas anteriormente. No obstante, cada nuevo artículo debería incluir una explicación clara de estos conceptos, sobre todo para los lectores que solo siguen esta parte de la serie y no han leído las demás.

2. Creación de un asesor experto
Cómo funciona el EA
Para desarrollar el asesor experto Wolfe Wave es necesario comprender la lógica que subyace a las oportunidades válidas de compra y venta. Para funcionar con eficacia, el EA debe ser capaz de identificar estas ondas en los datos históricos de precios y verificar que cumplen ciertos requisitos, como la simetría y la alineación de Fibonacci.
Es fundamental definir el marco básico que guiará las decisiones del EA antes de comenzar con la programación propiamente dicha. Esto implica determinar qué constituye un patrón válido, cuándo plantearse una posible entrada y cómo evitar las formaciones falsas. El asesor experto solo reaccionará ante configuraciones de alta probabilidad que se ajusten a la estructura tradicional de la onda de Wolfe, siempre y cuando se haya establecido dicho marco.
Esta parte del artículo sienta las bases necesarias para traducir posteriormente la lógica del patrón en pasos de programación. Veremos cómo representar gráficamente el gráfico utilizando los puntos clave de las ondas y cómo preparar los datos que el EA utilizará en su análisis.
Lógica de venta
- El EA detectará cuatro puntos que se corresponden con la onda 1, la onda 2, la onda 3 y la onda 4 de un patrón bajista de onda de Wolfe.
- Se trazarán tres líneas de tendencia en el gráfico. La primera une la onda 1 y la onda 3 para esbozar la estructura superior. La segunda conecta la onda 2 y la onda 4 para definir la estructura inferior. La tercera línea de tendencia une la onda 1 y la onda 4 y se utiliza para proyectar la zona objetivo de ganancias potencial.
- También se añadirá al gráfico un objeto de extensión de Fibonacci tanto para los tramos de las ondas 1 y 2 como para los de las ondas 3 y 4. Esto permite verificar que la onda 3 y la onda 5 cumplen los criterios de extensión requeridos según la estructura de las ondas de Wolfe.
- El EA busca una ruptura alcista en la que el precio cruce y cierre por encima de la línea de tendencia trazada entre la onda 1 y la onda 3.
- Una vez que se produce la ruptura, el EA espera una vela de confirmación, es decir, una vela bajista que vuelva a cruzar por debajo de la misma línea de tendencia y cierre por debajo de ella.
- Una vez que se cierre esta vela de reversión confirmatoria, el EA coloca inmediatamente una orden de venta.
- A continuación, analiza todas las barras situadas entre la vela de ruptura y la vela de reversión para encontrar el máximo más alto de ese intervalo. Este máximo se considera el punto más alto de la onda 5 y se utiliza como nivel de stop loss.
- Se especificará el take profit. Permite que la operación se mantenga abierta hasta que el precio alcance la línea de tendencia proyectada trazada desde la onda 1 hasta la onda 4. Esta línea de tendencia sirve como señal definitiva para cerrar la operación con beneficios.
- En cuanto el precio toca la línea de tendencia que une la onda 1 con la onda 4, el EA cierra automáticamente la operación de venta.

Lógica de compra
- El EA detectará cuatro puntos que se corresponden con la onda 1, la onda 2, la onda 3 y la onda 4 de un patrón alcista de onda de Wolfe.
- Se trazarán tres líneas de tendencia en el gráfico. La primera conecta la onda 1 y la onda 3 para definir la estructura inferior. La segunda conecta la onda 2 y la onda 4 para formar el límite superior. La tercera línea de tendencia une la onda 1 y la onda 4 y se utiliza para proyectar la zona objetivo de ganancias potencial.
- También se añadirá al gráfico un objeto de extensión de Fibonacci tanto para los tramos de las ondas 1 y 2 como para los de las ondas 3 y 4. Esto ayuda a verificar si la onda 3 y la onda 5 se encuentran dentro de los rangos de extensión requeridos que se esperan en un patrón de onda de Wolfe válido.
- El EA busca una ruptura bajista en la que el precio cruce y cierre por debajo de la línea de tendencia trazada entre la onda 1 y la onda 3.
- Tras esta ruptura, el EA espera una vela de confirmación, una vela alcista que vuelva a cruzar por encima de la misma línea de tendencia y cierre por encima de ella.
- Una vez que se cierra esta vela de confirmación, el EA coloca inmediatamente una orden de compra.
- A continuación, el EA comprueba todas las barras situadas entre la vela de ruptura y la vela de reversión para determinar el mínimo más bajo de ese intervalo. Este mínimo se toma como base de la onda 5 y se utiliza como nivel de stop loss.
- Se especificará el take profit. La operación permanecerá abierta hasta que el precio alcance la línea de tendencia proyectada que se traza desde la onda 1 hasta la onda 4, la cual actúa como zona objetivo de ganancias.
- En cuanto el precio toque la línea de tendencia que une la onda 1 y la onda 4, el EA cierra automáticamente la operación de compra.

Nota: El objetivo de este proyecto es enseñar programación en MQL5 y estrategias basadas en patrones gráficos, no operar en real. Consulte siempre a un experto financiero antes de aplicar cualquier estrategia en los mercados reales.
Conclusión
En este artículo se ha presentado el concepto del patrón de onda de Wolfe, incluida su estructura y la lógica necesaria para crear un asesor experto basado en él. Hemos analizado cómo identificar puntos de onda válidos utilizando los máximos y mínimos de giro, así como los principios clave que rigen las configuraciones de compra y venta. En el próximo artículo, veremos cómo implementar esta lógica mediante código en MQL5, dando vida a la estrategia Wolfe Wave a través del trading automatizado.
Traducción del inglés realizada por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/en/articles/18555
Advertencia: todos los derechos de estos materiales pertenecen a MetaQuotes Ltd. Queda totalmente prohibido el copiado total o parcial.
Este artículo ha sido escrito por un usuario del sitio web y refleja su punto de vista personal. MetaQuotes Ltd. no se responsabiliza de la exactitud de la información ofrecida, ni de las posibles consecuencias del uso de las soluciones, estrategias o recomendaciones descritas.
Utilizando redes neuronales en MetaTrader
Redes neuronales en el trading: Previsión probabilística de series temporales (K2VAE)
Particularidades del trabajo con números del tipo double en MQL4
Desarrollamos un asesor experto multidivisas (Parte 28): Añadimos un gestor de cierre de posiciones
- 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