我希望简单地允许在情节上进行变量替换,但我一直都会收到错误。
cr20_50up = cross(d1,d9) and d1 > d9
cr20style = cr20_50up ? 1 : 2
plot(d1, title='%K SMA20', color=cr20_50_color, transp=0,style=cr20style)
但它不起作用。
line 54: Cannot call `plot` with arguments (series, title=literal string, color=series[color], transp=literal integer, style=series[integer]); available overloads: plot(series, const string, series[color], integer, integer, bool, integer, float, series[integer], bool, series, const bool, const integer, string) => plot; plot(fun_arg__<arg_series_type>, const string, fun_arg__<arg_color_type>, integer, integer, bool, integer, float, series[integer], bool, series, const bool, const integer, string) => plot
任何想法? 谢谢 斯科特
答案 0 :(得分:1)
我希望只允许在图上进行变量替换,但我一直遇到错误。
由于该plot()
的自变量之一没有采用可接受的格式,因此您不断获得该代码的cannot call with arguments error会发生。
如果我们查看the plot()
function,就会发现它采用以下值,每个值都有自己的类型:
series
(系列)title
(常量字符串)color
(彩色)linewidth
(整数)style
(整数)transp
(整数)trackprice
(布尔)histbase
(浮动)offset
(整数)join
(布尔)editable
(常量布尔值)show_last
(常量整数)现在这是您的代码调用plot()
的方式:
cr20style = cr20_50up ? 1 : 2
plot(d1, title='%K SMA20', color=cr20_50_color, transp=0,style=cr20style)
问题在于,这里我们将style
参数设置为整数而不是整数。这是因为cr20style
有条件地设置为1
或2
。尽管确实是一系列整数,但该系列与TradingView Pine中的常规整数仍然有所不同。
不幸的是,这也意味着:您不能有条件地设置plot()
函数的样式。
对于您的代码来说,最好的解决方法可能是创建两个图,每个图都有自己的样式。然后禁用基于cr20style
的绘图。例如:
plot(cr20style == 1 ? d1 : na, title='%K SMA20',
color=cr20_50_color, transp=0,style=1)
plot(cr20style == 2 ? d1 : na, title='%K SMA20',
color=cr20_50_color, transp=0,style=2)