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

Pine Script(5):用加法运算符连接字符串

#Pine Script入门教学

我们都知道加号+可以用来做数学加法,但它在PineScript里还有一个非常实用的功能:连接文字,也就是我们常说的“字符串拼接”。这个功能在自定义图表标签、创建动态警报信息时,简直是神器,今天咱们就来聊聊怎么用好它。

在聊拼接之前,咱们先快速明确一下什么是“字符串”。在编程里,任何一段文本,比如"这是一个信号"或者"价格突破",都叫字符串。你可以直接在代码里用单引号或双引号把它写出来,也可以把它存到一个变量里。

而用+号来拼接它们时,有几个铁律你必须记住:

  1. 类型必须统一:加号+的两边必须都是字符串。你不能拿一个字符串直接去加一个数字,比如"买入价:" + 128.5,程序会看不懂,直接报错。这就像你不能拿苹果加橘子,然后问等于几个苹果一样,类型不同,没法运算。
  2. 数字需要翻译:那如果我非要把一个数字,比如当前的价格,拼接到文字里怎么办?很简单,用str.tostring()函数先把它“变身”成字符串。比如,想显示“前一根收盘价是123.45”,正确的写法是"前一根收盘价是" + str.tostring(close[1])。你可以把str.tostring()理解为数字到文字的翻译官。
  3. 拼接不是加法:当+号两边是字符串时,它做的是“拼接”,不是“数学加法”。所以"25" + "2"的结果是文字"252",而不是数字27。这一点要分清楚。

这里还有一个重要的坑需要注意:在目前版本的PineScript里,用str.tostring()转换出来的文字,还不能直接在图表上显示出来(比如用在plotchar()plotshape()text参数里)。这个限制后续版本可能会改变,但目前你需要知道,它主要用于代码内部的逻辑判断或调试。

案例一:拼接固定的文字

下面的例子展示了如何用+号连接几个固定的字符串,并用换行符\n来创建多行文本标签。

//@version=6
indicator(title="字符串拼接案例一", overlay=true)

// 1. 判断当前K线是否创下30天新高或新低
newHigh = high == ta.highest(high, 30)
newLow  = low == ta.lowest(low, 30)

// 2. 拼接要在图表上显示的文本
// 使用 "+" 连接字符串,"\n" 是换行符
highText = "New" + "\n" + "high"
lowText  = "New" + "\n" + "30-bar" + "\n" + "low"

// 3. 在图表上绘制形状和对应的文本
plotshape(newHigh, location=location.abovebar,
     style=shape.diamond, color=color.blue, text=highText)
plotshape(newLow, location=location.belowbar,
     style=shape.circle, color=color.purple, text=lowText)

代码逻辑分为三步: 首先,我们定义了两个布尔变量newHighnewLow,用来判断价格是否创下30周期新高或新低。 然后,我们创建了两个字符串变量highTextlowText。通过+号把几个短的字符串和换行符\n拼接起来,组合成我们想要的显示格式。 最后,用plotshape()函数,当newHighnewLow条件成立时,就在图表上画出相应的形状和我们刚刚拼接好的文本。

将此示例添加到图表后,效果如下:

案例二:拼接文字和变量

加法运算符不仅能连接固定的文字,也能把一个固定的文字和一个存储着文字的变量组合起来,实现更动态的效果。

//@version=6
indicator(title="字符串拼接案例二", overlay=true)

// 1. 定义一个基础文本
beginText = "Closed "

// 2. 定义K线收高的条件
closedHigher = close > open

// 3. 根据K线是阳是阴,绘制不同的箭头并拼接不同的文本
// 如果是阳线 (closedHigher为true)
plotshape(closedHigher, style=shape.arrowup,
     location=location.belowbar, color=color.green,
     text=beginText + "higher")

// 如果不是阳线 (not closedHigher为true)
plotshape(not closedHigher, style=shape.arrowdown,
     location=location.abovebar, color=color.red,
     text=beginText + "lower")

在这个例子里,我们先创建了一个字符串变量beginText,它的内容是"Closed "。注意末尾的那个空格,这是个小技巧,可以确保后面拼接的单词不会和它粘在一起。

接着,我们根据K线是阳线还是阴线(closedHighertrue还是false),在调用plotshape()函数时,动态地把beginText变量和"higher""lower"这两个字符串字面量进行拼接,作为text参数的值。

将此指标添加到图表后,效果如下:

总结

在PineScript里,一段文本被称为“字符串”,加法运算符+不仅能用于数字相加,还能用于连接(或称“拼接”)字符串。进行字符串连接时,+号两侧的操作数必须都是字符串类型,如果需要将数字拼接到字符串中,必须先使用str.tostring()函数将该数字“翻译”成字符串。我们可以通过换行符"\n"在字符串中创建新的一行,让标签显示更美观。

赞(0)
未经允许不得转载:图道交易 » Pine Script(5):用加法运算符连接字符串
分享到

评论 抢沙发

登录

找回密码

注册