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

如何正确计算两个同大小数组的差值并生成新数组?

在Pine Script中实现两个数组的逐元素差值计算

在Pine Script里,数组并不支持直接用A-B这种运算符重载的方式计算逐元素差值,必须通过遍历数组索引,手动计算每个位置的差值来实现。

具体实现步骤

  1. 创建一个与原数组大小相同的目标数组,用于存储差值结果;
  2. 遍历数组的每个索引位置,分别取出两个原数组对应位置的元素;
  3. 计算差值后,将结果存入目标数组的对应位置。

完整代码示例(整数数组)

//@version=5
indicator("数组差值计算演示", overlay=false)

// 初始化两个相同大小的整数数组
A = array.new_int(100, -1)
B = array.new_int(100, 1)

// 创建存储差值的目标数组,大小与A、B一致
C = array.new_int(array.size(A), 0)

// 遍历每个索引,计算并赋值差值
for i = 0 to array.size(A) - 1
    val_a = array.get(A, i)
    val_b = array.get(B, i)
    array.set(C, i, val_a - val_b)

// 验证:打印第一个元素的差值结果(可选)
if barstate.islast
    label.new(bar_index, close, "C[0] = " + str.tostring(array.get(C, 0)), color=color.green, textcolor=color.white)

处理浮点数数组的情况

如果是浮点数数组,只需要将数组类型从_int改为_float即可,逻辑完全一致:

//@version=5
indicator("浮点数数组差值计算", overlay=false)

A = array.new_float(100, -1.2)
B = array.new_float(100, 3.5)
C = array.new_float(array.size(A), 0.0)

for i = 0 to array.size(A) - 1
    array.set(C, i, array.get(A, i) - array.get(B, i))

注意事项

  • 确保两个原数组的大小完全一致,否则遍历过程中会出现索引越界错误;
  • 数组索引从0开始,所以循环范围是0到array.size(A)-1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 00:15:34