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

Pine Script(86):熟悉 input.bool,为策略打造功能开关

#Pine Script入门教学

我们写指标或策略时,经常需要一些开关——比如,是否显示这条均线?、是否开启这个交易时段?

input.bool() 函数就是 Pine Script 提供的、用来创建这种布尔值输入选项的完美工具

所谓布尔值,就是它只有两个状态:true(真)或 false(假)

在脚本的设置面板上,input.bool() 会显示为一个复选框 (Checkbox)

  • 勾选 ✅,它就返回 true
  • 未勾选 🔲,它就返回 false

它的核心实战用途,就是作为功能开关,让我们能方便地启用或禁用脚本的某个特定部分

input.bool() 的参数拆解

input.bool() 的参数很简单,我帮你按实战重要性分了组:

1. 核心参数 (必用)
  • defval(必填) 默认值。即复选框默认是勾选 (true) 还是不勾选 (false)
  • title(强烈建议) 输入项的名称,即显示在复选框旁边的说明文字,如 "显示移动平均线"
2. 布局与提示 (提升专业度)
  • tooltip:鼠标悬停在“i”图标上时,显示的详细帮助文本
  • group:分组标题,用于组织多个相关的输入项
  • inline:内联ID,用于将多个输入项显示在同一行
  • confirm:是否在脚本添加到图表时,强制弹出设置窗口让用户确认。默认为 false,一般用不上

重要提醒: 所有这些参数(如 defval, title 等)的值,都必须是常量(写死的值),不能是动态的变量

实战代码示例

基础示例:创建一个均线显示开关

我们来创建一个最基础的开关,默认处于开启(勾选)状态。

// 创建一个真/假值输入
plotAverage = input.bool(true, title="绘制移动平均线")

这段代码会创建一个名为 plotAverage 的变量,它会根据用户的勾选状态,自动在 truefalse 之间切换

使用输入变量:input.bool() 的灵魂

光有 truefalse 没用,我们得让它“控制”点什么。这里,我们要用到 Pine Script 中一个极其重要的操作符——条件操作符 (?:)。

它的逻辑是:条件 ? [如果为真则执行] : [如果为假则执行]

我们来看如何用它来控制绘图:

// 创建一个真/假值输入
plotAverage = input.bool(true, title="绘制移动平均线")

// 使用 ?: 操作符来控制绘图
plot(plotAverage ? ta.ema(close, 30) : na, title="指数平均线")

学长为你拆解 plot() 这一行:

  • plotAverage ? ...:检查 plotAverage 变量是否为 true(即用户是否勾选了)。
  • ... ta.ema(close, 30) ...:如果为真,就计算30周期的EMA,并将其绘制出来。
  • ... : na:如果为假(即用户没勾选),就返回 na(Not a Number,即“空值”),plot() 函数收到 na 就知道这里什么都不用画。

这就是 input.bool() 最核心、最常用的用法。

进阶示例:添加分组和提示

我们来创建一个更专业的输入,包含分组和帮助信息:

// 创建一个真/假值输入来启用(或禁用)VWAP 通道
showBands = input.bool(true, title="显示VWAP通道",
     tooltip="勾选时,脚本将在VWAP周围显示标准差通道。",
     group="VWAP 设置")

这个输入:

  • 默认开启 (true)
  • 在设置面板上,它会出现在一个名为“VWAP 设置”的分组下面
  • 当用户鼠标悬停时,会显示 tooltip 里的详细说明
完整示例脚本:可开关的均线和通道

我们来写一个更完整的指标,它有1条均线和2条通道,但用户可以自由决定显示哪个、不显示哪个。

//@version=6
indicator(title="布尔输入示例", overlay=true)

// --- 1. 创建输入 ---
showAverage   = input.bool(false, title="显示平均线")
showBands     = input.bool(true, title="显示通道")
averageLength = input.int(20, title="平均周期")
percentOffset = input.float(5, title="通道偏移 (%)")

// --- 2. 计算 ---
emaValue  = ta.ema(close, averageLength)
upperBand = emaValue * (1 + (percentOffset / 100))
lowerBand = emaValue * (1 - (percentOffset / 100))

// --- 3. 根据开关状态来绘制 ---
plot(showAverage ? emaValue : na, color=color.orange, title="EMA")
plot(showBands ? upperBand : na, color=color.green, title="上轨")
plot(showBands ? lowerBand : na, color=color.red, title="下轨")

在这个脚本中,用户可以:

  • 只看通道(默认状态)。
  • 只勾选“显示平均线”,关闭“显示通道”,只看均线。
  • 两个都勾选,同时看均线和通道。

这就是 input.bool() 带来的灵活性。

总结

input.bool() 函数是为你脚本打造“功能开关”的利器

  • 它本身只返回 truefalse
  • 它的价值,必须通过条件操作符 (?:) 来实现,用 na 值来“关闭”你不需要的功能(如绘图)。
  • 善用 grouptooltip,可以让你的脚本设置面板更专业、更易用。
赞(0)
未经允许不得转载:图道交易 » Pine Script(86):熟悉 input.bool,为策略打造功能开关
分享到

评论 抢沙发

登录

找回密码

注册