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

Pine Script v4保存代码报itemType未定义问题咨询

Pine Script v4 itemType is not defined 报错解决方案

问题根因

该报错是Pine Script v4的特性限制导致:security()函数不支持接收字符串类型的返回值。你自定义的sFunc()将字符串变量rsievent作为返回值之一,通过security()调用时触发了类型解析异常。

修复方案

方案1:删除不需要的字符串返回值

如果你不需要用到rsievent的事件记录逻辑,直接移除该返回值即可,修改后代码如下:

//@version=4
study("Screen", shorttitle = 'Screen', overlay = false)

// RSI Params
rsi_length     = input(14, title = "RSI Length")
rsi_overbought = input(70, title = "RSI Overbought Level")
rsi_oversold   = input(30, title = "RSI Oversold Level") // 顺便修正原代码此处标题的笔误

// Symbols 
// There is a limit of 40 security calls so only 40 symbols at the same time is possible
s01 = input('AAPL',  type=input.symbol)

sFunc() => 
    rsi     = rsi(close, rsi_length)
    cond    = rsi > rsi_overbought or rsi < rsi_oversold
    value   = rsi
    [value, cond]

[v01, c01] = security(s01, timeframe.period, sFunc())
plot(v01, "v01", color=color.green)

方案2:升级到Pine Script v5

Pine Script v5已经支持security()函数传递字符串类型的返回值,仅需将脚本开头的版本声明改为//@version=5,同步适配v5的语法即可:

//@version=5
indicator("Screen", shorttitle = 'Screen', overlay = false)

// RSI Params
rsi_length     = input.int(14, title = "RSI Length")
rsi_overbought = input.int(70, title = "RSI Overbought Level")
rsi_oversold   = input.int(30, title = "RSI Oversold Level")

// Symbols 
s01 = input.symbol('AAPL')

sFunc() => 
    rsievent = ''
    rsi_val     = ta.rsi(close, rsi_length)
    cond    = rsi_val > rsi_overbought or rsi_val < rsi_oversold
    value   = rsi_val
    rsievent := ta.crossover(rsi_val, 40) ? rsievent + 'RSICROSSOVER40'  + '\n' : rsievent
    [value, cond, rsievent]

[v01, c01, b01] = request.security(s01, timeframe.period, sFunc())
plot(v01, "v01", color=color.green)

方案3:v4版本下用数字编码替代字符串

如果必须保留v4版本,可将事件内容转换为数字编码传递,后续根据编码映射回事件含义即可,示例:

sFunc() => 
    // 事件编码定义:0=无事件,1=RSI上穿40
    event_code = 0
    rsi     = rsi(close, rsi_length)
    cond    = rsi > rsi_overbought or rsi < rsi_oversold
    value   = rsi
    event_code := crossover(rsi, 40) ? 1 : event_code
    [value, cond, event_code]

[v01, c01, event01] = security(s01, timeframe.period, sFunc())
// 使用时判断event01的数值即可匹配对应事件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 17:21:02