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

