Script Indicador ZigZag para Puntos de Reversión

Script Indicador ZigZag para Puntos de Reversión

El indicador ZigZag es una herramienta popular en el análisis técnico que se utiliza para identificar puntos de reversión significativos en los movimientos de precios de un activo. Este indicador simplifica la acción del precio al filtrar el «ruido» del mercado y destacar las tendencias subyacentes. A continuación, se presenta una explicación detallada del script ZigZag.

Configuración Inicial del Script

El script comienza definiendo el nombre del instrumento y los parámetros de entrada necesarios para calcular el ZigZag.

luaCopiar códigoinstrument { name = "ZigZag", overlay = true }

percentage = input (1, "Percentage", input.double, 0.01, 100, 1.0) / 100
period = 3

input_group {
    "front.ind.dpo.generalline",
    up_color = input { default = "#FF7700", type = input.color },
    down_color = input { default = "#57A1D0", type = input.color },
    width = input { default = 1, type = input.line_width }
}
  • percentage: El porcentaje de reversión necesario para que el indicador ZigZag marque un nuevo punto.
  • period: Período de tiempo que el indicador utilizará para calcular los cambios de precio (en este caso, es constante en 3).
  • up_color: Color para las líneas ZigZag que indican una tendencia alcista.
  • down_color: Color para las líneas ZigZag que indican una tendencia bajista.
  • width: Grosor de las líneas ZigZag.

Series y Variables Locales

El script crea varias series y variables locales para rastrear los valores de referencia y determinar la dirección de la tendencia.

luaCopiar códigolocal reference = make_series ()
reference:set(nz(reference[1], high))

local is_direction_up = make_series ()
is_direction_up:set(nz(is_direction_up[1], true))

local htrack = make_series ()
local ltrack = make_series ()

local pivot = make_series ()

reverse_range = reference * percentage / 100
  • reference: Serie que almacena el valor de referencia para el cálculo del ZigZag.
  • is_direction_up: Serie que determina la dirección actual de la tendencia.
  • htrack: Serie que rastrea el valor más alto durante una tendencia alcista.
  • ltrack: Serie que rastrea el valor más bajo durante una tendencia bajista.
  • pivot: Serie que almacena los puntos de reversión del ZigZag.
  • reverse_range: Rango de reversión basado en el porcentaje definido por el usuario.

Lógica de Cálculo del ZigZag

El siguiente bloque de código determina si el precio ha alcanzado un punto de reversión, actualizando las series en consecuencia.

luaCopiar códigoif get_value (is_direction_up) then
    htrack:set (max(high, nz(htrack[1], high)))

    if close < htrack[1] - reverse_range then
        pivot:set (htrack)
        is_direction_up:set (false)
        reference:set(htrack)
    end
else
    ltrack:set (min(low, nz(ltrack[1], low)))

    if close > ltrack[1] + reverse_range then
        pivot:set (ltrack)
        is_direction_up:set(true)
        reference:set (ltrack)
    end
end
  • is_direction_up: Si la dirección es alcista, actualiza htrack con el valor más alto. Si el precio de cierre es menor que htrack menos el rango de reversión, marca un punto de pivote y cambia la dirección a bajista.
  • else: Si la dirección es bajista, actualiza ltrack con el valor más bajo. Si el precio de cierre es mayor que ltrack más el rango de reversión, marca un punto de pivote y cambia la dirección a alcista.

Visualización del ZigZag

Finalmente, el script dibuja el ZigZag en el gráfico.

luaCopiar códigocolor = is_direction_up() and  up_color or down_color
plot(pivot, 'ZZ', color, width, -1, style.solid_line, na_mode.continue)
  • color: Determina el color de la línea según la dirección de la tendencia.
  • plot: Dibuja el ZigZag en el gráfico con el color y el grosor especificados.

Conclusión

El indicador ZigZag es una herramienta eficaz para identificar y visualizar los puntos de reversión en un gráfico de precios. Al filtrar los movimientos menores del mercado, ayuda a los traders a enfocarse en las tendencias más significativas. Utiliza este indicador junto con otros análisis técnicos para obtener una perspectiva más clara de la dirección del mercado y tomar decisiones de trading informadas.

Script Completo

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

percentage = input (1, "Percentage", input.double, 0.01, 100, 1.0) / 100
period = 3

input_group {
"front.ind.dpo.generalline",
up_color = input { default = "#FF7700", type = input.color },
down_color = input { default = "#57A1D0", type = input.color },
width = input { default = 1, type = input.line_width }
}


local reference = make_series ()
reference:set(nz(reference[1], high))

local is_direction_up = make_series ()
is_direction_up:set(nz(is_direction_up[1], true))

local htrack = make_series ()
local ltrack = make_series ()

local pivot = make_series ()

reverse_range = reference * percentage / 100

if get_value (is_direction_up) then
htrack:set (max(high, nz(htrack[1], high)))

if close < htrack[1] - reverse_range then
pivot:set (htrack)
is_direction_up:set (false)
reference:set(htrack)
end
else
ltrack:set (min(low, nz(ltrack[1], low)))

if close > ltrack[1] + reverse_range then
pivot:set (ltrack)
is_direction_up:set(true)
reference:set (ltrack)
end
end

color = is_direction_up() and up_color or down_color
plot(pivot, 'ZZ', color, width, -1, style.solid_line, na_mode.continue)
Carrito de compra
Scroll al inicio
Telegram