保持敬畏之心
交易是一场持久战

Pine Script(95):熟悉input.string,打造开/关和是/否下拉菜单

#Pine Script入门教学

我们都知道 input.bool() 可以创建一个简单的勾选框开关。

但有时候,这在视觉上不够专业,或者不够直观。

比如你可能更希望用户在一个下拉菜单中明确选择 开’或 关,而不是一个孤零零的复选框。

input.string() 函数配合 options 参数,就能完美实现这个需求。

要创建一个“开/关”下拉菜单,我们只需要三步:

  1. 使用 input.string() 函数,而不是 input.bool()
  2. 使用 options 参数,提供一个包含两个文本选项的列表,比如 ["on", "off"]
  3. 最关键的一步:用一个比较运算符 (==),将 input.string() 返回的文本结果(”on” 或 “off”)立刻转换成一个布尔值(truefalse)。
1. 开/关 (On/Off) 下拉菜单

我们来看这个“三步走”的标准模式:

myInput = input.string("on", title="Input title", options=["on", "off"]) == "on"

学长为你拆解这行代码:

  • input.string("on", ... options=["on", "off"]):这部分创建了一个文本下拉菜单,默认值是 "on",选项有 "on""off"
  • ... == "on":这就是精髓所在。我们立刻判断这个输入框的当前值是否等于 "on"
  • myInput = ...
    • 如果用户选择了 "on",那么 ("on" == "on") 结果为 truemyInput 变量的值就是 true
    • 如果用户选择了 "off",那么 ("off" == "on") 结果为 falsemyInput 变量的值就是 false

通过这一行代码,myInput 就成了一个如假包换的布尔变量,可以直接用在 if 语句或条件操作符 (?:) 中,完美实现了开关功能。

我们来看一个指标如何应用这个开/关菜单。

//@version=6
indicator(title="On/Off drop-down menu", overlay=true)

// --- 1. 创建菜单 ---
colourChart = input.string("on", title="Coloured Background",
     options=["on", "off"]) == "on"

// --- 2. 布尔变量 ---
bgcolor(colourChart ? color.new(color.orange, 85) : na)

这个脚本的逻辑非常清晰:

  1. colourChart 变量通过我们的“核心技巧”,成为了一个值为 truefalse 的“开关”。
  2. bgcolor() 函数通过条件操作符 (?:) 检查这个“开关”。
  3. 如果 colourCharttrue,就返回橘色;如果为 false,就返回 na(空值),从而关闭背景色。

2. 是/否 (Yes/No) 下拉菜单

掌握了上面的技巧,制作是/否菜单就易如反掌了,它们是完全相同的逻辑,只是换了个皮肤而已。

// 逻辑一样,只是把 "on" 换成了 "yes"
myInput = input.string("yes", title="Input title", options=["yes", "no"]) == "yes"

示例脚本: 我们把上面的例子改成“是/否”版本。

//@version=6
indicator(title="Yes/No drop-down menu", overlay=true)

// --- 1. 创建菜单 ---
colourChart = input.string("yes", title="Colour Background",
     options=["yes", "no"]) == "yes"

// --- 2. 使用 ---
bgcolor(colourChart ? color.new(color.yellow, 80) : na)

你可以看到,除了文本从 on”换成了 yes,颜色从橘色换成了黄色,核心逻辑没有任何变化。

总结:input.string 开关 vs input.bool 开关

你可能会问,input.bool() 那个复选框不是更简单吗?为什么还要费劲用 input.string() 来做?

  • input.bool() 复选框: 优点是简单、代码少,缺点是可读性稍差,且无法扩展。
  • input.string() 下拉菜单: 优点是界面更清晰、更专业,用户明确选择开或关。
  • 最大的优点是可扩展性: 想象一下,未来你想给这个开关增加第三个状态,比如 "Long Only"(只做多)。如果是 input.bool(),你必须删掉它,换成 input.string(),你所有相关的代码都得重写。如果是 input.string(),你只需在 options 里加一个选项:["on", "off", "Long Only"],你的代码逻辑可以平滑过渡,这才是专业脚本的思维。

总而言之,input.string() 配合 options== 比较,是打造专业、可扩展设置面板的标准做法。

赞(0)
未经允许不得转载:图道交易 » Pine Script(95):熟悉input.string,打造开/关和是/否下拉菜单
分享到

评论 抢沙发

登录

找回密码

注册