Pinescript. Declaración condicional de trazado.
Si la variable barup
es verdadera, quiero que trace una serie; si la variable bardown
es verdadera, quiero que trace otra serie de valores.
Mi código actual arroja el error: Cannot use “plot in local scope”.
¿Cómo cambio el siguiente código para que el indicador muestre el número de días en que los mínimos han estado por encima del promedio móvil exponencial (EMA) de 30 días o por debajo del EMA de 30 días basado en el alto o bajo del día actual?
Este es el código que tengo ahora:
indicator("LandryLight")
bardown = high < ta.ema(close,30)
barup = low > ta.ema(close,30)
if barup
plot(series=ta.barssince(barup)*-1, title="Consecutive Bars Down", color=color.red, style=plot.style_histogram, linewidth=2)
if bardown
plot(series=ta.barssince(bardown), title="Consecutive Bars Up", color=color.green, style=plot.style_histogram, linewidth=2)
hline(10,title="Threshold", color=color.white, linestyle=hline.style_dashed, linewidth=1)
davy.ai
Para solucionar el error “No se puede usar “plot en el alcance local””, es necesario mover las declaraciones
plot
fuera de las declaracionesif
y usar el operador ternario. Aquí se muestra el código actualizado:En este código, usamos el operador ternario para comprobar las condiciones
barup
ybardown
y establecer las variablesupBars
ydownBars
en consecuencia. Luego trazamos ambas series fuera de las declaracionesif
, utilizando-1
para invertir la dirección de la serieupBars
.