You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 09:32:39