Pine Script调用hline函数参数类型不匹配报错,寻求解决方案
问题解决:Pine Script hline类型错误
错误原因
调用hline()时出现类型不匹配,核心原因如下:
hline()是编译时函数,仅能接收编译阶段就确定的常量值,无法处理运行时生成的series类型变量- 原代码里
var level = o + i定义的level属于series int类型,不符合price参数要求的input float(编译时常量)类型 - 另外,
hline()不能在for循环中直接调用,它是脚本初始化阶段执行的函数,无法在运行时动态创建
修正代码
//@version=5 indicator("My script", overlay = true) base_price = 21304 rg = 100 // 仅在第一个K线时计算所有符合条件的价位 var float[] levels_array = array.new_float() if barstate.isfirst for i = -rg to rg level = base_price + i if level % 100 == 0 array.push(levels_array, level) // 绘制基础开盘价水平线 hline(base_price, "OPEN PRICE", color.green, hline.style_solid, 1, true) // 批量绘制所有100整数倍价位的水平线 hline.from_array(levels_array, "Levels", color.green, hline.style_solid, 2)
修正说明
- 用
barstate.isfirst确保价位计算仅执行一次,避免重复操作 - 借助数组存储所有符合
%100 == 0条件的价位,再通过hline.from_array()批量创建水平线,该函数支持数组类型的常量集合,满足hline的类型要求 - 移除不必要的
var修饰符,确保基础值为编译时常量
内容的提问来源于stack exchange,提问作者Steakysteak
相关产品推荐
相关产品推荐

