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

Pine Script(94):熟悉input.price,让你的脚本可点击、可拖拽

#Pine Script入门教学

在Pine Script 的功能中,input.int() 负责周期,input.float() 负责精度,而 input.price() 则负责交互。

这是Pine Script中最接近手动划线的输入功能,它能为你的脚本设置面板,添加一个价格输入框。

input.price() 的强大之处在于它极度灵活的交互性:

  • 手动输入: 你可以像 input.float() 一样,手动键入一个精确的价格。
  • 图表点选: 在设置窗口中,你可以点击一个按钮,然后在图表上任意位置点击来拾取价格。
  • 拖拽操作: 在设置中,你还可以拖放来设定价格。

这使它成为定义关键价位的完美工具,比如:

  • 设置关键的支撑/阻力位。
  • 定义一个可视化的交易区间。
  • 设置一个可拖拽的警报触发线。
  • 指定指标的超买超卖水平。

input.price() 的参数和其他输入函数类似,我帮你按实战重要性分了组:

1. 核心参数 (必用)
  • defval:(必填) 默认的价格值。
  • title:(强烈建议) 输入项的名称,即显示在设置面板上的标签,如 "关键价位"
2. 布局与提示 (提升专业度)
  • tooltip:鼠标悬停在“i”图标上时,显示的详细帮助文本。
  • group:分组标题,用于组织多个相关的输入项。
  • inline:内联ID,用于将多个输入项显示在同一行。
3. 特殊交互参数 (需厘清)
  • confirm:是否在脚本添加到图表时,立刻强制用户在图表上点击来选定价格。默认为 false

所有这些参数(如 defval, title 等)的值,都必须是常量,不能是动态的变量。

input.price vs input.float

这是新手必问的问题:input.price()input.float() 到底有什么区别?

特性 input.price() (价格输入) input.float() (小数输入)
核心价值 交互性、视觉化 精确性、自动化
设置方式 手动输入、图表点选、拖拽 只能手动输入
参数约束 没有 minval, maxval, step minval, maxval, step
适用场景 S/R位、警报线、交易区间 乘数、百分比、因子

很多新手以为必须设置 confirm=true 才能点击图表选价格,这是错的。

confirm=true只是一个一次性的引导功能,它只在你首次将脚本添加到图表时,强制你先点击图表来设定初始价格。

无论 confirm 是 true 还是 false,只要你打开脚本的设置面板,你随时都可以通过“点击图表”或“拖拽”的方式来修改价格。

实战代码示例

基础示例:在指定价位绘制一条水平线

我们来看如何在一个用户指定的价格点画一条线。

// 创建
plotPrice = input.price(1.1500, title="Price Level")

plot(plotPrice, style=plot.style_circles, color=color.orange,
     title="Key Level")

在这段代码中,plotPrice 变量的值,会100%跟随用户在设置面板中的操作。

当用户在设置中,无论是手动输入 1.1600,还是点击图表在 1.1700 处拾取了价格,plotPrice 变量都会立刻更新,plot() 函数也会自动在新的价位上重绘这条水平线。

进阶示例:带分组和提示的警报触发器
// 定义
triggerLevel = input.price(1.1450, title="Alert Trigger Level #1",
     group="Key Price Levels",
     tooltip="指定一个价格值,当K线收盘价穿越该值时,将触发脚本警报。")

这个输入:

  • 默认值为 1.1450
  • 在设置面板上,它会出现在一个名为“Key Price Levels”的分组下面。
  • 当用户鼠标悬停时,会显示 tooltip 里的详细说明。
完整示例脚本:可交互的价格区间

input.price() 最经典的应用就是用两个输入来定义一个“价格区间”。这个脚本将绘制这个区间,填充背景,并在价格突破时高亮显示。

//@version=6
indicator(title="Price input example", overlay=true)

// --- 1. 创建三个输入 ---
upperBound  = input.price(1.1475, title="Upper Bound of Range")
lowerBound  = input.price(1.1200, title="Lower Bound of Range")
// 一个 input.color() 来定义区间颜色
rangeColour = input.color(color.new(color.silver, 80),
     title="Range Background Colour")

// --- 2. 绘制 ---
ubPlot = plot(upperBound, style=plot.style_cross, color=color.green,
     title="Upper Bound")
lbPlot = plot(lowerBound, style=plot.style_cross, color=color.red,
     title="Lower Bound")

// --- 3. 填充 ---
fill(ubPlot, lbPlot, color=rangeColour)

// --- 4. 定义 ---
crossAboveUB = ta.crossover(close, upperBound)
crossBelowLB = ta.crossunder(close, lowerBound)

// --- 5. 突破 ---
bgcolor(crossAboveUB ? color.new(color.green, 80) :
     crossBelowLB ? color.new(color.red, 80) : na)

这个脚本现在是活的,用户可以打开设置,点击图表上的一个波峰来设置upperBound,再点击一个波谷来设置lowerBound,一个自定义的 S/R 区间就瞬间生成了,并且突破警报也随之自动生效。这就是 input.price() 相比 input.float() 带来的降维打击。

总结

input.price() 函数是 Pine Script 中实现图表交互的核心工具。

  • 它只返回一个浮点数值(价格)。
  • 它的核心价值在于允许用户通过图表点选和拖拽来设置价格,而不仅仅是键盘输入。
  • 它没有 minval/maxval/step 约束,但 input.float() 有。
  • 它是你构建 S/R 区间、可拖拽警报线、视觉化交易工具的必备函数。
赞(0)
未经允许不得转载:图道交易 » Pine Script(94):熟悉input.price,让你的脚本可点击、可拖拽
分享到

评论 抢沙发

登录

找回密码

注册