当你好不容易写完一个策略,比如一个双均线系统,你总不能让你的用户(或者你自己)每次想测试不同周期时,都得去改代码吧? 这就太不专业了。
为了解决这个问题,PineScript 提供了一套强大的输入功能。它们就像是你为策略打造的一个控制面板,让任何人都能在脚本设置的输入标签页里,方便地调整参数,而无需触碰一行代码。
PineScript提供了非常丰富的输入类型,基本涵盖了你所有能想到的需求,我们今天就来做一个全面盘点。
你需要用到的所有输入函数都在这里了:
| 函数 | 输入类型 |
input.int() |
整数输入。 |
input.float() |
浮点数(小数)输入。 |
input.bool() |
布尔值(真/假)输入。 |
input.string() |
字符串(文本)输入。 |
input.color() |
颜色输入。 |
input.source() |
源(价格数据)输入。 |
input.symbol() |
商品代码(品种搜索)输入。 |
input.session() |
交易时段输入。 |
input.timeframe() |
时间周期(图表分辨率)输入。 |
input.time() |
日期和时间输入。 |
input.price() |
价格值输入。 |
下面,我们就逐一看看这些“控件”在实战中是怎么用的。
1. 整数输入 (input.int)
input.int() 函数用于创建一个只能输入整数(如10, 3450)的设置项。
这是最常用的输入之一,所有不带小数的参数,比如均线周期、RSI周期、订单数量、以ticks为单位的止损距离,都应该用它。你需要提供一个默认值(比如 9)和一个在设置里显示的名称(title)。
// 示例:RSI
rsiLength = input.int(9, title="RSI 长度")
2. 小数输入 (input.float)
input.float() 函数用于创建可以输入小数(浮点数)的设置项,比如 3.14 或 0.024。
专门用来设置那些需要小数的参数,最典型的就是ATR止损的乘数(如1.75倍ATR)、百分比止损(如0.5%)等。
// 示例:ATR止损
atrMultiplier = input.float(1.75, title="ATR 乘数")
3. 布尔值(开关)输入 (input.bool)
input.bool() 函数会创建一个复选框(checkbox)。
这是策略中控制功能开关的最佳方式。比如你可以在设置里加一个“是否开启均线显示?”、“是否启用交易时段过滤?”或“是否在周五平仓?”的开关,勾选就代表 true,不勾选就代表 false。
// 示例:创建开关
plotAverage = input.bool(true, title="绘制移动平均线")
4. 文本输入 (input.string)
input.string() 函数创建一个文本输入框,允许用户输入任意字符串(文本)。
最常见的用法是自定义警报消息内容,你可以让用户在这里填入他们想要的警报文本,比如“SPX出现新信号!”。
// 示例:创建警报
alertMsgText = input.string("SPX中的新信号!", title="警报文本")
5. 颜色输入 (input.color)
input.color() 函数会添加一个颜色选择器,点击后会弹出调色板,还包含透明度滑块。
让你(或你的用户)可以自由配置指标线、背景填充或图表标签的颜色。
// 示例:配置绘图颜色
plotColour = input.color(color.teal, title="绘图颜色")
6. 价格源输入 (input.source)
input.source() 函数会创建一个下拉菜单,让用户选择K线的价格数据,比如 close (收盘价)、open (开盘价)、hl2 ((高+低)/2) 等。
极其重要!当你的指标(如RSI、MA)需要计算不同价格源时,必须使用它。
// 示例:创建RSI价格源
rsiData = input.source(close, title="RSI 价格数据")
7. 商品代码输入 (input.symbol)
input.symbol() 函数会添加一个商品搜索框,就像你平时切换交易品种一样。
主要用于开发多品种分析工具,比如你想在 EURUSD 图表上加载并显示QQQ的数据,就可以通过这个输入框来指定 “QQQ”。
// 示例
otherSymbol = input.symbol("NASDAQ:QQQ", title="商品代码")
8. 交易时段输入 (input.session)
input.session() 函数创建一个“时间段”输入,允许用户设置一个开始时间和结束时间。
对于做日内交易的策略至关重要。你可以用它来定义一个“有效交易时段”(比如 “0700-1300″),让策略只在这个时间窗口内开仓。
// 示例
tradeTimes = input.session("0700-1300", title="交易时间")
9. 时间周期输入 (input.timeframe)
input.timeframe() 函数创建一个时间周期下拉菜单(如 “1H”, “4H”, “1D”)。
专用于多时间周期分析(MTF)。比如你想在30分钟图表上显示4小时周期的均线,就可以用这个输入来指定 “240” (即4小时)。
// 示例
timeFrameTest = input.timeframe("240", title="时间周期")
10. 日期和时间输入 (input.time)
input.time() 函数创建一个精确的日期和时间选择器。
主要用于设置回测的“开始日期”和“结束日期”。通过两个 input.time(),你可以定义一个精准的回测窗口,这对于精细化测试非常有用。
// 示例
lineDate = input.time(timestamp("1 Feb 2022 12:00"), title="线条位置")
11. 价格值输入 (input.price)
input.price() 函数创建一个价格输入框。它最方便的地方在于,你除了可以手动输入价格,还可以点击图表上的任意位置来自动拾取价格。
用于设置关键的价格水平,比如你想在某个特定价格(如 1.1500)画一条水平线,或者当价格突破这个水平时发出警报。
// 示例
plotPrice = input.price(1.1500, title="价格水平")
总结
掌握了这些输入功能,你就掌握了打造高灵活性、高易用性策略脚本的钥匙。这不仅能让你自己的参数调试工作事半功倍,也能极大提升你分享给他人使用时的体验。


