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

Pine Script中line类型矩阵调用add_row方法无法添加行问题

问题产生原因

Pine Script v5中matrix.add_row()方法的默认填充逻辑对不同类型矩阵存在差异:

  • 对于int、float、string、bool这类基础值类型,调用无初始值参数的matrix.add_row()时,运行时会自动用对应类型的na空值填充新行的所有单元格,因此可以正常完成行追加,测试代码里int矩阵行数从1变为2就是这个逻辑生效的结果。
  • 对于line、label、box、table这类绘图/引用类型的矩阵,无初始值参数调用matrix.add_row()时,运行时不会自动隐式生成对应类型的空占位值,方法会静默执行失败(不会抛出语法或运行错误),因此不会实际新增行,行数保持初始值不变。
正确添加行的方法

向存储line等特殊引用类型的矩阵添加行时,必须显式传入新行每个单元格对应的初始值,空值场景直接传na即可,方法就能正常完成行插入。
针对测试代码里的单列line矩阵,修正后的可运行代码如下:

//@version=5
indicator("Matrix test", overlay = true)

if barstate.islast
    mInt = matrix.new<int>(1, 1, na)
    matrix.add_row(mInt)
    
    mLine = matrix.new<line>(1, 1, na)
    // 显式指定插入到矩阵末尾,传入na作为新行单元格的初始值
    matrix.add_row(mLine, matrix.rows(mLine), na)
    
    t = table.new(position.middle_right, 1, 2)
    table.cell(t, 0, 0, str.tostring(matrix.rows(mInt)))
    table.cell(t, 0, 1, str.tostring(matrix.rows(mLine)))

如果是多列的line类型矩阵,追加行时需要按列数传入对应数量的初始值,例如2列的line矩阵追加空行写法为matrix.add_row(mLine, matrix.rows(mLine), na, na);如果需要在指定位置插入行,把索引参数改成目标位置的行号即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 15:27:17