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

含lookahead参数的request.security函数批量赋值报错的解决咨询

解决Pine Script中带lookahead参数时批量获取序列值的问题

问题场景

自定义函数添加lookahead=barmerge.lookahead_on参数后,无法通过数组解构一次性获取多个序列值,报错Invalid assignment. Cannot assign a tuple to a variable.,单独赋值单个变量可行,但需要避免重复调用函数4次。

原因

启用lookahead=barmerge.lookahead_on时,request.security对多序列参数的返回值处理逻辑改变,无法直接返回可解构的元组,导致数组解构赋值失败。

解决方案

方案1:通过数组索引获取结果

修改调用方式,先接收函数返回的数组,再通过索引提取单个值:

adopt(r,s) =>
    request.security(syminfo.tickerid, r, s, lookahead=barmerge.lookahead_on)

// 先获取完整数组结果
result = adopt('W', [low[1], high[1], open[1], close[1]])
// 通过索引提取各序列值
low1 = result[0]
high1 = result[1]
open1 = result[2]
close1 = result[3]

方案2:在自定义函数内部返回元组

调整函数逻辑,内部分别获取每个序列值后返回元组,外部直接解构赋值:

adopt(r) =>
    // Pine Script会自动优化同周期同标的重复请求
    low_val = request.security(syminfo.tickerid, r, low[1], lookahead=barmerge.lookahead_on)
    high_val = request.security(syminfo.tickerid, r, high[1], lookahead=barmerge.lookahead_on)
    open_val = request.security(syminfo.tickerid, r, open[1], lookahead=barmerge.lookahead_on)
    close_val = request.security(syminfo.tickerid, r, close[1], lookahead=barmerge.lookahead_on)
    // 返回元组
    [low_val, high_val, open_val, close_val]

// 直接解构赋值
[low1, high1, open1, close1] = adopt('W')

两种方案均可保留lookahead参数,同时一次性获取4个值。方案1代码更简洁,方案2的解构语法更贴合原始使用习惯。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 01:17:29