写脚本时你有没有想过,怎么让指标在价格坐标轴上显示的数字更美观、更符合它的类型?比如成交量能自动显示K(千)和M(百万)后缀,而不是一长串难看的零;或者一个百分比类的指标能自动带上%符号。
Pine脚本里的format
参数,就是专门用来解决这个问题的格式化妆师,它能让你精确控制脚本数值在图表上的显示样式。
format
参数主要有以下几个预设值:
format.price
(价格格式): 这是最常规的小数显示方式,比如5362.38、1.15。默认通常会显示两位小数。format.volume
(成交量格式): 这是我个人非常喜欢的一个格式。它会自动简化大数值,用K代表千,M代表百万。比如,5240会显示为5.2K,4200000会显示为4.2M,非常清爽。format.percent
(百分比格式): 这个格式会在你的数值后面直接加上一个%符号。 避坑指南: 一个最常见的坑!format.percent
只负责在数字后面加个%符号,它并不会帮你把0.25自动变成25!你的数值是多少,它就显示多少百分比。例如,数值24.97会显示为24.97%。format.inherit
(继承品种格式): 这是format
参数的默认值。如果你不设置format
,脚本就会自动采用这个格式,它会完全模仿当前图表交易品种本身的数字格式。比如如果交易品种的小数位是4位,那你的指标数值也会显示4位小数。
format
参数的基本用法
我们可以在indicator()
或strategy()
函数中,通过format
参数来指定想要的格式。
- 对于指标:
//@version=6 indicator(title="我的指标脚本", format=format.volume)
- 对于策略:
//@version=6 strategy(title="我的策略脚本", format=format.volume)
学长建议为了代码的清晰和可读性,请始终使用format=format.volume
这样的关键字写法,虽然省略关键字也能运行,但当函数参数变多时,会让代码变得难以维护。
需要知道的几个重点
format
的值必须是预设的那几个常量(如format.price
),不能用变量来动态改变,format
是可选参数,如果你省略不写,脚本就会默认使用format.inherit
,即跟随主图品种的格式。format
只是给数字“化妆”,让它在图表的价格轴、数据窗口和图例上更好看,并不会改变它参与脚本内部计算时的真实数值。如果你同时设置了format.inherit
和precision
(小数精度)参数,那么脚本会优先采用precision
的设定,行为上会更接近format.price
。
实战示例:成交量指标的显示格式
下面的指标脚本演示了format
的用法,它会绘制K线的成交量以及成交量的10日均线(SMA)。
我们先用最适合它的format.volume
来看一下效果:
//@version=6
indicator(title="成交量均线", format=format.volume)
// 绘制成交量
plot(volume, color=color.teal, style=plot.style_columns, title="成交量")
// 绘制均线
plot(ta.sma(volume, 10), color=color.orange, title="成交量SMA")
在这段代码中,我们在indicator()
函数里指定了format = format.volume
,这意味着后续两个plot()
函数绘制出的所有数值,都会自动采用成交量格式。
现在我们把脚本添加到图表上,看看实际效果,在图表上成交量通常是几十万的级别,所以坐标轴上的值都自动带上了K后缀,非常直观:
接下来,我们试试把格式改成format.price
,看看有什么不同。只需要修改一行代码:
indicator(title="成交量均线", format=format.price)
当设置为价格格式后,成交量和它的均线值就以带有两位小数的精确数字显示了。这种方式虽然更精确,但对于大数值来说,可读性反而不如带有K/M后缀的格式:
如果我们再把它改成format.percent
呢?
indicator(title="成交量均线", format=format.percent)
这时,你会看到所有数值后面都简单地加上了一个百分号(%)。对于成交量这个场景来说,这种显示方式显然是没有意义的,但它能让你很好地理解format.percent
的作用:
最后我们来看看默认的format.inherit
效果。我们可以直接省略format
参数,因为它是默认行为:
//@version=6
indicator(title="成交量均线")
在这种情况下,脚本会去获取主图EURUSD的报价格式,并模仿它。因为美瑞通常有5位小数,所以成交量也显示了非常多的小数位,显得有些冗余:
总结
format
参数用于指定脚本数值在图表价格坐标轴上的显示格式,让你的指标更专业、更易读。- 有四种预设值可选:
format.price
(价格格式)、format.volume
(成交量格式,带K/M后缀)、format.percent
(百分比格式)以及format.inherit
(继承品种格式)。 format
是可选参数,默认值为format.inherit
,即脚本数值的格式会跟随主图品种,为不同的指标选择最合适的format
,是一个优秀脚本开发者的必备技巧。