如何使用Pinescript处理字符串数组并创建布尔输入变量
PineScript 需求解决方案
1. 字符串数组清理(移除指定子串)
针对需要移除'NSE:'、'CNX'、'NIFTY'生成目标数组的需求,str.split()更适合固定分隔符拆分场景,这里用**链式str.replace()**直接移除多规则子串更高效。
实现代码
// 定义单字符串清理函数 cleanTicker(str) => str.replace(str, "NSE:", "") // 移除前缀NSE: .replace("CNX", "") // 移除中间子串CNX .replace("NIFTY", "") // 移除后缀NIFTY // 原数组 si_title_arr = array.from('NSE:CNXAUTO', 'NSE:BANKNIFTY', 'NSE:CNXENERGY') // 生成清理后的新数组 cleaned_ticker_arr = array.new_string() for i = 0 to array.size(si_title_arr) - 1 original_str = array.get(si_title_arr, i) array.push(cleaned_ticker_arr, cleanTicker(original_str))
执行后cleaned_ticker_arr的元素为:['AUTO', 'BANK', 'ENERGY'],完全符合需求。
2. 创建布尔输入变量
使用PineScript内置的input.bool()函数创建交互式布尔输入,替代直接赋值false的写法,用户可在图表设置面板手动切换开关状态。
实现代码
// 创建布尔输入变量,支持在图表设置中调整 i_show_tickerid = input.bool(title="显示原始Ticker ID", defval=false, group="显示设置")
完整整合代码(结合现有逻辑)
// 创建布尔输入变量 i_show_tickerid = input.bool(title="显示原始Ticker ID", defval=false, group="显示设置") // 初始化原数组与透明度数组(需确保transp_arr已定义) si_title_arr = array.from('NSE:CNXAUTO', 'NSE:BANKNIFTY', 'NSE:CNXENERGY') transp_arr = array.from(90, 90, 90) tc = table.new(position.top_right, columns=4, rows=3) // 初始化表格 // 字符串清理函数 cleanTicker(str) => str.replace(str, "NSE:", "") .replace("CNX", "") .replace("NIFTY", "") // 生成清理后的数组 cleaned_ticker_arr = array.new_string() for i = 0 to array.size(si_title_arr) - 1 array.push(cleaned_ticker_arr, cleanTicker(array.get(si_title_arr, i))) // 表格渲染逻辑 if barstate.islast for i = 0 to array.size(si_title_arr) - 1 // 根据输入变量切换显示内容 text_i = i_show_tickerid ? array.get(si_title_arr, i) : array.get(cleaned_ticker_arr, i) transp_i = array.get(transp_arr, i) table.cell(table_id=tc, column=i + 1, row=2, text=text_i, text_color=#808080, bgcolor=color.new(#808080, transp_i))
内容的提问来源于stack exchange,提问作者Arun_K_Bhaskar
相关产品推荐
相关产品推荐

