Pine Script RBR模式代码绘制基础蜡烛矩形报错求助
问题解决:Pine Script绘制RBR模式矩形报错
错误原因
报错信息翻译:无法调用'hline',因为'price'参数是series[float]类型,该参数应为input float类型
hline()是用来绘制固定水平线的函数,要求传入固定不变的数值(比如手动输入的价格),但你通过security()获取的日线高低是随K线更新的序列值(每个K线对应不同的值),类型不匹配导致报错。
修正方案
用box.new()函数替代hline()+fill()来绘制矩形,这个函数支持动态的价格和时间参数,适合识别到模式后在对应蜡烛位置绘制矩形。同时修正模式识别逻辑,确保准确找到RBR模式中的基础蜡烛位置:
//@version=4 study("RBR Pattern", overlay=true) rally_body_pct = 75 base_body_pct = 50 max_candles = 6 // 定义阳线的实体占比条件 base = close > open and (close - open)/(high - low) * 100 <= base_body_pct rally = close > open and (close - open)/(high - low) * 100 >= rally_body_pct // 识别RBR模式:Rally -> Base -> Rally 结构 rbr = false baseBarIndex = na for i = 0 to max_candles - 2 // 避免i+2超出数组范围 if rally[i] and base[i+1] and rally[i+2] rbr := true baseBarIndex := bar_index[i+1] // 记录基础蜡烛的bar索引 break // 绘制基础蜡烛周围的矩形 if not na(baseBarIndex) // 获取基础蜡烛的高低价和时间范围 baseHigh = high[bar_index - baseBarIndex] baseLow = low[bar_index - baseBarIndex] baseLeftTime = time[bar_index - baseBarIndex] baseRightTime = time[bar_index - baseBarIndex + 1] // 绘制矩形 box.new(left=baseLeftTime, top=baseHigh, right=baseRightTime, bottom=baseLow, color=color.green, transp=80, border_color=color.green, border_width=2) plot(close)
关键修改点
- 替换
hline()+fill()为box.new(),支持动态绘制矩形 - 新增
baseBarIndex变量记录基础蜡烛的位置,确保矩形准确画在目标蜡烛上 - 调整循环范围避免数组越界
- 直接使用基础蜡烛自身的高低价(而非日线数据),符合“在基础蜡烛周围绘制矩形”的需求
内容的提问来源于stack exchange,提问作者Tushar Dahiya
相关产品推荐
相关产品推荐

