我们写指标或策略时,经常需要一些开关——比如,是否显示这条均线?、是否开启这个交易时段?
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 的变量,它会根据用户的勾选状态,自动在 true 和 false 之间切换 。
使用输入变量:input.bool() 的灵魂
光有 true 或 false 没用,我们得让它“控制”点什么。这里,我们要用到 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() 函数是为你脚本打造“功能开关”的利器 。
- 它本身只返回
true或false。 - 它的价值,必须通过条件操作符 (
?:) 来实现,用na值来“关闭”你不需要的功能(如绘图)。 - 善用
group和tooltip,可以让你的脚本设置面板更专业、更易用。


