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

Pine Script中if代码块内调用函数无返回值问题及测试用例

问题根因

  • Pine Script v5 遵循块级作用域规则:在if、else、for等代码块内部直接使用=对外部同名变量赋值时,会自动创建块内局部变量,不会修改外层的全局变量
  • 你提供的示例中,if分支内的[c, d]是独立的局部变量,外层全局变量c、d始终保留初始值0,所以看起来像自定义函数没有返回值。

修复方案

需要在代码块内给全局变量赋值时,用:=操作符(Pine Script中给已有变量重新赋值的专用操作符),并声明global修饰符指定修改全局作用域变量,修正后代码如下:

//@version=5
indicator("Function Tester")
fun(x, y) =>
    a = x + y
    b = x - y
    [a, b]

c = 0
d = 0

if (open > close)
    [global c, global d] := fun(open, close)

label.new(bar_index, high, str.tostring(c) + " " + str.tostring(d))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:06:06