Pine Script中timeframe.multiplier条件判断报错:未声明标识符
Pine Script "未声明标识符" 错误修复
你的代码出现Undeclared identifier错误,核心原因是变量my_time仅在if/else if的分支内部声明,Pine Script要求变量必须先在全局作用域完成声明和初始化,否则在分支外部(比如plot()函数调用时)无法识别该变量。
原错误代码
indicator("My script") // ————— Converts current chart timeframe into a float minutes value. f_tfInMinutes() => _tfInMinutes = timeframe.multiplier * ( timeframe.isseconds ? 1. / 60 : timeframe.isminutes ? 1. : timeframe.isdaily ? 60. * 24 : timeframe.isweekly ? 60. * 24 * 7 : timeframe.ismonthly ? 60. * 24 * 30.4375 : na) if f_tfInMinutes() == 15 float my_time = f_tfInMinutes() + 15 else if f_tfInMinutes() == 30 float my_time = f_tfInMinutes() + 30 else if f_tfInMinutes() == 60 float my_time = f_tfInMinutes() + 180 plot(my_time)
修正后的代码
indicator("My script") // ————— Converts current chart timeframe into a float minutes value. f_tfInMinutes() => _tfInMinutes = timeframe.multiplier * ( timeframe.isseconds ? 1. / 60 : timeframe.isminutes ? 1. : timeframe.isdaily ? 60. * 24 : timeframe.isweekly ? 60. * 24 * 7 : timeframe.ismonthly ? 60. * 24 * 30.4375 : na) // 全局声明并初始化变量,避免未识别问题 float my_time = na if f_tfInMinutes() == 15 my_time = f_tfInMinutes() + 15 else if f_tfInMinutes() == 30 my_time = f_tfInMinutes() + 30 else if f_tfInMinutes() == 60 my_time = f_tfInMinutes() + 180 plot(my_time)
关键修改点
- 提前在全局作用域声明
float my_time = na,给变量一个初始值(na表示空值) - 分支内部不再用
float my_time重新声明,直接对已存在的变量赋值
这样修改后,plot()函数就能正常识别my_time变量,不会再出现未声明标识符的错误。
内容的提问来源于stack exchange,提问作者chprot
相关产品推荐
相关产品推荐

