我们已经学会了用str.contains()
做模糊搜索,用str.startswith()
做前缀匹配。现在,我们来学习这个系列的最后一个工具:str.endswith()
。
顾名思义,它专门用来判断一个字符串是否以某段特定的文字“结尾”。这个功能在筛选特定计价货币的交易对时,非常有用。比如,我想让一个策略只在所有以'USDT'
结尾的加密货币对上运行,或者只在'JPY'
结尾的日元交叉盘上运行。
str.endswith()
的核心规则
它的用法和前两个函数完全一样:str.endswith(主字符串, 要查找的子字符串)
。它的返回规则也遵循相同的逻辑:
- 常规情况:只有当“主字符串”的结尾部分与“子字符串”一模一样时,才返回
true
;否则返回false
。 - 最重要的规则:同样,严格区分大小写。
'USD'
和'usd'
是两码事。 - 空值“陷阱”:如果被查找的
子字符串
是空的(""
或na
),函数会认为“任何字符串都以空字符串结尾”,所以结果总是true
。 - 被搜索对象为空:如果你在一个空的主字符串里去查找一个非空的子字符串,结果肯定是
false
。
这个函数的应用场景非常明确,主要就是做“后缀匹配”。最经典的应用就是通过品种代码的后缀来筛选特定类别的资产,比如所有以'EUR'
结尾的欧元计价货币对。此外,你也可以用它来验证用户输入的内容、过滤数组里的特定元素,或者分析交易订单的备注信息等等。
严格区分大小写!
我要最后一次强调,contains
, startswith
和endswith
这三兄弟,在比较时,对字母的大小写都极度敏感。这是新手最常犯的错误,一定要刻在脑子里。
下面这个表格能让你看得更清楚:
筛选所有以“USD”为计价货币的品种
下面的指标会检查当前交易品种的代码(syminfo.ticker
)是否以“USD”结尾。如果符合,那么这个交易品种的计价货币很可能就是美元。这个功能可以让你写出一个通用的策略,但在面对不同计价货币的品种时,可以有不同的风险参数或仓位大小。
//@version=6
indicator(title="str.endswith() 案例", overlay=true)
// 1. 检查当前品种代码,判断是否以"USD"结尾
usdInstrument = str.endswith(syminfo.ticker, "USD")
// 2. 用标签显示判断结果
if barstate.islastconfirmedhistory
// 创建一个新标签,显示判断结果
label.new(bar_index, high, color=color.black, textcolor=color.white,
text="品种代码: " + syminfo.ticker +
"\n\n是否以'USD'结尾?\n" +
str.tostring(usdInstrument))
在图表上,这个标签会显示当前交易品种的代码,并告知它是否以“USD”结尾。(当你将图表切换到其他交易品种时,标签中显示的信息也会随之更新。)
总结
str.endswith()
是你文本处理工具箱里负责“后缀匹配”的专家。至此,我们已经学完了字符串比较的三剑客:
str.contains()
负责模糊包含str.startswith()
负责前缀匹配str.endswith()
负责后缀匹配
它们都在Pine Script v6
版本以上可用,并且都严格区分大小写。灵活运用这三个函数,你的脚本就能拥有识别不同交易品种的“火眼金睛”,变得更加智能和强大。
评论前必须登录!
立即登录 注册