Pine Script报错:Extraneous input '0' expecting ']' 求问题定位与修复
Pine Script错误:Extraneous input '0' expecting ']' 修复方案
错误定位
你遇到的错误根源是Pine Script不支持array[idx][0]这种二维数组直接访问语法。你写的pairs = array.new_float(10, 2)只是创建了一个长度为10、每个元素初始值为2的一维float数组,并非二维数组,因此pairs[idx][0]的写法违反语法规范,触发了报错。
修复思路
使用Pine Script的嵌套数组(数组的数组)或元组来存储EMA配对:
- 嵌套数组:创建主数组存储子数组,每个子数组存放一对EMA值
- 元组:直接将一对EMA值打包成元组存入数组,写法更简洁
修复后的代码(嵌套数组版本)
//@version=5 indicator("Count EMA Crossovers", overlay=false) emas = array.new_float(5) emas[0] := ta.ema(close, 7) emas[1] := ta.ema(close, 20) emas[2] := ta.ema(close, 50) emas[3] := ta.ema(close, 100) emas[4] := ta.ema(close, 200) // 创建存储子数组的主数组 pairs = array.new_array() idx = 0 for i = 0 to 3 for j = i + 1 to 4 // 为每对EMA创建子数组并赋值 pair_arr = array.new_float(2) array.set(pair_arr, 0, emas[i]) array.set(pair_arr, 1, emas[j]) // 将子数组添加到主数组 array.push(pairs, pair_arr) idx += 1 count = 0 for pair in pairs // 取出子数组中的两个EMA值 ema_short = array.get(pair, 0) ema_long = array.get(pair, 1) if ema_long > ema_short count += 1 plot(count, title="Count Cross", color=color.blue, style=plot.style_histogram)
简化版本(元组实现)
如果不想用嵌套数组,可以用元组简化代码:
//@version=5 indicator("Count EMA Crossovers", overlay=false) emas = array.new_float(5) emas[0] := ta.ema(close, 7) emas[1] := ta.ema(close, 20) emas[2] := ta.ema(close, 50) emas[3] := ta.ema(close, 100) emas[4] := ta.ema(close, 200) // 创建存储元组的数组 pairs = array.new_tuple() for i = 0 to 3 for j = i + 1 to 4 // 将一对EMA打包成元组存入数组 array.push(pairs, tuple(emas[i], emas[j])) count = 0 for pair in pairs // 从元组中提取两个EMA值 ema_short = tuple.get(pair, 0) ema_long = tuple.get(pair, 1) if ema_long > ema_short count += 1 plot(count, title="Count Cross", color=color.blue, style=plot.style_histogram)
内容的提问来源于stack exchange,提问作者NqHai
相关产品推荐
相关产品推荐

