在之前的文章里,我们讨论过当一个overlay=true
的指标数值范围和主图K线价格差异巨大时,会把K线压成心电图的图表问题,当时我们用scale=scale.left
作为解决方案,完美解决了问题。今天我们就来系统地、深入地讲解scale
这个参数,你可以把它理解成是你指标的独立宣言,它允许你的脚本绘图脱离主图价格坐标轴的束缚,拥有自己的一片天地。
scale
参数主要有以下几个值可选:
scale.left
: 让脚本使用图表左侧的价格坐标轴。scale.right
: 让脚本使用一个新的、附加在图表右侧的价格坐标轴。scale.none
: 让脚本不依附于任何价格坐标轴进行绘制。
scale
是一个可选参数,如果你不写它,脚本会默认使用图表现有的价格坐标轴(通常是右侧主坐标轴)。
我们可以在indicator()
或strategy()
函数中,通过scale
参数来指定坐标轴。
- 对于指标:
//@version=6 indicator(title="我的指标", scale=scale.left)
- 对于策略:
//@version=6 strategy(title="我的策略", scale=scale.left)
你需要知道的几个重点
scale
的值必须是scale.left
,scale.right
,scale.none
这几个预设好的常量之一,不能用变量替代。- 想要使用
scale.none
,你的脚本必须是叠加显示的,即overlay
参数必须为true
。否则Pine编辑器会直接报错,告诉你overlay=false
和scale.none
不能组合使用。 scale.right
不是让你共享已有的右侧主坐标轴,而是会再新建一个右侧坐标轴,这在大多数情况下可能会让图表显得拥挤,通常我们用scale.left
就足够了。- 和
overlay
一样,如果你在代码里修改了scale
的设置,必须先从图表移除脚本,再重新添加一次,更改才能生效。
实战示例:scale
不同参数的效果
我们来看一个绘制均线(WMA)的指标,通过不断修改scale
参数,来观察它的不同表现。
指标的初始代码如下,我们不设置scale
,观察其默认行为:
//@version=6
indicator(title="加权移动平均线", overlay=true)
// 绘制WMA
plot(ta.wma(close, 60), color=color.orange, linewidth=3, title="WMA")
脚本被设置为叠加在主图上(overlay=true
)。当添加到图表后,因为它没有指定scale
,所以默认会和主图的K线共享同一个右侧价格坐标轴:
现在,我们给它加上scale=scale.right
:
indicator(title="加权移动平均线", overlay=true, scale=scale.right)
重载脚本后,你会看到图表右侧出现了一个全新的、专属于这条WMA的价格坐标轴:
提醒: 当你的指标有了独立的坐标轴后,它的视觉形态(比如均线的陡峭程度)可能会和它在主坐标轴上时看起来不一样,这是因为它是在自己的数值范围内进行缩放的,而非相对于主图价格,进行形态分析时要留意这一点。
接下来,我们再试试scale=scale.left
:
indicator(title="加权移动平均线", overlay=true, scale=scale.left)
重载后,脚本的绘图值就会附着到图表左侧新创建的价格坐标轴上,这通常是解决图表压缩问题的最佳选择:
最后我们来尝试最特别的scale.none
,它会让脚本的绘图不依附于任何可见的坐标轴:
indicator(title="加权移动平均线", overlay=true, scale=scale.none)
设置为scale.none
后,效果如下:
你可以把scale.none
理解成,指标仍然在它自己的独立小世界里画图,只不过TradingView把这个小世界的坐标轴给隐藏了,让图表看起来更干净。但正因为它没有了可以对齐的刻度,有时候在视觉上会产生一些错觉,需要特别注意。
手动调整坐标轴
除了在代码里设定,TradingView也允许用户在界面上手动更改脚本附着的坐标轴,这会覆盖代码里的设置。
操作步骤如下:
在指标名称右侧的“三个点(…)”菜单中,选择“固定到坐标轴”,然后选择具体坐标轴即可: