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
相关产品推荐
相关产品推荐

