如何正确计算两个同大小数组的差值并生成新数组?
在Pine Script中实现两个数组的逐元素差值计算
在Pine Script里,数组并不支持直接用A-B这种运算符重载的方式计算逐元素差值,必须通过遍历数组索引,手动计算每个位置的差值来实现。
具体实现步骤
- 创建一个与原数组大小相同的目标数组,用于存储差值结果;
- 遍历数组的每个索引位置,分别取出两个原数组对应位置的元素;
- 计算差值后,将结果存入目标数组的对应位置。
完整代码示例(整数数组)
//@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
相关产品推荐
相关产品推荐

