我们已经学会了如何用str.format()的占位符{0}, {1}来做“完形填空”。但默认填进去的数字和时间可能格式很乱,比如小数位太多,或者时间戳是一长串看不懂的数字。
为了让我们的输出更专业、更易读,我们需要给这些“填空”的内容进行“化妆”,这就是格式说明符的作用。
格式说明符是占位符里的一个可选部分,它告诉str.format()函数,应该把填进来的数据“打扮”成什么样子。我们来看一个例子:
// 用当前价格和日期生成买入指令
buyText = str.format("于 {0,date,short} 以 {1,number,currency} 价格买入 {2}",
     timenow, close, syminfo.ticker)
// 假设 timenow 是 2025年7月27日, close 是 278.45, syminfo.ticker 是 "AAPL"
// buyText 将是: "于 07/27/25 以 $278.45 价格买入 AAPL"
在这个例子里:
- {0,date,short}:- date,short就是格式说明符,它把- {0}号坑里的时间戳- timenow,“打扮”成了短日期格式。
- {1,number,currency}:- number,currency是格式说明符,它把- {1}号坑里的收盘价- close,“打扮”成了美元货币格式。
- {2}:没有格式说明符,所以品种代码- syminfo.ticker就以原始字符串的样子被填了进去。
格式说明符大全
PineScript为数字、日期和时间提供了丰富的预设格式说明符,足以应对绝大多数场景。下面就是完整的列表:
注意:如果你不小心把一个普通的数字(比如收盘价269.10)用在了日期的格式说明符上(比如date,short),程序不会报错。它会把269.10当成是从1970年1月1日开始计算的毫秒数,然后给你返回一个1970年初的日期。所以一定要确保数据类型和格式说明符是匹配的。
学长再补充两点
- 如果你不指定任何格式说明符(只写{0}),程序会用一套默认规则来显示:整数会带千位分隔符,小数最多显示三位,时间戳会显示为一个巨大的整数(毫秒数),完全没法看。
- 花括号里的空格无所谓:为了让代码好看,你可以在占位符里面随便加空格,比如{0, number, currency}和{0,number,currency}的效果是完全一样的。
实战案例:格式化并显示开盘跳空信息
下面的指标脚本演示了如何在实际场景中综合运用多种格式说明符。
它会计算开盘跳空的大小(金额和百分比),并在图表最后一个K线上通过标签显示这些信息以及跳空发生的日期。
//@version=6
indicator(title="str.format() 格式说明符案例", overlay=true)
if barstate.islast
    // 1. 计算开盘跳空的大小(金额)和百分比
    openGapSize = open - close[1]
    priceChange = (open - close[1]) / close[1]
    // 2. 使用str.format()
    labelText = str.format(
         // 模板字符串,用 + 连接多行
         "{0} 今日跳空 {1,number,currency} ({2,number,percent})\n发生于 {3,date,full}",
         // --- 下方是按顺序填充到 {0} - {3} 的参数列表 ---
         syminfo.ticker, // {0}: 品种代码
         openGapSize,    // {1}: 跳空金额
         priceChange,    // {2}: 跳空百分比
         time            // {3}: K线时间
       )
    // 3. 创建标签
    label.new(bar_index + 1, open, text=labelText,
         color=color.new(color.blue, 75), textcolor=color.white,
         style=label.style_label_left, size=size.large)
最终图表上会显示一个标签,清晰地列出跳空金额、百分比以及详细日期,这些都得益于str.format()格式说明符的灵活应用。
总结
总结一下,格式说明符是str.format()函数的点睛之笔。它让我们不必满足于默认的、粗糙的文本输出,而是可以像设计师一样,为数字、日期和时间选择最合适的“皮肤”(如货币、百分比、短日期等)。Pine Script为数字、日期和时间分别提供了多种预定义的格式说明符,足以应对大部分需求。熟练掌握这些预设的格式,能极大提升你图表标签和警报信息的可读性和专业度。

 
			


