在之前的文章里,我们讨论过当一个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也允许用户在界面上手动更改脚本附着的坐标轴,这会覆盖代码里的设置。
操作步骤如下:
在指标名称右侧的“三个点(…)”菜单中,选择“固定到坐标轴”,然后选择具体坐标轴即可:







