Pine V5类型问题:TradingView图表显示RSI数值plotshape传参报错咨询
错误原因
plotshape函数的text参数仅支持固定不变的常量字符串类型,你传入的vt_rsi_str是随每根K线RSI值动态变化的序列字符串,不符合参数类型要求,因此触发报错。
解决方案
改用支持动态文本的label.new函数实现需求,该函数可以在每根符合条件的K线上生成自定义内容的标签,完美适配动态显示RSI数值的场景。
修改后的代码示例:
//@version=5 indicator("K线标注RSI值", overlay=true) vt_rsi = ta.rsi(close,14) // 此处保留你原有的vt_rsi_up触发逻辑,可根据自身需求调整触发条件 vt_rsi_up = ta.rising(vt_rsi, 1) if vt_rsi_up // 在符合条件的K线上方生成带RSI数值的箭头标签 label.new( bar_index, high, text = str.tostring(vt_rsi, "#"), // #代表显示整数,要保留小数可写为#.## color = #1848cc, textcolor = color.white, style = label.style_label_up, // 自带向上箭头效果,匹配你原来的shape.arrowup样式 location = location.abovebar, size = size.small )
可选优化
如果觉得K线上标签太多太密,可以加标签清理逻辑,只保留最近N个标签,示例如下:
//@version=5 indicator("K线标注RSI值", overlay=true) var label[] rsi_labels = array.new_label() vt_rsi = ta.rsi(close,14) vt_rsi_up = ta.rising(vt_rsi, 1) max_label_count = 10 // 最多保留最近10个标签 if vt_rsi_up new_label = label.new(bar_index, high, text = str.tostring(vt_rsi, "#"), color = #1848cc, textcolor = color.white, style = label.style_label_up, location = location.abovebar, size = size.small) array.push(rsi_labels, new_label) // 超出最大数量时删除最早的标签 if array.size(rsi_labels) > max_label_count label.delete(array.shift(rsi_labels))
内容的提问来源于stack exchange,提问作者Doug
相关产品推荐
相关产品推荐

