保持敬畏之心
交易是一场持久战

Pine Script(44):价格刻度上的format数字格式化

#Pine Script入门教学

写脚本时你有没有想过,怎么让指标在价格坐标轴上显示的数字更美观、更符合它的类型?比如成交量能自动显示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.inheritprecision(小数精度)参数,那么脚本会优先采用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后缀,非常直观:

使用Pine脚本format.volume参数后,成交量指标在坐标轴上以K/M后缀显示的专业效果图。

接下来,我们试试把格式改成format.price,看看有什么不同。只需要修改一行代码:

indicator(title="成交量均线", format=format.price)

当设置为价格格式后,成交量和它的均线值就以带有两位小数的精确数字显示了。这种方式虽然更精确,但对于大数值来说,可读性反而不如带有K/M后缀的格式:

将Pine脚本format参数设置为format.price后,成交量以精确小数值显示的对比效果图。

如果我们再把它改成format.percent呢?

indicator(title="成交量均线", format=format.percent)

这时,你会看到所有数值后面都简单地加上了一个百分号(%)。对于成交量这个场景来说,这种显示方式显然是没有意义的,但它能让你很好地理解format.percent的作用:

一个错误地将format.percent用于成交量指标的Pine脚本示例,展示了其仅添加%符号的作用。

最后我们来看看默认的format.inherit效果。我们可以直接省略format参数,因为它是默认行为:

//@version=6
indicator(title="成交量均线") 

在这种情况下,脚本会去获取主图EURUSD的报价格式,并模仿它。因为美瑞通常有5位小数,所以成交量也显示了非常多的小数位,显得有些冗余:

使用默认的format.inherit参数时,Pine脚本成交量指标继承主图交易品种小数位显示的对比效果。

总结

  • format参数用于指定脚本数值在图表价格坐标轴上的显示格式,让你的指标更专业、更易读。
  • 有四种预设值可选:format.price(价格格式)、format.volume(成交量格式,带K/M后缀)、format.percent(百分比格式)以及format.inherit(继承品种格式)。
  • format是可选参数,默认值为format.inherit,即脚本数值的格式会跟随主图品种,为不同的指标选择最合适的format,是一个优秀脚本开发者的必备技巧。
赞(0)
未经允许不得转载:图道交易 » Pine Script(44):价格刻度上的format数字格式化
分享到

评论 抢沙发

登录

找回密码

注册