Este código en MQL5 es un indicador personalizado diseñado para detectar y visualizar divergencias entre la acción del precio y el Oscilador Asombroso (AO). Las divergencias ocurren cuando el movimiento del precio y el movimiento del oscilador no están alineados, lo que a menudo señala posibles reversiones o continuaciones en el mercado. El indicador traza señales de compra/venta, un histograma del AO y líneas de tendencia para resaltar estas divergencias.


Características Clave del Indicador:
-
Detección de Divergencias:
- Detecta divergencias alcistas (el precio hace mínimos más bajos mientras que el AO hace mínimos más altos).
- Detecta divergencias bajistas (el precio hace máximos más altos mientras que el AO hace máximos más bajos).
-
Visualización:
- Flechas de Compra/Venta: Traza flechas en el gráfico para indicar señales potenciales de compra o venta basadas en las divergencias.
- Histograma: Muestra los valores del Oscilador Asombroso (AO) en forma de histograma.
- Líneas de Tendencia: Dibuja líneas de tendencia en el gráfico para resaltar las divergencias entre el precio y el AO.
-
Buffers Personalizados:
- Utiliza cuatro buffers para almacenar datos:
- BuyBuffer y SellBuffer para señales de compra/venta.
- HistogramBuffer para valores del AO.
- PointsCounterBuffer para rastrear puntos alineados para la confirmación de la divergencia.
- Utiliza cuatro buffers para almacenar datos:
-
Dibujo Dinámico de Líneas de Tendencia:
- Utiliza CChartObjectTrend para dibujar dinámicamente líneas de tendencia en el gráfico para el precio y el AO.
-
Verificación de Cruces:
- Incluye una función (CheckCrossing) para verificar si el precio o el AO cruzan una línea de tendencia, lo que ayuda a confirmar o invalidar una divergencia.
-
Interpolación:
- Utiliza interpolación lineal (CalculateIntermediateValue) para calcular valores intermedios entre dos puntos, que se utiliza para comprobar cruces.
Cómo Funciona:
-
Inicialización:
- La función OnInit() configura los buffers del indicador, asigna propiedades (por ejemplo, colores, estilos) e inicializa el manejador del Oscilador Asombroso (AO).
-
Cálculo Principal:
- La función OnCalculate() procesa los datos de precio y AO para detectar divergencias:
- Identifica mínimos (mínimos más bajos) y máximos (máximos más altos) tanto en el precio como en el AO.
- Verifica las divergencias comparando las tendencias del precio y el AO.
- Traza señales de compra/venta y dibuja líneas de tendencia cuando se confirma una divergencia.
- La función OnCalculate() procesa los datos de precio y AO para detectar divergencias:
-
Confirmación de Divergencia:
- Utiliza condiciones como IsBullishTrend e IsBearishTrend para confirmar las divergencias.
- Asegura que no haya cruces entre las líneas de tendencia del precio y del AO para validar la divergencia.
-
Actualizaciones Dinámicas:
- El indicador se actualiza dinámicamente con cada nueva barra, recalculando las divergencias y redibujando las líneas de tendencia según sea necesario.
Funciones Clave:
-
IsBottom() y IsTop():
- Detecta mínimos locales (bottoms) y máximos locales (tops) en un array (precio o AO).
-
CheckCrossing():
- Verifica si el precio o el AO cruzan una línea de tendencia, lo que puede invalidar una divergencia.
-
CalculateIntermediateValue():
- Calcula valores intermedios utilizando interpolación lineal para el análisis de líneas de tendencia.
-
AddUniqueCoordinates():
- Asegura que se añadan coordenadas únicas al array para el dibujo de líneas de tendencia.
-
TotalAligned():
- Cuenta el número de puntos alineados para confirmar la fuerza de la divergencia.
Uso:
- Este indicador es útil para traders que se basan en estrategias de divergencia para identificar posibles reversiones o continuaciones en el mercado.
- Proporciona pistas visuales (flechas, líneas de tendencia e histogramas) para ayudar a los traders a tomar decisiones informadas.
Escenario de Ejemplo:
- Si el precio está haciendo mínimos más bajos (bajista), pero el AO está haciendo mínimos más altos (alcista), se detecta una divergencia alcista. El indicador trazará una flecha de compra y dibujará líneas de tendencia para resaltar la divergencia.
- Por otro lado, si el precio está haciendo máximos más altos (alcista), pero el AO está haciendo máximos más bajos (bajista), se detecta una divergencia bajista. El indicador trazará una flecha de venta y dibujará las líneas de tendencia.
Detalles Técnicos:
- Plataforma: MetaTrader 5 (MT5).
- Idioma: MQL5.
- Dependencias: Utiliza el Oscilador Asombroso (iAO) para los cálculos.
- Objetos Personalizados: Utiliza CChartObjectTrend para dibujar líneas de tendencia y CArrayInt para gestionar arrays de coordenadas.
Este indicador es una herramienta poderosa para los traders que desean automatizar la detección y visualización de divergencias, ahorrando tiempo y mejorando la precisión en sus estrategias de trading.