将颜色应用于音量条时出现 Pine 脚本错误

Pine script error when applying colors to volume bars

我试图突出显示比前一个柱高 200% 或更大的音量柱,但一直收到以下错误 Error: Undeclared identifier volColor,但是,它已被声明,所以我不明白该错误。

study("200% Volume Highlight", shorttitle="Vol_200%")

v = volume
v0=volume[0]
v1=volume[1]

pct = (v0-v1)/v1*100

volColor = iff(pct>200, #DC143C)
plot(series=volume, style=histogram, color=volColor)

您没有为 pct>200 为假的情况分配颜色。 na 现在使用,但您当然可以将其替换为您选择的颜色。

请在您的代码片段中包含 //@version= 编译器指令,以便我们知道您使用的是哪个版本的 Pine。

//@version=3
study("200% Volume Highlight", shorttitle="Vol_200%")

v = volume
v0=volume[0]
v1=volume[1]

pct = (v0-v1)/v1*100

volColor = iff(pct>200, #DC143C, na)
plot(series=volume, style=histogram, color=volColor)

volColor 错误不是问题所在。
这是编译器遇到的最后一个错误,因为之前的语句没有编译。
你的完整错误是这样的:

Error: Cannot call `iff` with arguments (series__bool, literal__color); available overloads: iff(bool, integer, integer) => integer; iff(bool, float, float) => float; iff(bool, series, series) => series; iff(bool, series__color, series__color) => series__color; iff(bool, bool, bool) => bool; iff(bool, string, string) => string; iff(series__bool, integer, integer) => series__integer; iff(series__bool, float, float) => series; iff(series__bool, series, series) => series; iff(series__bool, series__color, series__color) => series__color; iff(series__bool, bool, bool) => series__bool; iff(float, integer, integer) => integer; iff(float, float, float) => float; iff(float, series, series) => series; iff(float, series__color, series__color) => series__color; iff(float, bool, bool) => bool; iff(float, string, string) => string; iff(series, integer, integer) => series__integer; iff(series, float, float) => series; iff(series, series, series) => series; iff(series, series__color, series__color) => series__color; iff(series, bool, bool) => series__bool;
Error: Undeclared identifier `volColor`

真正的问题是 iif 需要 3 个输入而不是 2 个。

这会起作用。

//@version=4
study("200% Volume Highlight", shorttitle="Vol_200%")

signalThreshold = input(defval=200, title="Threshold (%)", type=input.float, minval=0)

v  = volume
v0 = volume[0] // volume[0] is the volume on the current bar. So it's the same as just using 'volume'. Or in your case, variable 'v'.
v1 = volume[1]

color volColor = na
color defaultColor = color.blue
color signalColor = #DC143C

pct = (v0-v1)/v1*100

volColor := iff(pct>signalThreshold, signalColor, defaultColor)

// This code will be faster. It does the same thing, but doesn't call a function.
//volColor := pct > signalThreshold ? signalColor : defaultColor

plot(series=volume, style=plot.style_histogram, color=volColor)

注意:您必须始终使用 //@version=x 作为脚本的第一行。