Pine Script循环数组绘制水平线报错:参数类型不匹配求助
问题分析
报错原因是hline()函数的price参数要求传入常量类型(input float/固定数值),但你的代码中abc被识别为series float类型,不符合参数要求。
修正代码
方式一:直接计算目标价格(最简洁)
直接计算110%、120%、130%的价格并绘制水平线,无需数组和循环:
//@version=5 indicator("test123", overlay=true) aHigh = input.float(title="aHigh", defval=750.00) // 计算并绘制三个水平线 hline(aHigh * 1.1, "110%", color.red) hline(aHigh * 1.2, "120%", color.blue) hline(aHigh * 1.3, "130%", color.green)
方式二:保留数组逻辑的写法
如果要保留数组存储比例的思路,需确保计算出的价格为常量,调整代码如下:
//@version=5 indicator("test123", overlay=true) aHigh = input.float(title="aHigh", defval=750.00) // 初始化需要的比例数组 var upswing = array.new_float(3, 0.0) array.set(upswing, 0, 1.1) array.set(upswing, 1, 1.2) array.set(upswing, 2, 1.3) // 循环绘制水平线,直接传入常量计算结果 for _i = 0 to array.size(upswing)-1 ratio = array.get(upswing, _i) hline(aHigh * ratio, str.tostring(ratio*100) + "%", color=color.red)
关键说明
hline()是编译期执行的函数,仅接受常量参数,无法使用动态变化的series类型变量;- 原代码循环到10但仅初始化了数组前3个元素,会导致后续水平线价格为0,无实际意义,建议只保留需要的比例值;
- 使用
input.float()替代input()可明确变量类型,避免潜在的类型识别问题。
内容的提问来源于stack exchange,提问作者Blankman
相关产品推荐
相关产品推荐

