Pine Script分割字符串绘制hline时解决series数组类型错误
解决Pine Script中hline参数类型不匹配问题
问题说明
- 需求目标:
- 脚本获取输入字符串
- 按
|分割字符串为多个分组 - 每个分组再按
,分割,提取数值部分 - 为每个数值绘制水平线
- 报错信息:
无法调用'hline',参数'price'='level'使用了series float类型,但需要input float类型
错误原因
Pine Script的hline()函数要求price参数是编译期常量(input float类型),原代码中通过str.tonumber()在bar_index == 0条件块内转换得到的level是运行时动态计算的series float类型,不符合函数参数类型要求,因此触发报错。
解决方案
核心是在全局作用域完成字符串解析,确保生成的水平线数值是编译期可识别的常量:
- 在全局作用域将输入字符串按
|分割为分组数组 - 对每个分组,按
,分割后过滤掉名称、空字符串,转换为float类型数组 - 遍历每个分组的数值数组,调用
hline()绘制对应水平线
完整修正代码
//@version=5 indicator("Split Example", overlay=true) // 输入字符串 paste_values_here = input(defval = "GEXFLIPS,147, 148, 150, 153, 156, 159, 161, 165, 166, 180, 181, 182, 183, 184, 186, 187, 188, 189|GEXLEVELSP,147, 157, 200|GEXLEVELSN,192, 205|GEXLEVELSHP,147, 200, 157|GEXLEVELSHN,205, 192|VOLLEVELSC,195|VOLLEVELSP,174, 186|VOLLEVELSHC,195|VOLLEVELSHP,174, 186", title="输入水平线索引字符串") // 全局作用域解析字符串:按|分割为分组 groups = str.split(paste_values_here, "|") // 定义颜色映射,对应不同分组 color_map = dict.new(string, color) dict.set(color_map, "GEXFLIPS", color.blue) dict.set(color_map, "GEXLEVELSP", color.green) dict.set(color_map, "GEXLEVELSN", color.red) dict.set(color_map, "GEXLEVELSHP", color.new(color.green, 50)) dict.set(color_map, "GEXLEVELSHN", color.new(color.red, 50)) dict.set(color_map, "VOLLEVELSC", color.orange) dict.set(color_map, "VOLLEVELSP", color.purple) dict.set(color_map, "VOLLEVELSHC", color.new(color.orange, 50)) dict.set(color_map, "VOLLEVELSHP", color.new(color.purple, 50)) // 遍历每个分组解析并绘制水平线 for group in groups group_parts = str.split(group, ",") if array.size(group_parts) < 2 continue // 跳过无数值的分组 group_name = str.trim(array.get(group_parts, 0)) // 提取数值部分,转换为float levels = array.new_float() for i = 1 to array.size(group_parts) - 1 val_str = str.trim(array.get(group_parts, i)) val = str.tonumber(val_str) if not na(val) array.push(levels, val) // 绘制当前分组的所有水平线 group_color = dict.get(color_map, group_name, color.gray) for level in levels hline(level, group_name + " " + str.tostring(level), color=group_color)
内容的提问来源于stack exchange,提问作者jimuty
相关产品推荐
相关产品推荐

