如何在Pine Script中两两检查数组布尔值条件?代码调试求助
修正后的解决方案
你的代码存在两个核心问题:
- 循环遍历每个元素时,当
i取到数组最后一个索引,i+1会超出数组范围,引发索引越界错误 - 当前循环逻辑会重复检查相邻元素(比如
i=0检查a&b,i=1检查b&c),不符合两两分组独立检查的需求
以下是修正后的代码,完美实现你需要的两两分组判断逻辑:
//@version=5 indicator("TEST", overlay = true) var tbl = table.new(position.top_right, 3, 6, frame_width = 1, border_width = 1, border_color = #696969) a = false b = true c = false d = true e = false f = true arr_bool = array.from(a, b, c, d, e, f) arr_string = array.new_string(0) // 步长设为2,每次处理一组两个元素 for i = 0 to array.size(arr_bool) - 1 step 2 // 确保i+1不超出数组范围(兼容数组长度为奇数的情况) if i + 1 < array.size(arr_bool) if array.get(arr_bool, i) or array.get(arr_bool, i+1) array.push(arr_string, 'TEST') // 如果数组长度为奇数,单独处理最后一个元素 else if array.get(arr_bool, i) array.push(arr_string, 'TEST') if barstate.islast for i = 0 to array.size(arr_string) - 1 table.cell(tbl, 0, i, text = str.tostring(array.get(arr_string, i)), text_color = color.white, bgcolor = #696969)
关键修改点说明
- 循环步长设置:使用
step 2让循环每次跳过一个元素,确保每次处理(i, i+1)为一组的两个元素,不会重复检查 - 越界保护:增加
i + 1 < array.size(arr_bool)的判断,避免当数组长度为奇数时,最后一次循环出现索引越界问题 - 分组逻辑:严格按照
(a或b)、(c或d)、(e或f)的分组方式进行判断,每组独立生成一个"TEST"结果
内容的提问来源于stack exchange,提问作者zollen 123
相关产品推荐
相关产品推荐

