我可以使用 pine 脚本的三元运算符来指定 plotshape() 中的 style 参数或 plotchar() 中的 char 参数吗?
Posted
技术标签:
【中文标题】我可以使用 pine 脚本的三元运算符来指定 plotshape() 中的 style 参数或 plotchar() 中的 char 参数吗?【英文标题】:Can I use pine script's ternary operator to specify the style argument in plotshape() or the char argument in plotchar()? 【发布时间】:2020-11-02 21:24:20 【问题描述】:我想我是在要求 pine 脚本做一些它不打算做的事情,但我想我还是会提出这个问题。
例如,像这样的:
plotshape(
volume,
style = (close[0] >= close[1]) ? shape.square : shape.xcross,
color = color.red
)
或类似的东西:
plotchar(
volume,
char = (close[0] >= close[1]) ? "#" : "•",
color = color.red
)
编辑:添加了label.new()
应用于卷窗格的示例,但无法正确指定y
、y_loc
或style
:
【问题讨论】:
【参考方案1】:不,你不能。 style
的类型是style (input string)
,这意味着在脚本执行之前必须知道它的值。要在运行时确定它的值,它需要是 "series[string]"
类型。
如果你尝试编译你正在尝试做的事情,你可以知道这一点。
你会得到以下错误。
line 7: Cannot call 'plotshape' with arguments (series=series[bool], title=literal string, style=series[string], location=const string); available overloads: plotshape(series[bool], const string, input string, input string, series[color], input integer, series[integer], const string, series[color], const bool, const string, input integer, const integer, string) => void; plotshape(fun_arg__<arg_series_type>, const string, input string, input string, fun_arg__<arg_color_type>, input integer, series[integer], const string, fun_arg__<arg_textcolor_type>, const bool, const string, input integer, const integer, string) => void
在第一个括号中,它告诉您它不能使用style=series[string]
调用此函数,这是您尝试通过传递一个在运行时可能具有不同值的变量来执行的操作。
编辑:
您始终可以在绘图的 series
参数中组合您的条件。仅当系列评估为 true
时才会绘制。因此,两个形状的两个绘图函数。
//@version=4
study("My Script", overlay=true)
mainCond = close > 0
circleCond = close > open
squareCond = open >= close
plotshape(series=mainCond and circleCond, title="Circle", style=shape.circle, location=location.belowbar, color=color.green)
plotshape(series=mainCond and squareCond, title="Square", style=shape.square, location=location.belowbar, color=color.red)
【讨论】:
感谢@Baris Yakut。我希望可能有一些后门方法可以在一次调用plotchar()
中有条件地绘制 n 个字符中的一个 - 类似于我们可以使用颜色执行此操作的方式。但是,我肯定会相信你的话,这在结构上是不可能的。
请查看我的编辑以了解可能的解决方法。这就是你想要的吗?
再次感谢您的建议。我实际上是想摆脱这种特定的方法:为每个可能的场景/条件写出完整的plotchar()
。既要保持代码简洁,又要考虑到 64 项输出限制,我希望有一种方法可以将调节器潜入单个绘图语句中。
例如,允许用户访问一个下拉框以从各种不同的形状或字符中进行选择会很棒——而无需直接操作代码。但是,提供这些众多选项所需的代码(鉴于 Pine 脚本的限制)最终会变得非常混乱,并且会很快消耗输出限制,因为某些东西可能对用户有帮助,但会浪费大量资源周围未使用。【参考方案2】:
如果您想绘制不同的角色,请使用 v4 label
。
其中的字符串可以是非常量的。
示例:
【讨论】:
Andre:“v4 标签”是指在脚本开头指定//@version=4
吗?如果是这样,我在版本 4 中测试了这个想法,但遗漏了我认为可能对我的问题有必要的任何信息。然而,根据@Baris Yakut 的说法,这似乎并不重要,因为我的意图在 Pine 的框架内似乎是不可能的。您是否认为还有其他方法可以在单个 plotchar()
语句中有条件地绘制两个字符之一?
Hey Zwi,我用一个示例更新了我的答案,该示例可能会为您提供所需的内容,使用单个 label.new()
。但是,使用单个 plotchar()
是不可能的。
感谢您澄清(并提供示例)您实际上指的是label.new()
。我考虑使用标签,但它们往往会使图表变得混乱,所以我决定满足于仅以颜色作为相关信息的标记(与我最初打算的颜色/形状对相反)。也就是说,我过去曾使用标签在图表上显示条件文本,所以我应该能够弄清楚你指的是什么......
我打算提供一个我所做的示例,但我找不到发布照片的选项?
我突然想到,我可以使用您的label.new()
建议并指定stye=label.style_none
以保持图表清洁,同时还可以随意操纵字符和颜色。谢谢!以上是关于我可以使用 pine 脚本的三元运算符来指定 plotshape() 中的 style 参数或 plotchar() 中的 char 参数吗?的主要内容,如果未能解决你的问题,请参考以下文章