当我们在PineScript中搭建策略或指标时,最基本的需求就是能方便地调整参数,比如均线周期、RSI长度等。
你总不能每次想把20日线改成21日线,都去代码里硬修改。
这就是输入(Inputs)功能的核心价值。
而 input.int() 函数,就是你在这个参数控制面板中,最先要掌握、也是最常用的一个控件。
它专门用于为脚本添加一个整数输入选项 。
我们通常用它来设置所有不带小数的数字 :
- 计算周期: 比如20均线,或5周期的RSI 。
- 风控参数: 比如以Ticks为单位的止损距离 。
- 订单数量: 比如策略的订单大小(如果按固定手数交易) 。
input.int() 的两种形态
input.int() 函数有两种使用方式,可以创建两种不同的“控件”:
- 数值输入框(默认): 这是最常见的,一个可以让你手动输入数字或按箭头增减的框。
- 下拉菜单: 当你提供一组固定的选项时,它会变成一个下拉菜单。
无论你创建哪种形态,input.int() 函数都会返回该输入选项当前设定的整数值 。我们通常会把这个值存到一个变量中,方便脚本的后续代码随时调用。
input.int() 的参数非常多,但你不需要一次全记住。
我帮你按“实战重要性”分了组:
1. 核心参数 (几乎必用)
defval:(必填) 默认值。比如你设置一个均线周期,总得给它一个初始值,如20。title:(强烈建议) 输入项的名称,即显示在设置面板上的标签 。
2. 数值约束 (提升易用性)
minval/maxval:设置允许输入的最小值和最大值 。对于“周期”类输入,永远要设置minval=1或2。这能防止用户输入0或负数,导致你的脚本在计算ta.ema(close, 0)时直接报错。step:设置你点一下“上/下”箭头时,数值变化的步长 。默认是1。
3. 特殊形态 (下拉菜单)
options:提供一个固定的整数选项列表,用方括号括起来,如[10, 20, 50, 100]。一旦使用了options,上面的minval,maxval和step就会失效,因为用户只能从你给的列表里选。
4. 布局与提示 (提升专业度)
tooltip:(推荐) 鼠标悬停在输入项旁边的小“i”图标上时,显示的帮助提示文本 。group:分组标题。你可以把多个相关的输入(如“均线A长度”、“均线A颜色”)都设为group="均线A",它们在面板上就会被归纳在一起 。inline:内联ID。用于将多个输入项显示在同一行 。confirm:是否在脚本添加到图表时,强制弹出设置窗口让用户确认 。默认为false,一般用不上。
重要提醒: 所有这些参数(如 defval, title, minval 等)的值,都必须是常量(写死的值),不能是动态的变量 。
实战代码示例
理论看完了,我们来上实战。
大多数时候,你只需要 defval 和 title 这两个参数。
// 创建一个整数输入
rsiLength = input.int(9, title="RSI 长度")
这段代码会创建一个名为 rsiLength 的变量,它的默认值是 9。
虽然
title参数在技术上是可选的(你可以直接写input.int(9, "RSI 长度")) ,但我强烈建议你始终明确写上title=。因为
input.int()有多个参数都可以接收字符串(比如tooltip,inline,group),明确写出title=可以让你的代码意图更清晰,避免未来维护时产生混淆。
使用输入变量
创建输入变量的目的,就是为了在代码中使用它。
// 创建一个整数输入
rsiLength = input.int(9, title="RSI 长度")
// 在RSI计算中,使用这个变量
plot(ta.rsi(close, rsiLength), title="RSI")
现在当用户在设置面板里把“RSI”从9改成14时,rsiLength 变量的值就会自动变为14,ta.rsi() 函数会立刻重新计算,图表也会自动更新 。
进阶示例
我们来创建一个更健壮的输入,防止用户乱填。
// 用一个输入来配置均线的周期
maLength = input.int(20, title="移动平均线长度",
minval=2, maxval=200, step=5)
这个输入:
- 默认值是
20。 - 取值范围被限制在
2到200之间 。 - 点击上下箭头时,数值会按
5的步长增减(如 20, 25, 30…) 。
完整示例脚本:平滑均线
我们用 input.int() 来创建一个计算EMA的指标。
这里我们需要两个整数输入:一个用于EMA的周期,另一个用于平滑的周期。
//@version=6
indicator(title="整数输入示例", overlay=true)
// --- 1. 创建输入 ---
averageLength = input.int(20, title="平均周期", minval=2)
smoothLength = input.int(3, title="平滑周期", minval=1)
// --- 2. 计算 ---
baseEMA = ta.ema(close, averageLength)
smoothedEMA = ta.ema(baseEMA, smoothLength)
// --- 3. 绘制 ---
plot(smoothedEMA, color=color.orange, linewidth=2, title="平滑的 EMA")
在这段代码中,我们创建了 averageLength 和 smoothLength 两个变量来接收输入值 。然后在 ta.ema() 计算中分别使用了它们。
现在用户可以独立调整这两个周期,而无需修改任何代码。
总结
input.int() 函数是 Pine Script 中最基础、最重要的输入功能 。它为你的脚本提供了必要的灵活性。
记住学长的建议:在设置周期类参数时,随手加上 minval=1 是一个能帮你避免很多低级错误的专业习惯。


