//version=5
indicator('Zonas Horarias y Zig Zag Combinados', shorttitle='ZHZC', overlay=true, max_lines_count=500, max_labels_count=500)

// Definir el tipo de datos para utc_offset
var int utc_offset = na

// Configuración de la zona horaria local
zona_horaria = input.string('Asia', title='Zona Horaria Local', options=['Asia', 'Londres', 'New York', 'Australia'])

// Convertir la zona horaria a desfase horario en minutos
if zona_horaria == 'Asia'
utc_offset := 9 * 60
if zona_horaria == 'Londres'
utc_offset := 5 * 60
if zona_horaria == 'New York'
utc_offset := -5 * 60
if zona_horaria == 'Australia'
utc_offset := 11 * 60

// Configuración de la zona horaria de Asia
inicioAsia = 19
finAsia = 5
colorAsia = input.color(color.yellow, title="Color de fondo para Asia")

// Configuración de la zona horaria de Londres
inicioLondres = 3
finLondres = 13
colorLondres = input.color(color.black, title="Color de fondo para Londres")

// Configuración de la zona horaria de New York
inicioNewYork = 7
finNewYork = 13
colorNewYork = input.color(color.rgb(56, 54, 165), title="Color de fondo para New York")

// Configuración de la zona horaria de Australia
inicioAustralia = 17
finAustralia = 2
colorAustralia = input.color(color.red, title="Color de fondo para Australia")

// Configuración de la sesión personalizada
s = '0100-0101'
t1 = time('1440', s) != 0
colorSesion = input.color(color.white, title="Color de fondo para la sesión personalizada")

// Obtener la hora actual en la zona horaria local
hora_local = hour(time, timezone="UTC") + minute(time, timezone="UTC") / 60 + utc_offset / 60

// Resaltar el fondo para la zona horaria de Londres
bgcolor(hora_local >= inicioLondres and hora_local < finLondres ? colorLondres : na)

// Resaltar el fondo para la zona horaria de Asia
bgcolor(hora_local >= inicioAsia or hora_local < finAsia ? colorAsia : na)

// Resaltar el fondo para la zona horaria de New York
bgcolor(hora_local >= inicioNewYork and hora_local < finNewYork ? colorNewYork : na)

// Resaltar el fondo para la zona horaria de Australia
bgcolor(hora_local >= inicioAustralia or hora_local < finAustralia ? colorAustralia : na)

// Resaltar el fondo para la sesión personalizada
bgcolor(t1 ? colorSesion : na)


// Importar la biblioteca Zig Zag
import TradingView/ZigZag/7 as ZigZagLib

// Crear instancia de Zig Zag desde la configuración del usuario.
var zigZag = ZigZagLib.newInstance(
ZigZagLib.Settings.new(
input.float(0.12, "Desviación de precio para reversión (%)", 0.00001, 100.0, 0.5, "0.00001 - 100"),
input.int(5, "Piernas de pivote", 2),
input.color(#2962FF, title="Color de la línea Zig Zag"),
input(true, "Extender a la última barra", display = display.data_window),
input(true, "Mostrar precio de reversión", display = display.data_window),
input(true, "Mostrar volumen acumulativo", display = display.data_window),
input(true, "Mostrar cambio de precio de reversión", inline = "priceRev", display = display.data_window),
input.string("Absoluto", "", ["Absoluto", "Porcentaje"], inline = "priceRev", display = display.data_window),
true)
)

// Actualizar el objeto 'zigZag' en cada barra con nuevos pivotes, volumen, líneas, etiquetas.
zigZag.update()
Technical Indicators

Penafian