Pine Script中能否将用户输入设为函数默认值?报错如何解决?
Pine Script:用输入变量作为函数参数默认值的正规解决方法
Pine Script 规定函数参数的默认值必须是常量,不能是变量、函数调用或计算结果,所以直接把i_int这类输入变量设为参数默认值会触发你遇到的报错。以下是两种正规的解决方式:
方法一:函数重载
定义两个同名函数:一个接收参数处理核心逻辑;另一个不带参数,自动调用带参版本并传入输入变量的值。这种方式符合Pine的语法设计,逻辑清晰:
i_int = input.int(100, "test input") // 核心函数,接收自定义参数 f1(x) => x // 无参重载,默认使用输入值 f1() => f1(i_int) // 调用示例 f1() // 使用i_int的当前值 f1(200) // 使用传入的自定义值200
方法二:函数内部处理默认逻辑
给参数设置一个合法的常量默认值(比如Pine内置的na,表示缺失值),然后在函数内部判断参数是否为默认值,若是则替换为输入变量的值。这种方式无需额外定义函数,适合简单场景:
i_int = input.int(100, "test input") f1(x = na) => if na(x) x := i_int x // 调用示例 f1() // 使用i_int的当前值 f1(200) // 使用传入的自定义值200
这两种方法都比用-999999这类魔法值更规范:na语义明确,不会和业务逻辑中的合法值冲突;函数重载则更贴合Pine的语法特性,代码可读性更高。
内容的提问来源于stack exchange,提问作者Moebius
相关产品推荐
相关产品推荐

