El Rainbow Oscillator es un indicador de análisis técnico único que utiliza múltiples medias móviles suavizadas para identificar niveles de soporte y resistencia, así como puntos de reversión potenciales del mercado. Este blog explora cómo se implementa el Rainbow Oscillator mediante un script en Lua en la plataforma de trading IQ Option, detallando su configuración, funcionalidad y cómo los traders pueden utilizar esta herramienta para capturar tendencias y movimientos de mercado.
¿Qué es el Rainbow Oscillator?
El Rainbow Oscillator es una extensión del concepto de medias móviles. Se construye aplicando múltiples medias móviles de un período determinado, cada una aplicada a la anterior, para formar una «banda» o «arcoíris» que ayuda a suavizar la acción del precio y a destacar la dirección de la tendencia. El objetivo es utilizar estas múltiples capas de suavizado para identificar zonas donde el precio puede estar sobreextendido y listo para revertir.
Configuración del Script en IQ Option
El script para el Rainbow Oscillator comienza con la definición del instrumento y establece el período de cálculo y la mirada retrospectiva para los máximos y mínimos:
luaCopiar códigoinstrument { name = "Rainbow Oscillator" }
period = input (2, "front.period", input.integer, 1)
hh_period = input (10, "HH/LL Loockback", input.integer, 1)
source = input (1, "front.ind.source", input.string_selection, inputs.titles)
Este bloque inicial configura el nombre del indicador y permite al usuario elegir el número de barras para calcular las medias móviles y para determinar los máximos y mínimos, ofreciendo flexibilidad para adaptarse a diferentes condiciones de mercado.
Configuración Visual y Funcional del Indicador
El Rainbow Oscillator en IQ Option incluye configuraciones para personalizar la apariencia del indicador:
luaCopiar códigoinput_group {
"front.newind.barcolors",
up_color = input { default = "#2CAC40", type = input.color },
down_color = input { default = "#DB4931", type = input.color }
}
input_group {
"front.newind.lines",
line_up_color = input { default = "#25E154", type = input.color },
line_down_color = input { default = "#FF6C58", type = input.color },
line_width = input { default = 1, type = input.line_width }
}
Estas configuraciones definen los colores y el grosor de las líneas y las barras del oscilador, así como las áreas de llenado, facilitando la identificación visual de las señales del indicador.
Cálculo del Rainbow Oscillator
El Rainbow Oscillator se calcula utilizando una serie de medias móviles y comparándolas con los máximos y mínimos del periodo de retrospectiva:
luaCopiar códigoma1 = sma (source_series, period)
...
ma10 = sma (ma9, period)
hh = highest (source_series, hh_period)
ll = lowest (source_series, hh_period)
hhma = max (ma1, max (ma2, max (ma3, max (ma4, max (ma5, max (ma6, max (ma7, max (ma8, max (ma9, ma10)))))))))
llma = min (ma1, min (ma2, min (ma3, min (ma4, min (ma5, min (ma6, min (ma7, min (ma8, min (ma9, ma10)))))))))
rb = 100 * (hhma - llma) / (hh - ll)
Esta metodología proporciona una medida precisa de la relación entre las medias móviles y los extremos del mercado, lo que ayuda a evaluar la posibilidad de reversiones del mercado.
¿Cómo Funciona y Para Qué Sirve?
El Rainbow Oscillator es útil para identificar áreas de sobrecompra y sobreventa, así como para señalar momentos en los que la tendencia podría estar cambiando. Las «bandas» creadas por las múltiples medias móviles ayudan a visualizar la fuerza de la tendencia y las posibles zonas de inversión.
Conclusión
El Rainbow Oscillator en IQ Option es una herramienta de análisis técnico avanzada que ofrece a los traders una manera eficaz de evaluar las tendencias del mercado y las posibles reversiones. Con su enfoque en medias móviles múltiples y su capacidad para proporcionar una vista holística de la acción del precio, el Rainbow Oscillator puede ser una adición valiosa a cualquier estrategia de trading, proporcionando señales claras para manejar entradas y salidas con mayor precisión y confianza.
Script Completo
instrument { name = "Rainbow Oscillator" }
period = input (2, "front.period", input.integer, 1)
hh_period = input (10, "HH/LL Loockback", input.integer, 1)
source = input (1, "front.ind.source", input.string_selection, inputs.titles)
input_group {
"front.newind.barcolors",
up_color = input { default = "#2CAC40", type = input.color },
down_color = input { default = "#DB4931", type = input.color }
}
input_group {
"front.newind.lines",
line_up_color = input { default = "#25E154", type = input.color },
line_down_color = input { default = "#FF6C58", type = input.color },
line_width = input { default = 1, type = input.line_width }
}
input_group {
"front.newind.adx.fill",
fill_up_color = input { default = rgba(37,225,84,0.2), type = input.color },
fill_down_color = input { default = rgba(255,108,88,0.2), type = input.color }
}
input_group {
"front.platform.baseline",
zero_color = input { default = rgba(255,255,255,0.15), type = input.color },
zero_width = input { default = 1, type = input.line_width },
zero_visible = input { default = true, type = input.plot_visibility }
}
local source_series = inputs [source]
ma1 = sma (source_series, period)
ma2 = sma (ma1, period)
ma3 = sma (ma2, period)
ma4 = sma (ma3, period)
ma5 = sma (ma4, period)
ma6 = sma (ma5, period)
ma7 = sma (ma6, period)
ma8 = sma (ma7, period)
ma9 = sma (ma8, period)
ma10 = sma (ma9, period)
hh = highest (source_series, hh_period)
ll = lowest (source_series, hh_period)
hhma = max (ma1, max (ma2, max (ma3, max (ma4, max (ma5, max (ma6, max (ma7, max (ma8, max (ma9, ma10)))))))))
llma = min (ma1, min (ma2, min (ma3, min (ma4, min (ma5, min (ma6, min (ma7, min (ma8, min (ma9, ma10)))))))))
rb = 100 * (hhma - llma) / (hh - ll)
rbo = 100 * (source_series - (ma1 + ma2 + ma3 + ma4 + ma5 + ma6 + ma7 + ma8 + ma9 + ma10) / 10) / (hh - ll)
fill (-rb, 0, "", fill_down_color)
fill (0, rb, "", fill_up_color)
plot ( rb, "", line_up_color, line_width)
plot (-rb, "", line_down_color, line_width)
if zero_visible then
hline (0, "", zero_color, zero_width)
end
rect {
first = 0,
second = rbo,
color = rbo >= 0 and up_color or down_color,
width = 0.7
}