写指标时,你是不是有时会觉得默认的小数位数太多或太少,影响了图表的美观?比如RSI指标的值明明取整显示就足够了,但图表上却偏偏跟着一长串无关紧要的小数。
Pine脚本中的precision
参数,就是专门用来解决这个问题的,它能让你精确设定脚本数值在价格坐标轴上显示的小数位数。
简单来说,precision
的值越大,显示的小数位数就越多,精度也就越高。例如,precision=2
会显示为3402.40,而precision=4
则会显示为3402.4015。
如果你在代码中完全不设置这个参数,脚本会默认继承当前图表交易品种本身的小数位数设置。
precision
参数基本用法
我们可以在indicator()
或strategy()
函数的开头,将precision
参数设置为一个0到16之间的整数。
- 对于指标, 如果想让数值显示4位小数:
//@version=6 indicator(title="我的指标", precision=4)
- 对于策略, 如果想让数值显示4位小数:
//@version=6 strategy(title="我的策略", precision=4)
这一点必须牢牢记住:precision
参数仅仅影响脚本数值在图表上的视觉呈现,它绝对不会改变脚本内部计算时实际使用的数值精度。
换句话说它只是帮你用四舍五入的方式去看结果,但脚本内部所有的数据处理和计算,用的仍然是那个最原始、最完整的浮点数。所以你完全不用担心设置precision=0
会影响指标或策略的计算逻辑和准确性。
需要知道的几个重要特性
precision
的值必须是一个写在代码里的固定整数,比如2或7,不能是变量。它的有效取值范围是0到16。- 当
precision
出场时,它的权重更高,即便你没有设置format
参数(默认行为是format.inherit
),只要你明确写了precision=2
,那么脚本就会听precision
的,强制显示两位小数。 precision
是一个全局总开关,一旦设定,它会影响脚本中所有通过plot()
等函数绘制到价格轴上的数值,你无法为单个plot()
设置不同的小数位数。
实战示例:为双RSI指标调整显示精度
下面的指标脚本演示了precision
的用法。它绘制了两条不同周期的RSI。我们首先将precision
设为0,让RSI值以最清爽的整数形式显示。
指标的完整代码如下:
//@version=6
indicator(title="双RSI指标", precision=0)
// 绘制RSI
plot(ta.rsi(close, 3), color=color.orange, title="快速RSI(3)")
plot(ta.rsi(close, 12), color=color.teal, title="慢速RSI(12)")
我们通过indicator()
函数将precision
设置为0,后续两条plot()
函数绘制的RSI曲线,其在价格轴上对应的值都会被处理成整数。
由于我们将precision
设为了0,图表上RSI指标在价格坐标轴上显示的值均为整数,看起来非常干净利落:
接下来,我们把precision
的值修改为2,看看效果:
indicator(title="双RSI指标", precision=2)
这样设置后,RSI指标在价格坐标轴上显示的值就会包含两位小数,提供了更多的细节:
如果我们进一步将precision
的值增加到4呢?
indicator(title="双RSI指标", precision=4)
那么,RSI指标的绘图值在价格坐标轴上将会显示小数点后的四位数字,达到了更高的显示精度:
手动调整显示精度
除了在代码里硬性规定,TradingView也允许指标的使用者在图表界面上手动调整显示精度,这种手动设置会覆盖你在代码中写的值。
操作步骤如下:
- 在图表上找到指标,点击名称旁的“设置”齿轮图标。
- 在弹出的设置窗口中,切换到“样式”选项卡。
- 在“精度”下拉菜单中,选择你想要的小数位数即可。如果选择“默认”,则会恢复到跟随主图品种精度的状态。
总结
precision
参数用于指定脚本数值在价格坐标轴上应显示的小数位数,precision
的值越大,显示的小数位数越多,有效取值范围是0到16的整数。它只影响显示,不影响计算,这是一个至关重要的概念,如果不设置precision
,脚本将默认采用与当前图表交易品种相同的小数位数进行显示。