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

Pine Script(83):让你的输入设置更专业的几个特性

#Pine Script入门教学

我们在上一篇文章中,已经详细盘点过 input.int()input.color() 等各种各输入函数。它们各自创建了独特的设置选项,但作为一个整体,它们都遵循着一些通用的规则和特性。

1. 代码顺序,决定了设置面板的顺序

你的脚本设置面板并不是随机排序的,它的显示顺序严格按照你代码中 input() 函数出现的顺序自上而下排列

  • 这意味着你必须像一个产品经理一样,去思考你控制面板的布局,把逻辑相关的设置放在一起。 比如一个均线设置,合理的顺序应该是:
  1. input.source() – 价格源 (先定数据)
  2. input.int() – 长度 (再定周期)
  3. input.color() – 颜色 (最后定外观)

使用 group 参数来组织,当你的脚本参数变得非常复杂(比如有三条均线、两条RSI的设置)时,group 参数就是你最好的朋友。

  • 当TradingView读取到第一个 group="我的组" 的输入时,它会立刻扫描整个脚本,把所有属于 "我的组" 的输入全部找到并组合在一起显示。
  • 然后它才会继续显示那些没有被分组的输入项。

示例代码:

// 创建均线的输入
maSource = input.source(close, title="价格数据", group="我的输入")
maLength = input.int(20, title="长度") // 这个没有组
maColour = input.color(color.orange, title="颜色", group="我的输入")

在设置面板中,你看到的顺序将是:价格数据、颜色,它们都在“我的输入”组里,然后才是长度,因为它在组外。

2. 永远把Input放在脚本的顶部

Pine Script语法非常灵活,它甚至允许你把 input() 函数藏在 if 语句或自定义函数里

永远不要这么做!

这是一个非常糟糕的编码习惯,会让你的代码变得混乱不堪,极难阅读和调试。

建议把你所有的 input() 函数,都集中存放在脚本的顶部,紧跟在 indicator()strategy() 声明的下方

把这里想象成你策略的总控制室,任何需要调整的参数,都应该能在这里一目了然地找到。

这不仅方便你自己,也方便任何阅读你代码的人。

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

// --- 总控制室 ---
maColour = input.color(color.orange, title="颜色")
maLength = input.int(20, title="长度")
maSource = input.source(close, title="价格数据")

// --- 其他 ---

3. 输入函数不只是取值,更是即时加工

这是 input() 功能最精妙的地方,input() 函数在创建设置项的同时,还会返回该设置的当前值

这意味着,你可以在拿到这个值的第一时间,就对它进行加工处理”

实战技巧1:百分比的换算,千万不要让你的用户在输入止损 5.75%时,去手动输入 0.0575,这是非常垃圾的体验。

你应该让他们输入 5.75,然后在代码中帮他们完成计算:

// 用户输入5.75,代码立刻乘以 0.01
stopDistance = input.float(5.75, title="止损距离 (%)") * 0.01

实战技巧 2:用字符串输入创建开关,有时input.bool() 提供的勾选框不够直观,我们更希望用户能从下拉菜单中选择 “On” 或 “Off”。

我们可以用 input.string() 配合 options 参数来实现,并立刻将其转换为代码真正需要的布尔值(true/false):

// 创建开关
showMAPlot_Str = input.string("On", title="均线绘图显示", options=["On", "Off"])

// 将 "On" 转换为 true,其他转换为 false
showMAPlot = (showMAPlot_Str == "On")

// if showMAPlot
//    plot(ma)

这种加工的思路,是提升你脚本易用性的核心。

4. 自动重新计算:所见即所得

当你把输入值存入一个变量(如 maLength)后,你不需要关心它何时被更新。

当用户在设置面板中,把均线从20改为50时,TradingView会自动检测到这个变化,并立刻对整个脚本进行一次完整的重新计算。

图表上的所有K线都会被重新过一遍,确保你的指标和策略输出,永远反映的是最新的设置。

这就是你能所见即所得拖动滑块、实时看到图表变化的原因。

5. 任何脚本类型,包括库都能使用

最后,input() 功能是通用的,无论你是在写指标 (indicator)、策略 (strategy),还是更高级的库 (library) 脚本,你都可以使用输入功能

在库中使用 input(),可以让你在测试这些可重用函数时,方便地传入不同的参数,观察计算结果,这在开发复杂系统时非常有用。

总结

input() 功能是Pine Script的脸面,它们不仅仅是变量,更是你脚本的用户界面。

掌握这些通用特性,有意识地去组织你的输入顺序、使用 group、在代码中预处理用户输入,这些专业的编码习惯,正是将你的脚本从一个自用的工具提升为一份专业作品的关键所在。

赞(0)
未经允许不得转载:图道交易 » Pine Script(83):让你的输入设置更专业的几个特性
分享到

评论 抢沙发

登录

找回密码

注册