能否通过单次request.security调用获取多个变量?求正确实现方式
request.security 单次调用获取多变量的正确实现方式
request.security完全可以通过单次调用获取多个变量,并非只能返回单个值。你之前把high存到根作用域的方式不可靠,核心原因是Pine Script的执行机制:request.security的闭包代码会在目标周期的bar上下文里运行,直接修改根作用域变量会因bar执行顺序混乱,导致拿到的是当前周期的值而非目标周期的。
正确实现方式:返回元组并解构赋值
最直接的做法是在request.security的闭包内返回一个元组(tuple),再将元组解构赋值给多个变量,确保拿到的是目标周期的正确数据。
示例代码:
//@version=5 indicator("多变量获取示例", overlay=true) // 目标周期设为5分钟 target_tf = "5" // 单次调用同时获取目标周期的bar_index、high、low [sec_bar_index, sec_high, sec_low] = request.security(syminfo.tickerid, target_tf, [bar_index, high, low]) // 验证输出 plot(sec_high, color=color.blue, title="5分钟周期高点") plot(sec_low, color=color.red, title="5分钟周期低点") label.new(bar_index, sec_high, str.tostring(sec_bar_index), color=color.yellow)
关键说明
- 闭包内的
[bar_index, high, low]会在5分钟周期的bar上下文执行,获取的是该周期的对应变量 - 解构赋值时,变量数量要和闭包返回的元组元素数量一致
- 若需要更多变量,直接在闭包的数组里添加即可,比如
[bar_index, high, low, close, volume]
内容的提问来源于stack exchange,提问作者Web1123
相关产品推荐
相关产品推荐

