Etiquetas

El espacio del Foro donde compartir indicadores y estrategias creados con el lenguaje de la plataforma TradingView.
Responder
elarvi
Mensajes: 226
Registrado: 22 Mar 2022 16:47

Etiquetas

Mensaje por elarvi »

Buenas de nuevo,

Una vez más pido ayuda por si alguien me puede dar algo de luz....

Código: Seleccionar todo

GAP_WIDE = false
GAP_DOBLE = false
GAP_MONSTER = false
var label id = na
label.delete(id[1])
if max_vola > 30
    GAP_WIDE := false
    GAP_DOBLE := false
    GAP_MONSTER := false
else if math.abs(OpenPA - ClosePA) > 300
    GAP_MONSTER := true
    if barstate.islast and linezonetime
        id = label.new(bar_index, y=high+200, text="GAP MONSTER\n Volatilidad "  + str.tostring(max_vola) + "\n Half GAP "+ str.tostring( math.abs(OpenPA-ClosePA)/2 + math.min(OpenPA,ClosePA) ) + "\n Nº Puntos "+ str.tostring( math.abs(OpenPA-ClosePA)/2), style=label.style_label_down, yloc=yloc.price, color=color.purple, textcolor=color.white, size=size.small)
else if ((((CloseDAX < ClosePA) and (ClosePA < OpenPA)) or ((CloseDAX > ClosePA) and (ClosePA > OpenPA))) and math.abs(CloseDAX - ClosePA) >= 10 and math.abs(OpenPA - CloseDAX) >= 70) and not GAP_MONSTER
    GAP_DOBLE := true
    if barstate.islast and linezonetime
        id = label.new(bar_index, y=high+200, text="GAP Doble\n Volatilidad "          + str.tostring(max_vola) + "\n Half GAP "+ str.tostring( math.abs(OpenPA-ClosePA)/2 + math.min(OpenPA,ClosePA) ) + "\n Nº Puntos "+ str.tostring( math.abs(OpenPA-ClosePA)/2), style=label.style_label_down, yloc=yloc.price, color=color.purple, textcolor=color.white, size=size.small)
else if not GAP_DOBLE and max_vola < 20 and not GAP_MONSTER and (math.abs(OpenPA - ClosePA) >= 40)  // and not GAP_MONSTER 
    GAP_WIDE := true
    if barstate.islast and linezonetime
        id = label.new(bar_index, y=high+200, text="GAP\n Inverso\n Volatilidad "+ str.tostring(max_vola) + "\n Half GAP "+ str.tostring( math.abs(OpenPA-ClosePA)/2 + math.min(OpenPA,ClosePA) ) + "\n Nº Puntos "+ str.tostring( math.abs(OpenPA-ClosePA)/2), style=label.style_label_down, yloc=yloc.price, color=color.purple, textcolor=color.white, size=size.small)
else if not GAP_DOBLE and max_vola >= 20 and not GAP_MONSTER and (math.abs(OpenPA - ClosePA) >= 70) // and not GAP_MONSTER
    label.delete(id[1])
    GAP_WIDE := true
    if barstate.islast and linezonetime
        id = label.new(bar_index, y=high+200, text="GAP\n Inverso\n Volatilidad "+ str.tostring(max_vola) + "\n Half GAP "+ str.tostring( math.abs(OpenPA-ClosePA)/2 + math.min(OpenPA,ClosePA) ) + "\n Nº Puntos "+ str.tostring( math.abs(OpenPA-ClosePA)/2), style=label.style_label_down, yloc=yloc.price, color=color.purple, textcolor=color.white, size=size.small)
En este fragmento de código trato de identificar tres tipos de GAPs que se producen entre el cierre del FDAX del día anterior y la apertura del FDAX a las 8:00 de la mañana y me gustaría que saliese una nota/etiqueta en el gráfico que me indicase el tipo de GAP que se ha producido.

El código funciona y la nota aparece, pero no consigo que me salga una única etiqueta, se van solapando. Os pongo una imagen a modo de ejemplo.
20230130 GAPs.JPG
Si se fijan bien, en el círculo amarillo, tenemos solapadas dos etiquetas, a pesar que he añadido la sentencia siguiente en el código:

Código: Seleccionar todo

 label.delete(id[1])
 


¿Alguna idea o causa del problema?

Muchas gracias.
Avatar de Usuario
X-Trader
Administrador
Mensajes: 12781
Registrado: 06 Sep 2004 10:18
Contactar:

Re: Etiquetas

Mensaje por X-Trader »

Buenas Elarvi, se me ocurren un par de ideas a bote pronto:

- Por un lado, observa que las coordenadas Y las has puesto exactamente igual en todas las etiquetas, por lo que te las va a pintar todas en el mismo sitio.

- Por otro, existe un par de parámetros que te pueden resolver la vida. Por un lado tienes size=size.auto para autoajustar el tamaño en función del contenido, y por otro style=label.style_label_left que te permite alinear las cosas a la izquierda para evitar el solape.

De todos modos, en la documentación de Pine Script tienes todos los parámetros a modificar de la función label.new, jugando un poco con la posición seguramente elimines el solape que se produce:

https://www.tradingview.com/pine-script ... el{dot}new


Saludos,
X-Trader
"Los sistemas de trading pueden funcionar en ciertas condiciones de mercado todo el tiempo, en todas las condiciones de mercado en algún momento del tiempo, pero nunca en todas las condiciones de mercado todo el tiempo."
elarvi
Mensajes: 226
Registrado: 22 Mar 2022 16:47

Re: Etiquetas

Mensaje por elarvi »

Muchas gracias Alberto por tus comentarios.
X-Trader escribió: 30 Ene 2023 09:05 Buenas Elarvi, se me ocurren un par de ideas a bote pronto:

- Por un lado, observa que las coordenadas Y las has puesto exactamente igual en todas las etiquetas, por lo que te las va a pintar todas en el mismo sitio.
Pues pensé que podría ser un problema, pero aunque hay 4 etiquetas, son excluyentes, por lo cual si re-pinta, es porque o no está excluyendo bien o hay otro problema.
X-Trader escribió: 30 Ene 2023 09:05 - Por otro, existe un par de parámetros que te pueden resolver la vida. Por un lado tienes size=size.auto para autoajustar el tamaño en función del contenido, y por otro style=label.style_label_left que te permite alinear las cosas a la izquierda para evitar el solape.
Esto tengo que investigarlo, puse las etiquetas alejadas para que no me estorbasen en el gráfico, pero quizás jugando con las posiciones, puedo hacer algo más.
X-Trader escribió: 30 Ene 2023 09:05 De todos modos, en la documentación de Pine Script tienes todos los parámetros a modificar de la función label.new, jugando un poco con la posición seguramente elimines el solape que se produce:

https://www.tradingview.com/pine-script ... el{dot}new
Revisaré bien el manual por si se me escapa algo.

Muchas gracias de nuevo,
gu5tavo71
Mensajes: 27
Registrado: 12 Sep 2022 00:15
Contactar:

Re: Etiquetas

Mensaje por gu5tavo71 »

Hola

Utiliza la cadena de if o ternarios para crea una sola cadena de texto, y despues crea una sola etiqueta
Algo así:

Código: Seleccionar todo

_text        =
  condicion1 ? "GAP xxx" + str.tostring(xxx) :
  condicion2 ? "GAP yyy" + str.tostring(yyy) : na
l_gap        =
  label.new(
  bar_index,
  high+200,
  text       = _text,
  color      = color.purple,
  textcolor  = color.white,
  style      = label.style_label_down,
  yloc       = yloc.price,
  size       = size.small)
label.delete  (not (condicion1 or condicion2) ? l_gap: na)
@gu5tavo71
Senior PineScript Developer
TradingView | Twitter | Freelancer | Telegram
elarvi
Mensajes: 226
Registrado: 22 Mar 2022 16:47

Re: Etiquetas

Mensaje por elarvi »

gu5tavo71 escribió: 30 Ene 2023 17:49 Hola

Utiliza la cadena de if o ternarios para crea una sola cadena de texto, y despues crea una sola etiqueta
Algo así:

Código: Seleccionar todo

_text        =
  condicion1 ? "GAP xxx" + str.tostring(xxx) :
  condicion2 ? "GAP yyy" + str.tostring(yyy) : na
l_gap        =
  label.new(
  bar_index,
  high+200,
  text       = _text,
  color      = color.purple,
  textcolor  = color.white,
  style      = label.style_label_down,
  yloc       = yloc.price,
  size       = size.small)
label.delete  (not (condicion1 or condicion2) ? l_gap: na)
Buenos días... francamente bueno, se ve que me queda mucho recorrido con Pine.

Muchas gracias y reportaré resultados.....
Si te ha gustado este hilo del Foro, ¡compártelo en redes!


Responder

Volver a “Pine Script”