plotshape - 用户定义的输入变量显示的文本颜色不正确
plotshape - text colour displayed incorrectly with user defined input variables
Pine Script 的编译器中似乎存在错误,在下面的示例中,使用名为 transp
的变量为给定颜色的透明度设置用户可定义的输入值。
然而,当使用 plotshape
和 bgcolor
时,结果不一致。 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
,您将获得相同的行为。
作为解决方法,使用 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)
Pine Script 的编译器中似乎存在错误,在下面的示例中,使用名为 transp
的变量为给定颜色的透明度设置用户可定义的输入值。
然而,当使用 plotshape
和 bgcolor
时,结果不一致。 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
,您将获得相同的行为。
作为解决方法,使用 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)