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

Pine Script中xloc.bar_time类型趋势线获取当前价格报错如何解决

问题根因

你代码中已经显式指定了xloc = xloc.bar_index,触发报错的核心原因是调用line.get_price时传入的线ID无效(为na):

  • 只有trend_s1_line_extend为true且sm_bag_ready为true时,s1_first_line2才会存储有效线ID,其余场景下该变量值为na,直接调用line.get_price就会触发参数校验错误。
  • 另外如果没有做旧线清理逻辑,重复创建趋势线会导致变量存储的线ID混乱,也可能引发同类报错。
解决方案

按以下步骤修改代码即可正常获取趋势线当前价格:

  1. 调用line.get_price前先判断线ID是否有效,仅有效时执行取值逻辑
  2. 新增旧线清理逻辑,避免同一趋势线重复创建
  3. 把线ID声明为var类型,减少重复初始化的异常
修改后代码示例
// 声明线ID为var类型,保留历史赋值
var line s1_first_line2 = na

// 先删除旧线,再创建新线,避免重复生成
if trend_s1_line_extend and sm_bag_ready
    line.delete(s1_first_line2)
    s1_first_line2 := line.new(
      s1T_fx,
      s1T_fy,
      s1T_tx,
      s1T_ty,
      extend = extend.right,
      xloc = xloc.bar_time,
      color = trend_s1_use_colors == false ? trend_s1_color_default : 
      (sTriDir == 1) ? trend_s1_line_color_up : trend_s1_line_color_dn,
      style = trend_s1_xline_style,
      width = trend_s1_xline_width)
else
    s1_first_line2 := na

// 仅线ID有效时调用get_price,避免报错
currentLineValue = na
if not na(s1_first_line2)
    currentLineValue := line.get_price(s1_first_line2, bar_index)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 11:18:01