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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 06:10:58