你有没有遇到过这种情况:精心写了一个必须叠加在主图上才能正常使用的指标(比如某种K线形态识别),结果用户不知道,随手就把它拖到了副图,导致指标完全失效,还反过来问你是不是代码有bug?Pine脚本中的linktoseries
参数,就是为了解决这种开发者烦恼而生的。它的作用只有一个:强制脚本始终显示在图表的主区域,禁止用户将其移动到其他任何地方。
linktoseries
参数接受两个布尔值:
true
: 将脚本焊死在主图区域。用户将无法通过任何界面操作(拖拽或右键菜单)将其移走。false
: 允许脚本被移动。这是linktoseries
的默认值,所以如果你省略不写,脚本默认就是可以自由移动的。
要将脚本牢牢固定在主图上,我们可以在indicator()
或strategy()
函数中,将linktoseries
参数设置为true
。
- 对于指标:
//@version=6 indicator(title="我的指标", overlay=true, linktoseries=true)
- 对于策略:
//@version=6 strategy(title="我的策略", overlay=true, linktoseries=true)
linktoseries
与overlay
的强制绑定
记住一个死规定:想用 linktoseries = true
,就必须同时设置 overlay = true
。
道理很简单:你要把指标焊死在主图上,前提自然是它得先被画在主图上。如果你让一个副图指标(overlay=false
)去“锁死”在主图,逻辑上就完全冲突了,Pine编辑器会直接抛出编译错误,告诉你这两个设置不能一起使用。
需要知道的几个特性
- 一旦
linktoseries
设为true
,脚本右键菜单中的“移动到(Move To)”选项就会变灰或直接消失,用户再也无法将它移动到其他面板。 linktoseries
参数没有对应的手动UI设置选项,只能由脚本开发者在代码中进行配置。- 虽然脚本被“锁死”了,但它依然会继承主图的坐标轴和精度。同时,你仍然可以通过
scale
参数为其指定独立的左右坐标轴,或者通过precision
参数来尝试改变其显示精度(虽然我们知道在overlay=true
时precision
会失效)。
下面的指标脚本绘制了两条SMA均线。我们首先在不使用linktoseries
的情况下运行它,观察其默认行为。
指标的初始代码如下:
//@version=6
indicator(title="SMAs", overlay=true)
// 绘制两条SMA
plot(ta.sma(close, 20), color=color.orange, title="快速SMA")
plot(ta.sma(close, 80), color=color.teal, title="慢速SMA")
脚本通过indicator()
函数设置了overlay=true
,使其初始叠加在主图上。因为我们没有设置linktoseries
,它默认值为false
,所以这个指标是可以被用户自由移动的。
将脚本添加到图表后,效果如下:
当我们右键点击这个指标时,可以看到“移动到”的选项是可用的,用户可以随时将它移动到下方新的副图面板中:
现在,如果我们不希望用户移动它,就需要明确地将linktoseries
设置为true
:
indicator(title="SMAs", overlay=true, linktoseries=true)
保存代码并重载脚本后,你就会发现这个指标再也无法被拖动了。同时右键菜单中的“移动到”选项也已经消失了,达到了焊死在主图上的效果:
一旦脚本被这样设置,它就会永久固定在图表的主交易品种区域,确保了指标始终在它应该在的地方发挥作用。
总结
linktoseries
参数能够强制脚本始终显示在主图交易品种所在的区域,防止用户误操作。- 当你将
linktoseries
设置为true
后,该脚本就无法再被移动到独立的副图面板中。 - 使用
linktoseries=true
的前提条件是,必须同时设置overlay=true
。