PineScript编译错误疑问:为何无法嵌套解构request.security返回值?
PineScript嵌套解构赋值报错的原因及解决方法
你的代码报错核心原因是:PineScript不支持嵌套数组的直接解构赋值,编译器无法识别左侧[[supertrend, direction], [middle, upper, lower]]这种嵌套方括号的语法结构,它期望的是单层变量列表或单个变量名(ID),因此抛出“意外输入'[',预期为ID”的错误。
问题代码分析
request.security返回的是一个包含两个元素的数组:
- 第一个元素是
ta.supertrend(3, 10)返回的二元数组(包含超级趋势值和方向值) - 第二个元素是
ta.bb(close, 20, 2)返回的三元数组(包含布林带中轨、上轨、下轨值)
但PineScript的解构语法只能处理单层数组,不能直接对嵌套数组进行一次性解构。
可行的解决方法
方法1:分两步解构
先解构外层数组,再分别处理内层数组:
// 先获取外层数组的两个元素 [supertrend_arr, bb_arr] = request.security('BA', 'D', [ta.supertrend(3, 10), ta.bb(close, 20, 2)]) // 再分别解构内层数组 [supertrend, direction] = supertrend_arr [middle, upper, lower] = bb_arr
方法2:平铺返回值后单层解构
直接在request.security内部将所有需要的值平铺为单层数组,再一次性解构:
[supertrend, direction, middle, upper, lower] = request.security('BA', 'D', [ ta.supertrend(3, 10)[0], ta.supertrend(3, 10)[1], ta.bb(close, 20, 2)[0], ta.bb(close, 20, 2)[1], ta.bb(close, 20, 2)[2] ])
内容的提问来源于stack exchange,提问作者user19792349
相关产品推荐
相关产品推荐

