plotshape - 用户定义的输入变量显示的文本颜色不正确

plotshape - text colour displayed incorrectly with user defined input variables

Pine Script 的编译器中似乎存在错误,在下面的示例中,使用名为 transp 的变量为给定颜色的透明度设置用户可定义的输入值。

然而,当使用 plotshapebgcolor 时,结果不一致。 bgcolour 按预期工作,但 plotshape 表现得很奇怪。它使用 style=shape.cross 为绘制的形状正确设置颜色,但无法理解 text = ‘hi’text = ‘lo’ 的颜色说明。在本例中,它使用默认颜色蓝色。

如果您将 transp 更改为一个固定的整数,例如 transp = 80,它就会正常工作并以给定的颜色显示形状和文本。这是令人难以置信的虚假,如果它只是不接受分配给用户输入的透明度变量,那么它会影响形状和文本。您也可以直接将 color.new 表达式输入到 plotshape,这以相同的方式工作,使用一个关联了用户输入的透明度变量,它不会正常工作,使用硬编码整数赋值,它工作正常。

//@version=5

indicator(title='RSI and test colour variable', shorttitle='Colour test', overlay=false)

transp = input.int(60, minval=0, maxval=100, title='Transparency:')

blue  = color.new(color.blue, 0)
green = color.new(color.green, transp)
red   = color.new(color.red, transp)
white = color.new(color.white, 0)

lower = 30
higher = 60
Len = input(title='RSI Length:', defval=10)
Src = input(title='RSI Source:', defval=close)
rsi = ta.rsi(Src, Len)
plot(rsi, color=white)

plot(lower, color=blue)
plot(higher, color=blue)

plotshape (rsi > higher, location=location.top, color=green, style=shape.cross, text='Hi', size=size.tiny)
bgcolor (rsi > higher  ? green : na)
 
plotshape (rsi < lower, location=location.top, color=red, style=shape.cross, text='Lo', size=size.tiny)
bgcolor (rsi < lower  ? red : na)

我查看了这个并尝试了所有可能的代码排列来解决这个问题,但它总是以同样不连贯的方式响应。花了一些时间才真正意识到问题是什么,这显然是一个错误,不是太致命,但这不是一个理想的演示,我无法继续看着这个错误,它仍然在困扰着我。 ;o\

有什么变通办法吗?

虽然这可能不是原因,但不一定需要是用户定义的输入。该值需要在编译时知道。

如果您尝试 transp=close > 2 ? 40 : 80,您将获得相同的行为。

Some more info.

作为解决方法,使用 textcolor 参数。

plotshape (rsi > higher, location=location.top, color=green, textcolor=green, style=shape.cross, text='Hi', size=size.tiny)
plotshape (rsi < lower, location=location.top, color=red, textcolor=red, style=shape.cross, text='Lo', size=size.tiny)