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

Pine Script生成0至指定变量值数组及matrix.new报错修复求助

Pine Script 参数类型不匹配问题修复

我尝试在Pine Script中生成从0到变量historyBars + len的所有数值,使用了以下代码却出现报错,提示参数类型不匹配,请求帮助改写代码。

原代码

// generate values from 0 to historybars+len
A() =>
    customArray = array.new_int()
    for i = 0 to historyBars + len
        array.push(customArray, i)
    customArray


var ArrayClose = matrix.new<float>(A(), NumCol, historyBars + len)
var ArrayLo = matrix.new<float>(A(), NumCol, historyBars + len)
var ArrayHi = matrix.new<float>(A(), NumCol, historyBars + len) 

报错信息

无法调用'matrix.new',参数'columns'='调用'A' (float[])'。使用了'float[]'类型的参数,但需要的是'series int'类型。

问题原因与修复方案

matrix.new()的前两个参数要求传入整数类型的行数和列数,但你直接将返回数组的A()函数作为参数传入,导致类型不匹配。根据你的需求,有两种修复方式:

方式一:直接用目标整数指定矩阵行数

如果只是需要创建行数为historyBars + len的矩阵,无需额外生成数组,直接使用该整数即可:

// 直接用historyBars + len作为矩阵行数,默认值设为na
var ArrayClose = matrix.new<float>(historyBars + len, NumCol, na)
var ArrayLo = matrix.new<float>(historyBars + len, NumCol, na)
var ArrayHi = matrix.new<float>(historyBars + len, NumCol, na)

方式二:保留数组,用数组长度指定行数

如果后续需要用到0到historyBars + len的数组,可先定义数组,再通过array.size()获取数组长度作为矩阵行数:

// 生成从0到historyBars+len的整数数组
A() =>
    customArray = array.new_int()
    for i = 0 to historyBars + len
        array.push(customArray, i)
    customArray

var intArray = A()
// 用数组长度作为矩阵行数
var ArrayClose = matrix.new<float>(array.size(intArray), NumCol, na)
var ArrayLo = matrix.new<float>(array.size(intArray), NumCol, na)
var ArrayHi = matrix.new<float>(array.size(intArray), NumCol, na)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 03:58:42