Script Envelopes para IQ Option

Desentrañando el Indicador Envelopes en Lua

El indicador Envelopes es una herramienta utilizada en el análisis técnico que traza líneas por encima y por debajo de una media móvil para crear un rango de precios. A continuación, analizamos un script en Lua que implementa el indicador Envelopes, explicando cada parte del código para que puedas entender su funcionamiento.

Introducción al Script

El script comienza definiendo el instrumento y algunas propiedades básicas:

instrument { name = "Envelopes", overlay = true }

Aquí se define el nombre del indicador y se especifica que debe superponerse al gráfico de precios.

Configuración de los Parámetros

El script define varios parámetros necesarios para el cálculo del indicador Envelopes. Estos parámetros se configuran utilizando la función input:

period = input (15, "front.period", input.integer, 1)
deviation = input (10, "front.deviation", input.double, 0.01, 300, 0.01)

source = input (1, "front.ind.source", input.string_selection, inputs.titles_overlay)
fn     = input (1, "front.newind.average", input.string_selection, averages.titles)
  • period: El periodo de tiempo utilizado para el cálculo de la media móvil (por defecto 15, con un mínimo de 1).
  • deviation: La desviación utilizada para calcular las líneas superior e inferior (por defecto 10, rango de 0.01 a 300 con incrementos de 0.01).
  • source: La fuente de datos para el cálculo de la media móvil (por defecto 1, seleccionable de una lista de fuentes).
  • fn: La función de media móvil a utilizar (por defecto 1, seleccionable de una lista de funciones de media).

Configuración de las Líneas del Indicador

El script permite configurar la visibilidad, el color y el grosor de las líneas superior, media e inferior:

Línea Superior
input_group {
    "front.top line",
    upper_line_visible = input { default = true, type = input.plot_visibility },
    upper_line_color   = input { default = "#2384C2", type = input.color },
    upper_line_width   = input { default = 1, type = input.line_width }
}
  • upper_line_visible: Visibilidad de la línea superior (visible por defecto).
  • upper_line_color: Color de la línea superior (azul oscuro por defecto).
  • upper_line_width: Grosor de la línea superior (1 por defecto).
Línea Media
input_group {
    "front.middle line",
    middle_line_visible = input { default = true, type = input.plot_visibility },
    middle_line_color   = input { default = "#FF7700", type = input.color },
    middle_line_width   = input { default = 1, type = input.line_width }
}
  • middle_line_visible: Visibilidad de la línea media (visible por defecto).
  • middle_line_color: Color de la línea media (naranja por defecto).
  • middle_line_width: Grosor de la línea media (1 por defecto).
Línea Inferior
input_group {
    "front.bottom line",
    lower_line_visible = input { default = true, type = input.plot_visibility },
    lower_line_color   = input { default = "#2384C2", type = input.color },
    lower_line_width   = input { default = 1, type = input.line_width }
}
  • lower_line_visible: Visibilidad de la línea inferior (visible por defecto).
  • lower_line_color: Color de la línea inferior (azul oscuro por defecto).
  • lower_line_width: Grosor de la línea inferior (1 por defecto).
Relleno entre Líneas
input_group {
    "front.newind.adx.fill",
    fill_visible = input { default = true, type = input.plot_visibility },
    fill_color   = input { default = rgba(86,206,255,0.15), type = input.color },
}
  • fill_visible: Visibilidad del relleno entre las líneas superior e inferior (visible por defecto).
  • fill_color: Color del relleno (azul claro con transparencia por defecto).

Fuente de Datos y Función de Media

El script obtiene la serie de datos de la fuente seleccionada y la función de media seleccionada:

local sourceSeries = inputs[source]
local averageFunction = averages[fn]

Cálculo de las Líneas Envelopes

El script calcula la línea media, y las líneas superior e inferior basadas en la desviación especificada:

middle = averageFunction(sourceSeries, period)
offset = deviation / 1000 * middle

upper = middle + offset
lower = middle - offset
  • middle: Calcula la media móvil utilizando la serie de datos y el periodo especificado.
  • offset: Calcula la desviación utilizando el valor especificado y la media móvil calculada.
  • upper: Calcula la línea superior sumando la desviación a la media móvil.
  • lower: Calcula la línea inferior restando la desviación a la media móvil.

Plotting

Finalmente, el script dibuja el indicador en el gráfico:

Relleno
if fill_visible then
    fill { first = upper, second = lower, color = fill_color }
end
  • Dibuja el área rellena entre las líneas superior e inferior si el relleno está habilitado.
Línea Superior
if upper_line_visible then
    plot(upper, "front.top line", upper_line_color, upper_line_width)
end
  • Dibuja la línea superior si está habilitada.
Línea Inferior
if lower_line_visible then
    plot(lower, "front.bottom line", lower_line_color, lower_line_width)
end
  • Dibuja la línea inferior si está habilitada.
Línea Media
if middle_line_visible then
    plot(middle, "front.middle line", middle_line_color, middle_line_width)
end
  • Dibuja la línea media si está habilitada.

Conclusión

Este script en Lua configura y dibuja el indicador Envelopes en un gráfico de precios, permitiendo personalizar los parámetros del periodo, la desviación, la visibilidad, el color y el grosor de las líneas superior, media e inferior, así como el relleno entre las líneas. El indicador Envelopes es útil para identificar rangos de precios y potenciales puntos de reversión, proporcionando una visión clara de los límites dentro de los cuales el precio tiende a moverse.

instrument { name = "Envelopes", overlay = true }

period = input (15, "front.period", input.integer, 1)
deviation = input (10, "front.deviation", input.double, 0.01, 300, 0.01)

source = input (1, "front.ind.source", input.string_selection, inputs.titles_overlay)
fn = input (1, "front.newind.average", input.string_selection, averages.titles)

input_group {
"front.top line",
upper_line_visible = input { default = true, type = input.plot_visibility },
upper_line_color = input { default = "#2384C2", type = input.color },
upper_line_width = input { default = 1, type = input.line_width }
}

input_group {
"front.middle line",
middle_line_visible = input { default = true, type = input.plot_visibility },
middle_line_color = input { default = "#FF7700", type = input.color },
middle_line_width = input { default = 1, type = input.line_width }
}

input_group {
"front.bottom line",
lower_line_visible = input { default = true, type = input.plot_visibility },
lower_line_color = input { default = "#2384C2", type = input.color },
lower_line_width = input { default = 1, type = input.line_width }
}

input_group {
"front.newind.adx.fill",
fill_visible = input { default = true, type = input.plot_visibility },
fill_color = input { default = rgba(86,206,255,0.15), type = input.color },
}

local sourceSeries = inputs [source]
local averageFunction = averages [fn]

middle = averageFunction (sourceSeries, period)
offset = deviation / 1000 * middle

upper = middle + offset
lower = middle - offset

if fill_visible then
fill { first = upper, second = lower, color = fill_color }
end

if upper_line_visible then
plot (upper, "front.top line", upper_line_color, upper_line_width)
end

if lower_line_visible then
plot (lower, "front.bottom line", lower_line_color, lower_line_width)
end

if middle_line_visible then
plot (middle, "front.middle line", middle_line_color, middle_line_width)
end
Carrito de compra
Scroll al inicio
Telegram