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

Pine Script(17):字符串函数的用法

#Pine Script入门教学

我们写的很多指标或策略,可能只想让它在特定的交易品种上运行。比如,一个专门为加密货币设计的波动率指标,或者一个只想在所有以“USD”结尾的货币对上运行的策略。要实现这种“筛选”功能,我们就需要学会如何处理和比较文本,也就是我们说的“字符串”。

在介绍具体的函数前,我们要先知道,如果你只是想判断两个字符串是否“完全一样”,可以直接用我们熟悉的比较运算符==(等于)和!=(不等于)。而我们今天要讲的这几个函数,解决的是更模糊的“包含”关系,功能更强大。

PineScript为此提供了三个非常方便的内置函数,专门用来检查一个字符串是否包含、开头或结尾是特定的文字

函数 描述
str.contains() 判断主字符串中是否包含指定的子字符串。

str.startswith() 判断主字符串是否以指定的子字符串开头。

str.endswith() 判断主字符串是否以指定的子字符串结尾。

这里有个最重要的“坑”,你必须从一开始就牢牢记住:这三个函数都严格区分大小写。比如,'BTC''btc'在程序看来是完全不同的东西。下面我们会反复看到这一点。

str.contains():检查是否“包含”指定文本

这个函数用来检查一段文本里是否“包含”另一小段文本,无论位置在哪 。它非常适合用来做宽泛的品种筛选。比如,你想知道当前图表的品种是不是比特币,不管是BTCUSDBTCEUR还是XBTUSD,只要品种代码里含有BTC就行。

它的用法很简单:str.contains(主字符串, 要查找的子字符串)

// 检查 "BTCUSD" 字符串中是否包含 "BTC"

btcInstrument = str.contains("BTCUSD", "BTC")

但如果你不注意大小写,就会出问题。比如,你想检查当前图表的品种代码(syminfo.ticker通常返回大写字母)是否包含小写的"btc"

// 假设当前品种是BTCUSD,程序会检查 "BTCUSD" 是否包含小写的 "btc"
isBtcSymbol = str.contains(syminfo.ticker, "btc")
str.startswith():检查是否以指定文本“开头”

这个函数用来判断一个字符串是不是以某段特定的文字“开头” 。这在筛选某一类资产时特别有用。比如,所有以EUR开头的货币对(如EURUSD, EURGBP, EURJPY)。

// 检查 "SOLUSDT" 字符串是否以 "SOL" 开头
// 因为完全匹配(包括大小写),所以solInstrument的值为true
solInstrument = str.startswith("SOLUSDT", "SOL")

同样的,大小写问题依然存在。如果你用小写的"sol"去检查大写的"SOLUSDT",结果会是false

str.endswith():检查是否以指定文本“结尾”

startswith()相反,这个函数用来判断字符串是不是以某段文字“结尾” 。这同样是筛选利器。比如,在外汇中,你可以用它来找到所有以JPY结尾的日元交叉盘;在加密货币中,你可以找到所有以USDT为计价单位的交易对。

// 检查 "EURGBP" 字符串是否以 "GBP" 结尾
// 因为完全匹配,所以gbpInstrument的值为true
gbpInstrument = str.endswith("EURGBP", "GBP")

同样的,用小写的"gbp"去检查大写的"EURGBP",会因为大小写不匹配而返回false

总结

PineScript提供了三个主要的字符串包含关系比较函数:1、str.contains()(包含)、str.startswith()(开头是)和str.endswith()(结尾是) 。2、这三个函数是你实现“品种筛选”和“动态标签”等功能的得力助手。3、使用时必须牢记最重要的一点:所有比较都严格区分大小写。

赞(0)
未经允许不得转载:图道交易 » Pine Script(17):字符串函数的用法
分享到

评论 抢沙发

评论前必须登录!

立即登录   注册

登录

找回密码

注册