我试图让我的指标在越过 RSI 上的高线时显示一个圆圈(例如,在 80 处),但除非它越过低于下线(例如在 30) 首先。然后我希望它在穿过 30 时放置一个圆圈,但不再在随后的柱上放置(基本上与 80 反向相同)。
我正在尝试使用“plotshape”,但如果不能将“plotshape”放在更复杂的 IF 语句/函数中,我就无法使其工作。但是“plotshape”不能在 IF 语句中使用,所以我完全被卡住了。在 C++ 或类似的简单语言中,但不是在 Pine Script 中。
这段代码基本上适用于标记交叉点,但我不知道如何阻止它标记后面的条。
//@version=5
indicator(title='title', shorttitle='RSI', overlay=false)
green = color.new(color.green, 0)
red = color.new(color.red, 0)
yellow = color.new(color.yellow, 0)
top_line = input(title='Default bull-line', defval=80.0)
bot_line = input(title='Default bear-line', defval=30.0)
src = input(title='RSI Source', defval=close)
len = input(title='RSI Length', defval=13)
rsi = ta.rsi(src, len)
plot(rsi, color=yellow)
var int A = na
var int B = na
if rsi >= top_line and rsi[1] < top_line
A := 0
plotshape(rsi >= top_line and rsi[1] < top_line and A == 0, location=location.top, color=green, style=shape.circle, text='')
if rsi >= top_line and rsi[1] >= top_line
A := 1
if rsi <= bot_line and rsi[1] > bot_line
B := 0
plotshape(rsi <= bot_line and rsi[1] > bot_line and B == 0, location=location.bottom, color=red, style=shape.circle, text='')
if rsi >= bot_line and rsi[1] >= bot_line
B := 1
plot(top_line, title='bullish', color=green)
plot(bot_line, title='bearish', color=red)