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

如何用两种颜色简化Pine Script中21元素颜色数组定义?

Pine Script 双色数组简化定义方案(解决越界错误)

问题根源

出现数组越界的核心原因是数组初始化长度与后续操作不匹配:要么创建数组时未指定21元素的长度,要么使用array.fill时范围参数超出了数组实际长度。

可行实现方案

直接通过「先创建指定长度的默认数组,再修改首个元素」的方式,既能简化代码,又能避免越界:

//@version=5
indicator("多工具筛选器(简化数组版)", overlay=true)

// 定义所需的两种颜色
highlight_cell = color.new(color.blue, 0)
default_cell = color.new(color.gray, 20)
highlight_text = color.new(color.white, 0)
default_text = color.new(color.black, 0)

// 初始化21元素的cell_color数组,默认填充通用颜色
cell_color = array.new_color(21, default_cell)
// 修改首个元素为高亮色(数组索引从0开始)
array.set(cell_color, 0, highlight_cell)

// 同理处理text_color数组
text_color = array.new_color(21, default_text)
array.set(text_color, 0, highlight_text)

// (以下为你的多工具筛选器业务逻辑,可直接复用上述数组)
// ... 你的原有筛选器代码 ...

关键逻辑说明

  1. array.new_color(21, default_cell):直接创建包含21个元素的数组,所有元素默认设为通用颜色,避免后续填充时的长度问题。
  2. array.set(arr, 0, highlight_color):通过索引0修改首个元素,符合Pine Script数组从0开始计数的规则,不会触发越界。

替代方案(手动填充,适合理解逻辑)

如果不想用默认初始化,也可以先添加首个元素,再批量填充剩余20个:

cell_color = array.new_color()
array.push(cell_color, highlight_cell)
// 填充20个通用颜色
for i = 0 to 19
    array.push(cell_color, default_cell)

这种方式也能得到21元素的数组,但效率略低于第一种方案,适合新手理解数组构建过程。

内容的提问来源于stack exchange,提问作者Zclaws77

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 18:12:45