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

Pine Script(36):Pine语言内置的模式占位符

#Pine Script入门教学

上一节我们学习了str.format()中那些方便快捷的预设格式(如number,currency)。但如果你想实现更精细的效果,比如“强制保留4位小数”或者“显示带千位符的整数”,这些预设格式就不够用了。

这时,我们就需要进入str.format()的“专业模式”——使用模式占位符来自定义数字的显示格式。这就像从用相机的自动挡,切换到了手动挡,虽然需要多了解几个参数,但你能完全控制最终的成像效果。

专业模式的语法

要使用自定义模板,你需要在占位符里,紧跟在number说明符后面,写上你用“模式占位符”组合出来的模板字符串。它的结构是:{索引, number, 你的自定义模板}

例如:plotLabel = str.format("当前收盘价: {0,number,0.0}", close) 这里的0.0就是由模式占位符组成的自定义模板,它规定了输出的数字必须带有一位小数。

模式占位符大全

要进入“专业模式”,你首先要认识这几个核心的“模式占位符”,它们是构成你自定义模板的“零件”:

占位符 含义与示例
0 数字位(或补零):代表一位数字。如果原始数值在该位置有数字,则显示该数字;否则,显示0。用于确保固定的位数。
示例:模板"000.00",值0.15"000.15";值66870.3"66870.30"
# 数字位(或不显示):代表一位数字。如果原始数值在该位置有数字,则显示该数字;否则,不显示任何内容(即不会用0补齐)。
示例:模板"#,###.###",值-90.0581"-90.058";值66193.1"66,193.1"
. 小数点分隔符:定义小数点在输出字符串中的位置。
, 分组分隔符:通常用作千位分隔符,使大数字更易读。
% 百分比符号:将原始数值乘以100,然后在结果末尾附加一个百分号%。<br>示例:模板"0.0%",值0.123"12.3%"
千分比符号:将原始数值乘以1000,然后在结果末尾附加一个千分号。<br>示例:模板"0.0‰",值0.043"43.0‰"
E0 科学计数法:以科学记数法显示数字。E之后的0的数量决定了指数部分显示的最小位数。
示例:模板"0.00E0",值600000000"6.00E8"

注意:如果想在模板里显示0#这些特殊字符本身,而不是让它们作为占位符,需要用单引号' '把它们括起来进行转义。

常用组合示例

单独看每个“零件”可能有点抽象,但把它们组合起来,就能实现各种强大的效果。下面是一些最常用的组合,建议你收藏起来随时查阅:

模板示例 说明 输出示例 (假设输入为一系列不同值)
0.0 始终显示一位小数,不足补零,多余则四舍五入。 "120.3"; "38203.2"; "-3123.0"
0.0000 始终显示四位小数,不足补零,多余则四舍五入。 "-22.7369"; "94084.0300"; "0.3796"
#.### 最多显示三位小数,不补尾随零,多余则四舍五入。 "149.2"; "58935.939"; "-0.06"
0.00% 数值乘以100,结果始终显示两位小数,并带百分号。 "-0.0789" → "-7.89%"; "0.8506" → "85.06%"
#,###.00 带千位分隔符(如果数值够大),始终显示两位小数。 "-21.623" → "-21.62"; "36661.3" → "36,661.30"
0.00E0 科学计数法,尾数始终显示两位小数,指数至少显示一位。 "-78.1" → "-7.81E1"; "38700" → "3.87E4"
实战案例:综合运用模式占位符创建信息标签

下面的指标脚本演示了如何在实际应用中,通过str.format()的模式占位符,将收盘价、价格变动百分比和成交量格式化后,显示在图表的最后一个K线的标签上。

//@version=6
indicator(title="str.format() 模式占位符示例", overlay=true)

if barstate.islast
    // 1. 计算价格较上一根K线的变动百分比
    priceChange = (close - close[1]) / close[1]

    // 2. 使用str.format()和模式占位符
    barText = str.format(
         // 模板字符串,用 \n 换行
         "收盘价: {0,number,$#,##0.00}\n" +
         "涨跌幅: {1,number,0.0%}\n" +
         "成交量: {2,number,#,###}",
         // --- 下方是按顺序填充的参数列表 ---
         close,       // -> {0}: 收盘价。'$#,##0.00' 模板表示:带'$',千位符,强制2位小数
         priceChange, // -> {1}: 涨跌幅。'0.0%' 模板表示:乘以100,保留1位小数,带'%'
         volume       // -> {2}: 成交量。'#,###' 模板表示:整数,带千位符
       )

    // 3. 创建标签
    label.new(bar_index, high, text=barText,
         color=color.new(color.navy, 15), textcolor=color.white,
         size=size.large, style=label.style_label_left)

使用Pine脚本str.format模式占位符自定义格式化数字、百分比和成交量的信息标签图。

通过模式占位符的灵活运用,我们可以使输出的文本信息既准确又易于阅读。

总结

总结一下,模式占位符是str.format()函数的终极武器。它让你从格式的“使用者”变成了“设计者”,它需要放置在占位符中,并且位于number这个预定义格式说明符之后(例如 {0,number,0.00})。通过组合0, #, ., ,, %等几个简单的符号,你就能创造出任何你想要的数字文本格式,让你的图表标签和警报信息,无论在内容上还是形式上,都达到专业水准。

赞(0)
未经允许不得转载:图道交易 » Pine Script(36):Pine语言内置的模式占位符
分享到

评论 抢沙发

登录

找回密码

注册