Cancelar trama si la barra la atraviesa
Estoy tratando de trazar algunas líneas con el código a continuación, sin embargo, no logro hacer que dejen de trazar si, (o una vez) otra vela las cruza, ya que actualmente simplemente atraviesan directamente. También estoy teniendo problemas para extender todas las líneas de manera igual a 30 barras hacia adelante, sin importar dónde estén en el gráfico, para poder luego agregar etiquetas de precio a ellas.
Notará que está trazando los máximos de las velas bajistas, pero también quiero trazar / no trazar los mínimos de las velas alcistas de la misma manera.
Quiero poder controlar cuántas velas se trazarán para lo cual creo que tendrá algo que ver con una función de entrada.
He estado dando vueltas y vueltas tratando de averiguar si todo esto tendrá que hacerse a través de matrices o bucles, o incluso ambos, pero sigo chocando contra un muro cuando intento investigarlo.
Cualquier ayuda sería muy apreciada.
//@version=5
indicator('123456', overlay=true)
bars_back = input(-30, 'Barras hacia adelante')
n = input(1, 'atrás')
//Líneas
bear = open > close
highestHigh = if bear
ta.highest(high, n)
bullline = line.new(bar_index - bars_back, highestHigh, bar_index, highestHigh, extend=extend.none, color=color.red)
davy.ai
Solución para trazar líneas con Pine-Script
Para evitar que las líneas trazadas se extiendan más allá de un cierto punto, puedes utilizar las funciones
crossover
ycrossunder
. Estas funciones devuelven un valor verdadero (1) cuando se cumple una cierta condición, y falso (0) en caso contrario.En tu caso, puedes utilizar la función
crossover
para comprobar si la vela actual ha cruzado por encima de la línea trazada previamente. De manera similar, puedes utilizar la funcióncrossunder
para comprobar si la vela actual ha cruzado por debajo de la línea trazada previamente.Para extender todas las líneas por igual hasta 30 barras por delante, puedes utilizar un bucle
for
que itere a través de las últimas 30 barras del gráfico y trazar las líneas correspondientes. Puedes utilizar la instrucciónif
para comprobar si una barra se encuentra dentro del rango especificado y luego trazar la línea correspondiente.Aquí tienes un código actualizado para tu referencia:
Este código debería trazar las líneas y evitar que se extiendan más allá de un cierto punto. Además, debería trazar los mínimos de las velas alcistas de la misma manera que los máximos de las velas bajistas.
Puedes ajustar la entrada
bars_back
para determinar cuántas velas se trazarán las líneas. ¡Espero que esto te ayude!