如何在指标窗格绘制52周最大值水平线?解决hline参数类型报错
解决Pine Script中hline传入series类型参数的报错问题
你遇到的问题核心是:hline()函数仅接受静态的input数值类型,但ta.highest()返回的是动态的series类型(哪怕用var初始化,本质还是series),所以会触发类型不匹配的报错。
针对你想要显示“固定不变的过去一年最大值水平线”的需求,有两种解决方案:
方案1:改用plot()函数(推荐)
plot()支持series类型参数,只要用var确保最大值只计算一次、后续不再更新,就能画出固定的水平线。示例代码:
// 假设myseries是你要计算的数据源,比如close var float maxLevel := ta.highest(close, 52) // 控制是否显示水平线的开关(假设show_maxLevel是你定义的input开关) plot(show_maxLevel ? maxLevel : na, title="52-Week Max", color=color.red, style=plot.style_line, linewidth=2)
这里var关键字让maxLevel在脚本首次运行时计算一次52周期的最大值,之后保持固定,plot会把这个固定值绘制成贯穿整个图表的水平线。
方案2:继续使用hline()(需转换参数类型)
如果一定要用hline(),可以把计算出的最大值赋值给一个静态input变量,再传递给hline()。示例代码:
var float maxLevel = ta.highest(close, 52) // 用var定义input,仅初始化一次 var input_float hlineLevel = input.float(maxLevel, title="52-Week Max Level") hline(hlineLevel, "52-Week Max", color=color.red, linestyle=hline.style_solid)
这种方式下,hlineLevel是静态的input值,只会在脚本加载或切换时间框架时重新计算,平时保持固定,符合你“无随时间变化”的要求。
内容的提问来源于stack exchange,提问作者cody
相关产品推荐
相关产品推荐

