Características del Wizard MQL5 que debe conocer (Parte 69): Uso de patrones del SAR y del RVI
Introducción
El indicador Parabolic Stop-And-Reverse (SAR) y el oscilador Relative Vigor Index (RVI) son la siguiente combinación que analizaremos dentro de esta serie. En esta ocasión, este dúo combina la identificación de tendencias con el seguimiento del impulso. Como ya hemos hecho en artículos anteriores, analizamos 10 posibles patrones de señales que se pueden generar combinando estos dos indicadores, y los ponemos a prueba en un asesor experto ensamblado con el asistente de MQL5. Dicho esto, veamos las definiciones de estos dos indicadores.
Nuestra optimización y pruebas se realizan sobre el par GBP/CHF para el año 2023 en un marco temporal de 4 horas. Estamos probando un patrón a la vez. Dado que utilizamos el parámetro integrado de MQL5, 'm_patterns_used', tenemos que implementar nuestro propio mapa con un parámetro de entrada 'PatternsUsed'. Se trata de un valor entero que sirve como mapa de bits para la combinación de patrones utilizados en un momento dado. En nuestro caso, sin embargo, solo utilizamos un patrón a la vez. Los motivos de esto se destacaron en artículos anteriores, y los lectores pueden consultarlos para refrescar la memoria. Nuestros patrones están indexados del 0 al 9 y, para obtener el valor entero que se corresponde exclusivamente con un patrón específico, simplemente elevamos 2 a la potencia del índice del patrón. Si estamos usando el patrón 0, entonces el mapa es 2 elevado a la potencia 0, lo que nos da 1. Si el índice del patrón es 4, entonces el valor del mapa utilizado será 2 elevado a la potencia 4, lo que nos da 16. Etcétera.
La prueba walk-forward se realiza en el año 2025, lo que nos da un período total que abarca desde el 1 de enero de 2023 hasta el 1 de enero de 2025. Este plazo es claramente limitado para cualquiera que esté considerando ir más allá, ya que lo ideal sería realizar pruebas en diferentes tipos de mercado, y estos tipos de mercado suelen abarcar varios años, si no décadas.
El SAR parabólico
Este indicador se desarrolló para detectar tendencias, así como posibles puntos de reversión. Traza puntos por encima o por debajo del precio para resaltar la tendencia. Una serie de puntos por debajo del precio indicaría una tendencia alcista, mientras que uno por encima indicaría una tendencia bajista. Esto puede representar un beneficio secundario al establecer un stop-loss dinámico razonable en las estrategias de seguimiento de tendencias. Se ajustaría dinámicamente en las estrategias de seguimiento de tendencias, lo que sugiere, como cabría esperar, que este indicador es más adecuado para mercados con tendencia definida. Su fórmula es doble. Para el búfer superior y el búfer inferior. El búfer superior es el siguiente:

Con el búfer inferior definido por:

Donde:
- SARn es el valor SAR (Stop and Reverse) del período actual,
- SARn+1 es el valor SAR del siguiente período (el SAR pronosticado),
- AF es el factor de aceleración: comienza en 0,02 y aumenta en 0,02 cada vez que se alcanza un nuevo EP, hasta un máximo de 0,20.
- EP es el Punto Extremo: el máximo más alto (en una tendencia alcista) o el mínimo más bajo (en una tendencia bajista) observado hasta el momento,
- EP−SARn o SARn−EP es la distancia entre el SAR actual y el punto de precio extremo, que se utiliza para acelerar el movimiento del SAR.
La lógica detrás de esto es que si el precio cruza el SAR, en un cambio de tendencia, se restablecería al punto extremo opuesto. Entonces el ciclo continuaría, con el factor de aceleración aumentando con cada confirmación sucesiva de la tendencia hasta alcanzar su límite preestablecido, que suele ser de 0,2.
Este indicador realiza un seguimiento del impulso comparando el precio de cierre con un rango de precios durante un período de tiempo determinado. Indica una tendencia alcista cuando el precio de cierre está cerca de los máximos y, por el contrario, una tendencia bajista si está más cerca de los mínimos. Además, incorpora una línea de señal que es una línea RVI suavizada para identificar los puntos de inflexión en la RVI. Un cruce de esta línea de señal de abajo hacia arriba indicaría un impulso alcista, mientras que un cruce de arriba hacia abajo marcaría un impulso bajista.
Suele ser más fiable en mercados con tendencia definida que en mercados laterales, ya que confirma las tendencias e identifica posibles cambios de rumbo. Su fórmula es la siguiente:

Con:



Donde:
- RVI es el valor del Índice de Vigor Relativo en el tiempo t,
- Closet es el precio de cierre de la barra o vela en el tiempo t,
- Opent es el precio de apertura de una barra en el tiempo t,
- Hight es el precio máximo en el tiempo t,
- Lowt es el precio mínimo de la barra o vela en el tiempo t,
- Numeratort es la diferencia entre el precio de cierre y el de apertura (impulso),
- Denominatortes la diferencia entre el precio máximo y el mínimo (rango de fluctuación),
- SAM4 es una media móvil ponderada simétrica que utiliza las ponderaciones [1, 2, 2, 1].
Se trata de una fórmula pedante, basada en principios fundamentales, que no adaptamos estrictamente para este artículo, pero que se presenta aquí a modo de introducción a este indicador para mayor exhaustividad. La lógica que subyace a la fórmula consiste en calcular la diferencia entre el precio de cierre y el de apertura para hacerse una idea de la variación actual del precio en comparación con el rango de precios predominante. La línea de señal suaviza la RVI para reducir el ruido y generar señales más nítidas. Con la introducción de este indicador, ahora podemos analizar los patrones de señal.
Inversión SAR con cruce RVI
Nuestro primer patrón detecta posibles reversiones mediante el uso del cruce parabólico SAR y el cruce de la línea cero RVI. El primer indicador suele sugerir un cambio en la tendencia de los precios, mientras que el segundo sirve como confirmación de la dirección del impulso. Básicamente, combina la acción del precio (máximos y mínimos) con el seguimiento de tendencias SAR y la señalización de impulso RVI.
Para la señal de compra, cuando el máximo de la barra anterior estaba por debajo del SAR porque el mercado estaba en una tendencia bajista y ahora el mínimo de la barra actual está por encima del SAR después de un cambio para señalar una tendencia alcista; lo marcaríamos como alcista siempre que el RVI cruce simultáneamente la línea cero desde abajo y pase a situarse por encima de ella. Así es como lo implementamos en MQL5:
//+------------------------------------------------------------------+ //| Check for Pattern 0. | //+------------------------------------------------------------------+ bool CSignalSAR_RVI::IsPattern_0(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && High(X() + 1) <= SAR(X() + 1) && SAR(X()) <= Low(X()) && 0.0 > RVI(X() + 1) && RVI(X()) > 0.0) { return(true); } else if(T == POSITION_TYPE_SELL && Low(X() + 1) >= SAR(X() + 1) && SAR(X()) >= High(X()) && 0.0 < RVI(X() + 1) && RVI(X()) < 0.0) { return(true); } return(false); }
La lógica de venta se basa en que el mínimo de la barra anterior esté por encima del SAR en una tendencia alcista, seguido de un cambio para que el máximo actual esté por debajo del SAR y, además, el RVI cruce la línea cero para situarse por debajo de ella. Este patrón es sensible al marco temporal y, posiblemente, funciona mejor en los marcos temporales medios de 1 a 4 horas, donde es menos susceptible al ruido de los marcos temporales más pequeños sin retrasarse demasiado como en los marcos temporales más grandes. Su utilidad radica en su carácter híbrido entre reversión y seguimiento de tendencia, siendo útil en rupturas de rango o transiciones de mercado volátiles.
Al utilizarlo, es buena idea filtrar la tendencia según el contexto. Las operaciones comerciales deben estar en consonancia con el contexto macroeconómico. Se puede utilizar un filtro de volatilidad con el indicador STD-DEV para evitar realizar operaciones en mercados laterales. También se puede evitar operar durante las horas de noticias activando un filtro de horario de noticias. La pendiente RVI es otro filtro que se puede complementar para mejorar nuestro patrón 0 y así obtener señales más limpias. El uso de SAR implica que la gestión de stop-loss es inherente, ya que el nivel de SAR puede actuar como guía; sin embargo, también se pueden considerar los stop-loss basados en ATR, ya que el SAR y el RVI tienden a ser demasiado reactivos. En general, conviene considerar la posibilidad de complementar este patrón de señal con otro, y el asistente de configuración de MQL5 permite hacerlo fácilmente.
Una posible debilidad en nuestra implementación es la reactividad del SAR. Presenta un gran retraso en las rápidas reversiones del mercado o en las falsas rupturas, y puede generar señales con un desfase significativo. No existe ningún filtro de volumen o volatilidad para obtener una confirmación adicional, ya que los mercados con poca actividad están plagados de señales falsas, y el cruce por cero del RVI puede ser un indicador poco fiable en mercados laterales. Nuestros umbrales de entrada también son un poco demasiado estrictos, ya que carecen de tolerancia o margen (es decir, no, <= o >=).
Las posibles soluciones a estas deficiencias son en parte sencillas, ya que para la desviación estándar podemos comprobar que la desviación estándar actual supera un umbral optimizable. También se puede agregar un filtro de impulso que registre los cambios en el RVI para garantizar que el último cambio de barra en la magnitud del RVI indique un nivel de impulso suficiente. El ATR para SL y TP dinámicos es otra posible mejora. Nuestras pruebas de este patrón en GBP/CHF desde el 01/01/2023 hasta el 01/01/2025 nos dan el siguiente informe. Este patrón superó la validación walk-forward;

Soporte del SAR con RVI en tendencia
Nuestro segundo patrón recibe una señal de compra cuando el mínimo de la vela anterior está por encima del SAR y el RVI muestra un impulso alcista, con la lectura actual por encima de la anterior. La implementación de MQL5 es la siguiente:
//+------------------------------------------------------------------+ //| Check for Pattern 1. | //+------------------------------------------------------------------+ bool CSignalSAR_RVI::IsPattern_1(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && Low(X() + 1) > SAR(X() + 1) && SAR(X()) < Low(X()) && RVI(X()) > RVI(X() + 1)) { return(true); } else if(T == POSITION_TYPE_SELL && High(X() + 1) < SAR(X() + 1) && SAR(X()) > High(X()) && RVI(X()) < RVI(X() + 1)) { return(true); } return(false); }
La señal de venta se produce cuando el máximo de la última barra fue inferior al SAR y el RVI indica un impulso bajista, con el RVI actual por debajo del anterior. Esta unidad complementaria busca aprovechar los cambios de tendencia impulsados por el impulso en sus primeras etapas. Este patrón puede ser ideal para operaciones de reversión o rupturas de impulso, especialmente en mercados con tendencia o volátiles donde la reacción del SAR puede ser bastante fuerte.
Como buena práctica, este patrón en particular podría utilizarse en periodos de tiempo superiores, de al menos 1 hora. Esto se debe a la naturaleza reactiva de su señal, que puede generar muchas aperturas falsas en marcos temporales bajos. Además, la combinación con el volumen para el filtrado de volatilidad mediante el uso de indicadores como el On-Balance-Volume puede garantizar que la señalización de impulso sea válida. Los indicadores STD-DEV y ATR también pueden estar disponibles para proporcionar una confirmación adicional. Otro posible filtro para este patrón es un filtro de velas, como por ejemplo la vela envolvente alcista o la vela envolvente bajista, según sea el caso. Evitar operar durante la publicación de noticias puede ser una buena estrategia con el SAR, dada su naturaleza reactiva, y los SL y TP también tienden a funcionar bien con este patrón, especialmente si se basan en el ATR. Nuestro informe de prueba para este patrón es el siguiente. Este patrón no superó la prueba walk-forward:


Ruptura SAR con divergencia RVI
Nuestro tercer patrón combina el SAR y el RVI con el objetivo de detectar señales tempranas de un cambio de tendencia o una confirmación prematura de la misma. La posición relativa del precio con respecto al SAR es clave en este caso, y un cruce de impulso del RVI es un requisito previo. La señal de compra se produce cuando el máximo está por debajo o es igual al SAR, seguido de una caída o un cambio de dirección para situarlo por debajo del mínimo, lo que indica una reversión alcista junto con un contexto de RVI en aumento para un impulso creciente. El precio de cierre también podría bajar ligeramente, lo que sugeriría una trampa bajista o una caída final antes de una reversión inminente. En MQL5 implementamos esto de la siguiente manera:
//+------------------------------------------------------------------+ //| Check for Pattern 2. | //+------------------------------------------------------------------+ bool CSignalSAR_RVI::IsPattern_2(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && High(X() + 1) <= SAR(X() + 1) && SAR(X()) <= Low(X()) && RVI(X()) > RVI(X() + 1) && Close(X()) < Close(X() + 1)) { return(true); } else if(T == POSITION_TYPE_SELL && Low(X() + 1) >= SAR(X() + 1) && SAR(X()) >= High(X()) && RVI(X()) < RVI(X() + 1) && Close(X()) > Close(X() + 1)) { return(true); } return(false); }
Las características de la señal de venta incluyen un mínimo anterior que fue superior o igual al SAR, seguido de un aumento del SAR hasta situarse por encima del máximo de la barra actual, con el RVI en descenso, lo que indica una disminución del impulso. En esta situación, el precio de cierre también puede subir ligeramente para establecer una posible trampa alcista o un punto de agotamiento. Este patrón es una señal híbrida contraria/de impulso. El SAR sirve como indicador de reversión de tendencia, mientras que el RVI refleja la fuerza del impulso interno. Complementar la comparación de precios cercanos sí aporta validación de la evolución del precio.
Los casos de uso para el patrón 2 probablemente se encuentren en mercados laterales o de transición. Esto se debe a que aquí se producen reversiones con mayor frecuencia. Este patrón también puede resultar beneficioso en marcos temporales más cortos al aplicar estrategias de reversión a la media o al realizar operaciones de impulso a corto plazo.
La mejor práctica para los operadores, al utilizar este patrón, probablemente consistiría en aplicar una confirmación en múltiples marcos temporales. Esto tiende a actuar como una medida de seguridad dadas las fluctuaciones de menor duración. Si se confirma este patrón en un plazo mayor, podría reforzarse aún más. Otra cosa que pueden hacer es combinarlo con un filtro de volatilidad. En este escenario, utilizarían el indicador de desviación estándar (STD-DEV) integrado o el ATR para ayudar a validar si una reversión tiene suficiente margen de movimiento. No conviene seguir este patrón cuando hay tendencias fuertes en juego. Esto se debe a que inevitablemente tendrá un rendimiento deficiente, ya que muchos retrocesos pueden interpretarse como cambios de tendencia. Los filtros adicionales, como el ADX o las medias móviles, podrían ayudar a mitigar este problema.
La gestión de riesgos también podría requerir límites de pérdidas estrictos con este patrón. Estos se pueden colocar ligeramente más allá del SAR para respetar la lógica de inversión. En general, los objetivos pueden estar en niveles de soporte/resistencia o en múltiplos de R de aproximadamente 1,5. Idealmente, las pruebas retrospectivas también deberían realizarse cuando se utilizan cierto deslizamiento y diferenciales de intermediarios, dada la preferencia por marcos temporales pequeños. Es importante garantizar que el patrón sea robusto en condiciones de ejecución reales, especialmente si se utiliza en operaciones intradía. Los resultados de las pruebas para nuestro tercer patrón, con configuraciones/condiciones similares a los patrones ya mencionados, nos dan el siguiente informe. Este patrón no superó la prueba walk-forward:


Continuación de la tendencia SAR y reducción de la brecha RVI a cero.
Nuestro cuarto patrón es una señal de seguimiento de tendencia confirmada por el impulso. Utiliza una relación de precios basada en SAR para establecer un sesgo de posicionamiento. El valor RVI en relación con el límite cero también actúa como una confirmación del tipo de impulso en juego, ya sea bajista o alcista. La señal de compra se produce cuando el mínimo de la barra anterior está por encima del SAR, lo que sugiere que el SAR se encuentra por debajo del precio, lo que presenta una tendencia alcista. A continuación, se observa que el mínimo de la barra actual sigue estando por encima del SAR, lo que confirma que la tendencia se mantiene intacta. El RVI de la barra actual y la anterior tendrían que estar por encima del límite cero, lo que también es un indicio de impulso sostenido. Implementamos esto en MQL5 de la siguiente manera:
//+------------------------------------------------------------------+ //| Check for Pattern 3. | //+------------------------------------------------------------------+ bool CSignalSAR_RVI::IsPattern_3(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && Low(X() + 1) > SAR(X() + 1) && SAR(X()) < Low(X()) && RVI(X()) > 0.0 && RVI(X() + 1) > 0.0) { return(true); } else if(T == POSITION_TYPE_SELL && High(X() + 1) < SAR(X() + 1) && SAR(X()) > High(X()) && RVI(X()) < 0.0 && RVI(X() + 1) < 0.0) { return(true); } return(false); }
Las condiciones de venta son similares: un máximo anterior debe estar por debajo de la SA, lo que indica una tendencia bajista. A esto se suma que el máximo actual se mantiene por debajo del SAR, lo que indica que la tendencia se mantiene. El RVI actual y el anterior también tendrían que estar por debajo de cero para ser coherentes con una tesis de impulso negativo. Este tipo de patrón es una señal de confirmación de tendencia. No se trata de una reversión como el patrón 2, que captura los puntos de inflexión, ni como el patrón 3, que requiere que el impulso y el precio estén alineados con el SAR. El contexto de mercado ideal para este patrón se daría en mercados con tendencia definida o en fase de ruptura, especialmente después de retrocesos importantes. Con este patrón, es fundamental evitar fluctuaciones bruscas comprobando que el RVI mantenga la misma dirección que las dos últimas barras.
Estos casos de uso de continuación de tendencias requieren que el patrón se aplique solo cuando ya existe una tendencia previa en marcha. También se puede activar la confirmación mediante filtros de tendencia, como que el ADX esté por encima de 25 o la pendiente de una EMA de período más largo. El uso de filtros de compresión/ruptura de volatilidad, como la compresión de bandas de Bollinger o la baja desviación estándar, puede complementarse para afinar el momento de entrada. Para garantizar la seguridad direccional, se puede utilizar una combinación con reglas de colocación de paradas justo por debajo del nivel SAR para tramos largos o justo por encima para tramos cortos. El propio SAR también puede servir como stop dinámico tras la entrada.
La estrategia de plazos puede ser más sólida en plazos más largos, en marcos temporales de 1 hora o superiores. Esto se debe a que las tendencias tienden a ser más estables en estos periodos de tiempo más amplios. Debe evitarse por completo el intervalo de tiempo de 1 minuto y 5 minutos, a menos que se combine con un intervalo de tiempo mayor para la confirmación. Los criterios de salida pueden ser si el RVI cambia de dirección o si el SAR modifica su posición relativa al precio. A continuación se presentan los resultados de nuestras pruebas para el patrón 3. Este patrón superó la validación walk-forward:

Reversión del SAR con sobrecompra/sobreventa del RVI
Nuestro quinto patrón, el patrón 4, es una señal de estilo inverso que busca captar los cambios de precios con confirmación de impulso. La relación entre el SAR y el precio sugiere un posible cambio en la dirección del mercado. Los crossovers RVI también sirven como filtros de confirmación de impulso. Las condiciones de la señal de compra incluyen que el máximo de la barra anterior esté en o por debajo del SAR anterior, un estado en el que el precio es bajista; seguido de que el mínimo de la barra actual esté en o por encima del SAR, lo que indicaría un cambio por debajo del precio para una configuración alcista. El RVI también tendría que hacer un cruce al alza, como lo captura nuestra función improvisada RVI-UP. Esto indica una tendencia alcista. Además, el valor actual del RVI debería ser positivo para consolidar la tesis del impulso alcista. Implementamos esto en MQL5 de la siguiente manera:
//+------------------------------------------------------------------+ //| Check for Pattern 4. | //+------------------------------------------------------------------+ bool CSignalSAR_RVI::IsPattern_4(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && High(X() + 1) <= SAR(X() + 1) && SAR(X()) <= Low(X()) && RVI_UP(X()) && RVI(X()) > 0.0) { return(true); } else if(T == POSITION_TYPE_SELL && Low(X() + 1) >= SAR(X() + 1) && SAR(X()) >= High(X()) && RVI_DN(X()) && RVI(X()) < 0.0) { return(true); } return(false); }
Por el contrario, las condiciones de señal de venta se caracterizan por que el mínimo anterior esté en o por encima del SAR anterior, un signo de tendencia alcista pasada; seguido de que el máximo actual esté en o por debajo del SAR actual. Esto presenta un panorama bajista. Nuestra función RVI-DN también debe registrar un cruce del RVI a la baja, lo que confirmaría el impulso bajista. Además, al igual que con la señal de compra, el valor actual del RVI debe ser negativo para confirmar el sentimiento bajista.
Este tipo de patrón es inherentemente una entrada de reversión basada en el impulso. Aprovecha los puntos de inflexión del SAR y, además, se ve reforzado por los cambios de impulso, tal como lo indica el RVI. Las condiciones ideales del mercado se dan cuando los precios/mercados están cerca del agotamiento de sus tendencias o después de rupturas fallidas. También funcionaría mejor cuando el precio se extiende a una zona de sobrecompra o sobreventa y existe divergencia de impulso.
Al utilizarlo, sería conveniente evitar las zonas SAR planas. No se debe utilizar este patrón si el SAR cambia de dirección con demasiada frecuencia. También puede ser una buena idea realizar una confirmación con herramientas adicionales si se utilizan indicadores complementarios como el MACD o divergencias del RSI para validar el cruce del RVI. El plazo más adecuado para este patrón en particular probablemente estaría entre 1 y 4 horas para poder capturar las fuertes estructuras de reversión. Los plazos más cortos inevitablemente generarán muchos falsos positivos.
La entrada también puede confirmarse con un patrón de velas adicional o un filtro de ruptura, como los patrones envolventes, para programar mejor las entradas. El plan de salida puede consistir en un fallo de RVI para mantener el impulso, o en que el SAR vuelva a cambiar de rumbo tras la entrada. Como siempre, un filtro de volatilidad puede incluir la desviación estándar (STD-DEV) o el ATR (Average True Range), con el fin de suprimir las señales en entornos de volatilidad demasiado baja. Las pruebas realizadas con nuestro quinto patrón, el patrón-4, arrojan el siguiente informe sobre los períodos de entrenamiento y prueba walk-forward. Superó la validación walk-forward:

Ruptura de consolidación SAR con cruce RVI
Nuestro sexto patrón es una señal de ruptura de continuación de tendencia diseñada para capturar entradas justo después de que el SAR cambie a una nueva tendencia y se produzcan confirmaciones de impulso del RVI. Los requisitos para la señal de compra son que el mínimo de la barra anterior esté por encima del SAR como confirmación de que el precio está subiendo por encima del 'stop dinámico'. Una vez establecido esto, el SAR actual también se mantendría por debajo del mínimo de la barra actual, lo que sería una señal de que la tendencia alcista continúa. Con todo esto sucediendo, el RVI cruzaría al alza, una señal de que el impulso alcista se ha "renovado" y está en consonancia con la tendencia predominante. Implementamos esto en MQL5 de la siguiente manera:
//+------------------------------------------------------------------+ //| Check for Pattern 5. | //+------------------------------------------------------------------+ bool CSignalSAR_RVI::IsPattern_5(ENUM_POSITION_TYPE T) { if(STD_DEV(X()) >= fabs(SAR(X()) - SAR(X() + __PERIOD))) { if(T == POSITION_TYPE_BUY && High(X() + 1) <= SAR(X() + 1) && SAR(X()) <= Low(X()) && RVI_UP(X())) { return(true); } else if(T == POSITION_TYPE_SELL && Low(X() + 1) >= SAR(X() + 1) && SAR(X()) >= High(X()) && RVI_DN(X())) { return(true); } } return(false); }
Los requisitos de venta establecen que el máximo de la barra anterior debe estar por debajo del SAR, lo que indica una tendencia bajista; seguido de que se repitan las mismas condiciones en la barra actual, con el máximo nuevamente por debajo del SAR, lo que es señal de una presión de venta sostenida. Esto ocurriría simultáneamente con un cruce a la baja del RVI, lo que indicaría un debilitamiento del impulso. La premisa fundamental de este patrón es que utiliza la confirmación de posición del SAR y el cruce del RVI, donde la ubicación del precio en relación con el SAR, con alineación de impulso, se utiliza en la entrada de la operación para minimizar las reversiones tempranas. La diferencia con los patrones 3 y 4 radica en que el patrón 5 filtra únicamente la continuación SAR con acuerdo RVI, pero sin comprobaciones de volatilidad.
Cuando se utiliza el patrón 5, lo ideal es usarlo en mercados con tendencia definida. Se debería recurrir a esta estrategia cuando se produzcan movimientos direccionales fuertes o después de un retroceso importante que reconfirme la tendencia y el impulso. Con este patrón, se deben evitar movimientos laterales o bruscos. En entornos de baja volatilidad o durante situaciones de fluctuación brusca del SAR, el patrón 5 puede generar muchas señales falsas debido a los cambios bruscos del SAR y a los cruces engañosos del RVI. La confirmación del RVI actúa como un filtro de impulso para este patrón. También se puede activar la confirmación en múltiples plazos para obtener puntos de entrada más precisos.
También es fundamental asegurarse de que se estén utilizando los ajustes óptimos de SAR al emplear este patrón, por lo que puede ser una buena idea revisar la aceleración y los ajustes de parámetros máximos para garantizar que funcionen correctamente con el activo que se está probando. La integración con filtros de riesgo como STD-DEV y ATR es, de nuevo, algo que debería ser bienvenido al tratar con este patrón. Esto evita especialmente entrar en mercados de baja volatilidad. Los resultados de las pruebas para el patrón 5 nos presentan el siguiente informe walk-forward:

Tendencia SAR con retroceso del RVI
Nuestro séptimo patrón es una señal de reversión de compresión de volatilidad que intenta identificar zonas de rechazo de precios donde la presión del SAR es constante y el impulso del RVI está congestionado o es débil. La lógica de la condición de compra es que si el máximo de la barra anterior está por debajo o es igual al SAR anterior, lo que significa que el precio estaba por debajo de la resistencia del SAR, pero ahora el SAR actual está por debajo o es igual al precio mínimo actual; una señal de que el SAR ha caído y ahora está sirviendo como soporte. Esto ocurriría con un valor de RVI cercano a cero, lo que indicaría un impulso bajo o neutro. Un valor RVI cercano a cero suele ser señal de que el mercado se está preparando para una posible ruptura. Implementamos esto en MQL5 de la siguiente manera:
//+------------------------------------------------------------------+ //| Check for Pattern 6. | //+------------------------------------------------------------------+ bool CSignalSAR_RVI::IsPattern_6(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && Low(X() + 1) > SAR(X() + 1) && SAR(X()) < Low(X()) && RVI_UP(X())) { return(true); } else if(T == POSITION_TYPE_SELL && High(X() + 1) < SAR(X() + 1) && SAR(X()) > High(X()) && RVI_DN(X())) { return(true); } return(false); }
La lógica de la condición de venta para nuestro séptimo patrón se basa en que el mínimo de la barra anterior esté por encima o sea igual al SAR anterior, una señal de que el precio estaba en la posición de soporte. A continuación, el SAR actual cambia de valor para situarse por encima o igual al máximo actual a medida que el SAR sube por encima del precio. El RVI estaría cerca de cero con un impulso bajo o en declive justo antes de una reversión.
El objetivo de utilizar el filtro RVI con un tamaño de punto determinado es que actúe como un filtro de supresión de volatilidad. Esto ayuda a marcar la fase de impulso tranquilo que suele producirse justo antes de una ruptura o un cambio de tendencia. El objetivo estratégico de este patrón es atenuar la dirección anterior durante una fase de compresión en la que el SAR intenta revertirse y el RVI aún no tiene una dirección definida; por lo tanto, se trata de una condición de borde de contratendencia.
Los casos de uso ideales para el séptimo patrón se dan en mercados laterales, especialmente cerca de áreas clave de soporte/resistencia. Debe evitarse en condiciones de fuerte tendencia alcista. Se puede combinar con lógica de ruptura. Además, es importante controlar el spread y los valores de los pips, ya que este patrón es sensible a ellos. El uso de filtros por hora del día también puede mejorar el rendimiento de este patrón. Las pruebas realizadas para nuestro séptimo patrón nos proporcionan el siguiente informe, que indica que no superó la prueba walk-forward:


Tendencia SAR con formación doble de RVI
Nuestro octavo patrón, el patrón-7, está diseñado para detectar entradas de ruptura basadas en el impulso que se confirman mediante múltiples señales RVI ascendentes/descendentes después de un posicionamiento SAR. Busca una continuación de la tendencia tras una ruptura del impulso. Normalmente, se trata de un cambio de rechazo de precios a una direccionalidad que se confirma. Las condiciones de compra se dan cuando el mínimo de la vela anterior está por encima del SAR, lo que sugiere que el precio se mantiene por encima del soporte del SAR; seguido de que el SAR actual también se mantenga por debajo del mínimo del precio, lo que confirma que el SAR está siguiendo al precio. Habríamos tenido dos cambios al alza del RVI dentro de un intervalo que no exceda el período de entrada del indicador. En el caso de la señal alcista, esto equivale a un reciente doble suelo. Implementamos esto en MQL5 de la siguiente manera:
//+------------------------------------------------------------------+ //| Check for Pattern 7. | //+------------------------------------------------------------------+ bool CSignalSAR_RVI::IsPattern_7(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && High(X() + 1) <= SAR(X() + 1) && SAR(X()) <= Low(X()) && fabs(RVI(X())) <= 250.0 * m_symbol.Point()) { return(true); } else if(T == POSITION_TYPE_SELL && Low(X() + 1) >= SAR(X() + 1) && SAR(X()) >= High(X()) && fabs(RVI(X())) <= 250.0 * m_symbol.Point()) { return(true); } return(false); }
La condición de venta se da, por el contrario, cuando el máximo anterior de la vela estuvo por debajo del SAR, una señal de que el precio está por debajo de la resistencia del SAR. A continuación, el SAR actual se mantiene por debajo del SAR con dos cruces de caída del RVI recientes dentro de la duración del período del indicador. El objetivo de la lógica de doble confirmación es filtrar los falsos comienzos y los impulsos débiles. Introduce un aspecto de confirmación diferida, una forma de filtrado de impulso, que garantiza una mejor calidad de la tendencia. Además, en el contexto de riesgo-recompensa, dado que este patrón busca un doble suelo o un doble techo en el RVI, dentro del período del indicador RVI, esto sugiere que las entradas solo se realizan si el impulso continúa, lo cual es una buena medida de seguridad. Las pruebas realizadas con este patrón-7 nos presentan el siguiente informe que avanzó:

Aceleración SAR con pico RVI
Nuestro noveno patrón, el patrón 8, busca la confirmación de la aceleración tanto por la distancia entre el precio y el SAR como por el impulso del RVI. Evalúa si la diferencia entre el precio y el SAR se está ampliando. Esto suele servir como indicador indirecto de la fuerza de la tendencia, al tiempo que garantiza que el impulso del RVI también se mantenga en la misma dirección. La lógica de compra se basa en que el mínimo esté por encima del SAR durante las últimas 2 barras y la brecha entre este mínimo y el SAR se esté ampliando, junto con cambios crecientes en el RVI al alza. Esto se codifica en MQL5 de la siguiente manera:
//+------------------------------------------------------------------+ //| Check for Pattern 8. | //+------------------------------------------------------------------+ bool CSignalSAR_RVI::IsPattern_8(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && Low(X() + 1) > SAR(X() + 1) && SAR(X()) < Low(X()) && RVI_UP(X())) { bool _double = false; for(int i = X() + 1; i < X() + __PERIOD + 1; i++) { if(RVI_UP(i)) { _double = true; break; } } return(_double); } else if(T == POSITION_TYPE_SELL && High(X() + 1) < SAR(X() + 1) && SAR(X()) > High(X()) && RVI_DN(X())) { bool _double = false; for(int i = X() + 1; i < X() + __PERIOD + 1; i++) { if(RVI_DN(i)) { _double = true; break; } } return(_double); } return(false); }
La lógica de venta es similar: dos barras sucesivas del SAR por encima del precio máximo, con esta brecha entre el SAR y el precio máximo en la expansión. Esto también ocurriría cuando los cambios en el RVI aumentan a la baja, una forma de aceleración bajista. El uso de diferencias RVI de segundo orden captura un comportamiento similar al de la segunda derivada. Esto apunta a una curva convexa o a un impulso creciente, no solo al impulso actual.
Este patrón evita los cruces básicos, como en el patrón 7. No utiliza eventos de cruce, sino que aprovecha la tasa de cambio, lo que puede reducir el ruido de las reversiones rápidas. También parte de la premisa de que el impulso se expande con el precio, lo cual es su filosofía central. En otras palabras, el impulso debe aumentar cuando el precio también indica una ruptura direccional. Los resultados de nuestras pruebas para este patrón son los siguientes y tenemos una prueba walk-forward positiva:

Conclusión
Con esto concluimos nuestro primer análisis de los patrones del SAR parabólico y del Índice de vigor relativo. No hemos tratado el patrón 9, el décimo patrón, ya que el artículo se estaba volviendo demasiado extenso. El código fuente completo de los 10 patrones se adjunta a continuación; los lectores tienen la libertad de examinarlo y realizar las modificaciones necesarias. El código está pensado para utilizarse con el asistente de MQL5; para los nuevos lectores, pueden encontrar instrucciones aquí quienes las necesiten. En el próximo artículo, donde buscaremos complementar estos patrones de señales con significado supervisado, nos centraremos en los patrones que no pudieron avanzar con éxito.
| Nombre | Descripción |
|---|---|
| WZ-69.mq5 | Asesor experto creado con el asistente, cuyo encabezado indica los archivos utilizados. |
| SignalWZ-69.mqh | Archivo de clase de señal personalizado que utiliza el asistente de MQL5 para ensamblar el asesor experto. |
Traducción del inglés realizada por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/en/articles/18399
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
Introducción a MQL5 (Parte 23): Automatización de la estrategia de ruptura del rango de apertura (ORB)
Particularidades del trabajo con números del tipo double en MQL4
Aprendizaje automático y Data Science (Parte 43): Detección de patrones ocultos en datos de indicadores con modelos de mezcla gaussiana latente (LGMM)
- 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