El “Divergence Indicator” es una herramienta sofisticada de análisis técnico utilizada para identificar divergencias entre el precio de un activo y un oscilador subyacente, lo que puede indicar posibles reversiones de tendencia en el mercado. Este blog explora cómo se construye el indicador de divergencia mediante un script en Lua en la plataforma de trading IQ Option, su funcionamiento y su utilidad para los traders.
¿Qué es una Divergencia?
Una divergencia ocurre cuando la dirección de un indicador técnico (como el RSI, MACD, etc.) y la dirección del precio del activo se mueven en direcciones opuestas. Este fenómeno puede ser un indicador potente de que la tendencia actual del mercado está perdiendo fuerza y que podría estar próxima una reversión.
Configuración del Script del Indicador de Divergencia
El script para el indicador de divergencia comienza definiendo el instrumento y ajustando los parámetros clave como el período del oscilador y la fuente de datos del precio:
luaCopiar códigoinstrument { name="Divergence Indicator" }
ma_period = input (14, "front.period", input.integer, 1)
src_idx = input (inputs.close, "front.ind.source", input.string_selection, inputs.titles)
Estos bloques permiten a los usuarios personalizar el período del oscilador y seleccionar de qué datos de precios (cierre, apertura, etc.) se calculará la divergencia.
Configuración Visual y Parámetros de Divergencia
El script incluye opciones para configurar los colores y las señales de divergencia bullish (alcista) y bearish (bajista):
luaCopiar códigoinput_group {
"front.ind.dpo.generalline",
color = input { default = "#56CEFF", type = input.color },
width = input { default = 1, type = input.line_width}
}
Estas configuraciones visualizan las líneas del oscilador y las áreas donde se detectan divergencias, mejorando la claridad y la capacidad de respuesta del indicador en el gráfico de trading.
Cálculo de Divergencias
El indicador calcula las divergencias comparando los máximos y mínimos de los precios con los valores correspondientes del oscilador seleccionado (en este caso, el RSI):
luaCopiar códigoosc = rsi (inputs [src_idx], ma_period)
-- Código para calcular y visualizar divergencias bullish y bearish
El script busca puntos donde los precios forman nuevos máximos o mínimos que no son confirmados por el oscilador, indicando divergencias que pueden ser señales de posibles reversiones del mercado.
Visualización de Señales de Divergencia
Las señales de divergencia se visualizan en el gráfico mediante rectángulos coloreados, que ayudan a los traders a identificar rápidamente momentos críticos donde el comportamiento del precio y del oscilador no están alineados:
luaCopiar códigoif bullishNSig then
rect {
first = 0,
second = 1,
color = bullish_n_color,
width = 0.6
}
end
if bearishNSig then
rect {
first = 0,
second = 1,
color = bearish_n_color,
width = 0.6
}
end
¿Cómo Funciona y Para Qué Sirve?
El indicador de divergencia es especialmente útil en estrategias de trading que buscan maximizar el timing de entrada y salida en el mercado. Al proporcionar una señal visual cuando el precio de un activo y un oscilador se desalinean, este indicador ayuda a los traders a anticipar posibles reversiones antes de que se materialicen completamente en el mercado.
Conclusión
El “Divergence Indicator” en IQ Option es una herramienta avanzada de análisis técnico que ofrece a los traders una manera poderosa de detectar cambios potenciales en las tendencias del mercado. Con su enfoque en las divergencias entre el precio y los osciladores, este indicador puede ser una adición valiosa a cualquier estrategia de trading, proporcionando una ventaja competitiva en la identificación de oportunidades de trading basadas en reversiones anticipadas del mercado.
Script Completo
instrument { name="Divergence Indicator" }
ma_period = input (14, "front.period", input.integer, 1)
src_idx = input (inputs.close, "front.ind.source", input.string_selection, inputs.titles)
bullish_n_color = input ("#2CAC40", "front.newind.divergence.normalbullish", input.color)
bullish_h_color = input ("#2CAC40", "front.newind.divergence.hiddenbullish", input.color)
bearish_n_color = input ("#DB4931", "front.newind.divergence.normalbearish", input.color)
bearish_h_color = input ("#DB4931", "front.newind.divergence.hiddenbearish", input.color)
osc = rsi (inputs [src_idx], ma_period)
-- Bullish
bullishPrice = low
priceMins = bullishPrice > bullishPrice[1] and bullishPrice[1] < bullishPrice[2]
priceRightMin = value_when(priceMins, bullishPrice[1], 0)
priceLeftMin = value_when(priceMins, bullishPrice[1], 1)
oscRightMin = value_when(priceMins, osc[1], 0)
oscLeftMin = value_when(priceMins, osc[1], 1)
bullishNDiv = conditional (priceLeftMin > priceRightMin and oscLeftMin < oscRightMin)
bullishHDiv = conditional (priceLeftMin < priceRightMin and oscLeftMin > oscRightMin)
bullishNSig = get_value (bullishNDiv) and (not get_value (bullishNDiv[1])) and (bullishPrice[1] < bullishPrice)
bullishHSig = get_value (bullishHDiv) and (not get_value (bullishHDiv[1])) and (bullishPrice[1] > bullishPrice)
if bullishNSig then
rect {
first = 0,
second = 1,
color = bullish_n_color,
width = 0.6
}
end
if bullishHSig then
rect {
first = 0,
second = 1,
color = bullish_h_color,
width = 0.2
}
end
-- Bearish
bearishPrice = high
priceMaxs = bearishPrice < bearishPrice[1] and bearishPrice[1] > bearishPrice[2]
priceRightMax = value_when(priceMaxs, bearishPrice[1], 0)
priceLeftMax = value_when(priceMaxs, bearishPrice[1], 1)
oscRightMax = value_when(priceMaxs, osc[1], 0)
oscLeftMax = value_when(priceMaxs, osc[1], 1)
bearishNDiv = conditional (priceLeftMax < priceRightMax and oscLeftMax > oscRightMax)
bearishHDiv = conditional (priceLeftMax > priceRightMax and oscLeftMax < oscRightMax)
bearishNSig = get_value (bearishNDiv) and not get_value (bearishNDiv[1]) and bearishPrice[1] < bearishPrice
bearishHSig = get_value (bearishHDiv) and not get_value (bearishHDiv[1]) and bearishPrice[1] > bearishPrice
if bearishNSig then
rect {
first = 0,
second = 1,
color = bearish_n_color,
width = 0.6
}
end
if bearishHSig then
rect {
first = 0,
second = 1,
color = bearish_h_color,
width = 0.2
}
end