PineScript报错:Series float传fun_arg[]及函数返回数组问题求助
问题解决思路与修正代码
错误原因分析
- 类型不匹配错误:
percentR1是Pine Script的series float类型(逐K线的序列值),但你试图用array.size()去处理它——这个函数仅支持数组类型,因此触发类型不匹配报错。 - for循环错误:
array.size()返回的是series int(随K线动态变化的序列值),而Pine Script的for循环要求终止值是常量数值,不能是动态序列;另外你试图用数组处理序列值的思路完全错误,Pine Script是矢量化语言,无需手动遍历序列元素。
修正方案
无需使用数组,直接对series类型的Williams %R值做矢量化运算即可,函数直接返回转换后的序列:
//@version=5 indicator("Williams Percent Range Average", shorttitle="Williams %R", format=format.price, precision=2, timeframe="", timeframe_gaps=true) // Williams Settings williamsGroup = "=== WILLIAMS ===" lengthWilliams1 = input(title="Length", defval=13, group=williamsGroup) lengthWilliams2 = input(title="Length", defval=21, group=williamsGroup) lengthWilliams3 = input(title="Length", defval=34, group=williamsGroup) lengthWilliamsAverage = math.round((lengthWilliams1 + lengthWilliams2 + lengthWilliams3) / 3) srcWilliams = input(close, "Williams Source") _pr(length) => max = ta.highest(length) min = ta.lowest(length) 100 * (srcWilliams - max) / (max - min) percentR1 = _pr(lengthWilliams1) percentR2 = _pr(lengthWilliams2) percentR3 = _pr(lengthWilliams3) percentR4 = _pr(lengthWilliamsAverage) // 修正后的转换函数:直接处理series类型,无需数组 convertWilliams(williamsSeries) => multiplier = 0.0625 diff_n = williamsSeries + 80 n_multi = diff_n * multiplier new_n = (williamsSeries / (-4 + n_multi)) + 20 new_n // 调用转换函数得到转换后的序列 modifiedR1 = convertWilliams(percentR1) modifiedR2 = convertWilliams(percentR2) modifiedR3 = convertWilliams(percentR3) modifiedR4 = convertWilliams(percentR4) // 可选:绘制转换后的指标 plot(modifiedR1, color=color.new(color.blue, 0), title="Modified R1") plot(modifiedR2, color=color.new(color.red, 0), title="Modified R2") plot(modifiedR3, color=color.new(color.green, 0), title="Modified R3") plot(modifiedR4, color=color.new(color.orange, 0), title="Modified Average R")
关键说明
- Pine Script的核心是矢量化运算:对
series类型的变量做运算时,会自动对每一根K线的数值执行计算,无需手动遍历或使用数组。 - 修正后的
convertWilliams函数直接接收series float参数,返回转换后的series float,完全适配原代码的变量类型。
内容的提问来源于stack exchange,提问作者PleaseSir MayIHaveSomeMore
相关产品推荐
相关产品推荐

