0% found this document useful (0 votes)
8 views

Lineas Pruebas

Uploaded by

Rey
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views

Lineas Pruebas

Uploaded by

Rey
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 5

//@version=5

indicator("lineas", overlay=true, max_lines_count=500, max_labels_count=500,


max_boxes_count=500, max_bars_back=500)

// Definir parámetros para los colores de las franjas horarias


colorFranja1 = input.color(color.new(color.red, 90), "Color Franja 1 (01:00 -
02:45)")
colorFranja2 = input.color(color.new(color.blue, 90), "Color Franja 2 (03:00 -
06:00)")
colorFranja3 = input.color(color.new(color.green, 90), "Color Franja 3 (06:00 -
08:15)")
colorFranja4 = input.color(color.new(color.orange, 90), "Color Franja 4 (09:00 -
10:00)")
colorFranja5 = input.color(color.new(color.purple, 90), "Color Franja 5 (10:00 -
13:15)")

// Opción para habilitar ADAA y BDAA


enableADAA_BDAA = input.bool(true, "Habilitar ADAA y BDAA")
// Opción para habilitar la línea de medianoche
enableMidnightLine = input.bool(true, "Habilitar Línea de Medianoche")

// Obtener la hora y el minuto actual del servidor


currentHour = hour(time)
currentMinute = minute(time)

// Función para verificar si el tiempo actual está dentro de una franja horaria
específica
inTimeRange(startHour, startMinute, endHour, endMinute) =>
(currentHour > startHour or (currentHour == startHour and currentMinute >=
startMinute)) and (currentHour < endHour or (currentHour == endHour and
currentMinute <= endMinute))

// Dibujar franjas horarias


bgcolor(inTimeRange(1, 0, 2, 45) ? colorFranja1 : na)
bgcolor(inTimeRange(3, 0, 6, 0) ? colorFranja2 : na)
bgcolor(inTimeRange(6, 0, 8, 15) ? colorFranja3 : na)
bgcolor(inTimeRange(9, 0, 10, 0) ? colorFranja4 : na)
bgcolor(inTimeRange(10, 0, 13, 15) ? colorFranja5 : na)

// Línea de medianoche en el tiempo del servidor


var line midnightLine = na
var label midnightLabel = na
newDay = (year(time) != year(time[1]) or month(time) != month(time[1]) or
dayofmonth(time) != dayofmonth(time[1]))

if (newDay and currentHour == 0 and currentMinute == 0 and enableMidnightLine)


if (not na(midnightLine))
line.delete(midnightLine)
label.delete(midnightLabel)
// Dibujar la línea horizontal en el nivel de precio al inicio del día (00:00)
midnightLine := line.new(x1=bar_index, y1=open, x2=bar_index + 500, y2=open,
color=color.gray, width=2, xloc=xloc.bar_index, extend=extend.none)
midnightLabel := label.new(x=bar_index + 500, y=open, text="Midnight",
color=color.gray, textcolor=color.yellow, style=label.style_none, size=size.small,
yloc=yloc.price)

// Función para obtener el alto y bajo dentro de las franjas horarias de un día
completo
var float highOfDay = na
var float lowOfDay = na
var int highBarIndex = na
var int lowBarIndex = na

if inTimeRange(1, 0, 2, 45) or inTimeRange(3, 0, 6, 0) or inTimeRange(6, 0, 8, 15)


or inTimeRange(9, 0, 10, 0) or inTimeRange(10, 0, 13, 15)
if na(highOfDay) or high > highOfDay
highOfDay := high
highBarIndex := bar_index
if na(lowOfDay) or low < lowOfDay
lowOfDay := low
lowBarIndex := bar_index

// Inicializar variables para los altos y bajos de los últimos días


var float ADD = na
var float BDD = na
var float ADA = na
var float BDA = na
var float ADAA = na
var float BDAA = na

var int addBarIndex = na


var int bddBarIndex = na
var int adaBarIndex = na
var int bdaBarIndex = na
var int adaaBarIndex = na
var int bdaaBarIndex = na

// Variables para almacenar las líneas


var line addLine = na
var line bddLine = na
var line adaLine = na
var line bdaLine = na
var line adaaLine = na
var line bdaaLine = na

// Variables para almacenar las etiquetas


var label addLabel = na
var label bddLabel = na
var label adaLabel = na
var label bdaLabel = na
var label adaaLabel = na
var label bdaaLabel = na

// Variables para manejar los altos y bajos del viernes


var float fridayADD = na
var float fridayBDD = na
var int fridayAddBarIndex = na
var int fridayBddBarIndex = na

// Verificar si es lunes y usar los valores guardados del viernes


if (dayofweek(time) == dayofweek.monday and newDay)
if (not na(fridayADD))
ADD := fridayADD
addBarIndex := fridayAddBarIndex
if (not na(fridayBDD))
BDD := fridayBDD
bddBarIndex := fridayBddBarIndex
// Solo ejecutar el siguiente bloque en la temporalidad de 5 minutos
if (timeframe.isintraday and timeframe.multiplier == 5)
// Actualizar altos y bajos a las 17:00
if (currentHour == 17 and currentMinute == 0)
// Guardar los altos y bajos del viernes
if (dayofweek(time[1]) == dayofweek.friday)
fridayADD := highOfDay
fridayBDD := lowOfDay
fridayAddBarIndex := highBarIndex
fridayBddBarIndex := lowBarIndex

// Actualizar las variables de los días previos


BDAA := BDA
ADAA := ADA
BDA := BDD
ADA := ADD
BDD := lowOfDay
ADD := highOfDay

adaaBarIndex := adaBarIndex
bdaaBarIndex := bdaBarIndex
adaBarIndex := addBarIndex
bdaBarIndex := bddBarIndex
addBarIndex := highBarIndex
bddBarIndex := lowBarIndex

// Reiniciar las variables para el nuevo día


highOfDay := na
lowOfDay := na
highBarIndex := na
lowBarIndex := na

// Función para obtener y mostrar los datos de la temporalidad de 5 minutos


getLineData(resolution, highValue, lowValue, barTime) =>
[request.security(syminfo.tickerid, resolution, highValue[1]),
request.security(syminfo.tickerid, resolution, lowValue[1]),
request.security(syminfo.tickerid, resolution, barTime[1])]

[addHigh, addLow, addTime] = getLineData("5", ADD, BDD, time)


[adaHigh, adaLow, adaTime] = getLineData("5", ADA, BDA, time)
[adaaHigh, adaaLow, adaaTime] = getLineData("5", ADAA, BDAA, time)

// Declarar bddLow y bdaLow


bddLow = BDD
bdaLow = BDA

// Dibujar las líneas de altos y bajos obtenidas de la temporalidad de 5 minutos


if (not na(addHigh))
if (not na(addLine))
line.set_xy1(addLine, addBarIndex, addHigh)
line.set_xy2(addLine, bar_index + 500, addHigh) // Extender hasta 500
barras en el futuro
label.set_xy(addLabel, bar_index + 500, addHigh)
else
addLine := line.new(x1=addBarIndex, y1=addHigh, x2=bar_index + 500,
y2=addHigh, color=color.green, style=line.style_dashed, width=1,
xloc=xloc.bar_index, extend=extend.none)
addLabel := label.new(x=bar_index + 500, y=addHigh, text="ADD",
color=color.green, textcolor=color.green, style=label.style_none, size=size.normal,
yloc=yloc.price)

if (not na(bddLow))
if (not na(bddLine))
line.set_xy1(bddLine, bddBarIndex, bddLow)
line.set_xy2(bddLine, bar_index + 500, bddLow) // Extender hasta 500 barras
en el futuro
label.set_xy(bddLabel, bar_index + 500, bddLow)
else
bddLine := line.new(x1=bddBarIndex, y1=bddLow, x2=bar_index + 500,
y2=bddLow, color=color.green, style=line.style_dashed, width=1,
xloc=xloc.bar_index, extend=extend.none)
bddLabel := label.new(x=bar_index + 500, y=bddLow, text="BDD",
color=color.green, textcolor=color.green, style=label.style_none, size=size.normal,
yloc=yloc.price)

if (not na(adaHigh))
if (not na(adaLine))
line.set_xy1(adaLine, adaBarIndex, adaHigh)
line.set_xy2(adaLine, bar_index + 500, adaHigh) // Extender hasta 500
barras en el futuro
label.set_xy(adaLabel, bar_index + 500, adaHigh)
else
adaLine := line.new(x1=adaBarIndex, y1=adaHigh, x2=bar_index + 500,
y2=adaHigh, color=color.blue, width=1, xloc=xloc.bar_index, extend=extend.none)
adaLabel := label.new(x=bar_index + 500, y=adaHigh, text="ADA",
color=color.blue, textcolor=color.blue, style=label.style_none, size=size.normal,
yloc=yloc.price)

if (not na(bdaLow))
if (not na(bdaLine))
line.set_xy1(bdaLine, bdaBarIndex, bdaLow)
line.set_xy2(bdaLine, bar_index + 500, bdaLow) // Extender hasta 500 barras
en el futuro
label.set_xy(bdaLabel, bar_index + 500, bdaLow)
else
bdaLine := line.new(x1=bdaBarIndex, y1=bdaLow, x2=bar_index + 500,
y2=bdaLow, color=color.blue, width=1, xloc=xloc.bar_index, extend=extend.none)
bdaLabel := label.new(x=bar_index + 500, y=bdaLow, text="BDA",
color=color.blue, textcolor=color.blue, style=label.style_none, size=size.normal,
yloc=yloc.price)

if (enableADAA_BDAA)
if (not na(adaaHigh))
if (not na(adaaLine))
line.set_xy1(adaaLine, adaaBarIndex, adaaHigh)
line.set_xy2(adaaLine, bar_index + 500, adaaHigh) // Extender hasta 500
barras en el futuro
label.set_xy(adaaLabel, bar_index + 500, adaaHigh)
else
adaaLine := line.new(x1=adaaBarIndex, y1=adaaHigh, x2=bar_index + 500,
y2=adaaHigh, color=color.orange, style=line.style_dotted, width=2,
xloc=xloc.bar_index, extend=extend.none)
adaaLabel := label.new(x=bar_index + 500, y=adaaHigh, text="ADAA",
color=color.orange, textcolor=color.orange, style=label.style_none,
size=size.normal, yloc=yloc.price)

if (not na(adaaLow))
if (not na(bdaaLine))
line.set_xy1(bdaaLine, bdaaBarIndex, adaaLow)
line.set_xy2(bdaaLine, bar_index + 500, adaaLow) // Extender hasta 500
barras en el futuro
label.set_xy(bdaaLabel, bar_index + 500, adaaLow)
else
bdaaLine := line.new(x1=bdaaBarIndex, y1=adaaLow, x2=bar_index + 500,
y2=adaaLow, color=color.orange, style=line.style_dotted, width=2,
xloc=xloc.bar_index, extend=extend.none)
bdaaLabel := label.new(x=bar_index + 500, y=adaaLow, text="BDAA",
color=color.orange, textcolor=color.orange, style=label.style_none,
size=size.normal, yloc=yloc.price)

You might also like