Pine Script是否具备可用于交易代码处理的字符串替换/替代函数?
Pine Script 实现交易代码字符替换适配Quandl数据源的方法
场景说明
当前用于通过Quandl获取每日做空成交量的脚本,直接拼接syminfo.ticker生成数据源标识时,存在优先股、分级股(如BRK.A、BRK.B)取数失败的问题。原因是这类带层级标识的交易代码在Quandl侧的格式,会把代码中的字面句点替换为斜杠或下划线,和TradingView提供的原生交易代码格式不匹配。
原有实现代码:
quandl_ticker = "QUANDL:FINRA/FNSQ_" + syminfo.ticker quandl_dly_sh_vol = security(quandl_ticker, "D", close )
期望的实现逻辑是把这类代码中的句点替换为下划线,例如将BRK.B转换为BRK_B,适配Quandl的格式要求。
对应实现方案
Pine Script 原生提供字符串替换函数,可以直接实现上述转换需求,无需自行编写遍历匹配逻辑。
- 可使用的核心替换函数:
str.replace_all()- 功能:遍历输入的目标字符串,将所有匹配到的指定旧字符串,全部替换为自定义的新字符串
- 基础语法:
str.replace_all(需要处理的原字符串, 待替换的旧字符/字符串, 替换后的新字符/字符串)
修改后的可运行代码
在原有拼接逻辑前增加一步交易代码的格式处理即可:
// 替换交易代码中的所有句点为下划线,适配Quandl格式 formatted_ticker = str.replace_all(syminfo.ticker, ".", "_") quandl_ticker = "QUANDL:FINRA/FNSQ_" + formatted_ticker quandl_dly_sh_vol = security(quandl_ticker, "D", close )
补充说明:该函数为Pine Script v5及以上版本的内置标准函数;若使用v4版本,可通过多次调用
str.replace()实现同等效果,推荐优先升级脚本到v5版本,str.replace_all()可以一次性覆盖所有带句点的特殊交易代码场景,适配性更强。
内容的提问来源于stack exchange,提问作者sgdata
相关产品推荐
相关产品推荐

