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

Pine Script星期标识仅UTC生效 纽约时区午夜显示异常问题

问题成因
  • 时间对齐逻辑错误:原代码time('D',"","America/New_York")固定取日级时间戳,在小时、分钟等非日K周期下,星期判断的触发点会偏移到UTC时区的午夜(即纽约时间前一日16:00),而非纽约时区的午夜位置,因此分隔线位置不对。
  • 冗余判断干扰:and close的判断无实际逻辑价值,会在无有效收盘价的特殊K线(如停牌K线、盘前集合竞价K线)位置漏触发分隔线绘制。
  • 绘制逻辑缺陷:原drawVerticalLine函数每次触发都新建line对象,没有做历史K线的重绘控制,长周期加载时会出现线条偏移、重叠的显示异常。
修正方案

核心调整点:

  • 替换时间获取逻辑为time(timeframe.period, "America/New_York"),自动适配当前图表加载的K线周期,精准匹配纽约时区下的K线时间
  • 增加ta.change(time("D", "America/New_York"))判断,确保分隔线仅在纽约时区自然日切换的第一根周一K线触发,不会在当日后续K线重复绘制
  • 移除冗余的close判断,优化线条创建逻辑避免重复渲染

修正后可直接运行的完整代码:

//@version=5
indicator("纽约时区周分隔线", overlay=true)
// 可自定义配置
LineLength = ta.atr(20) * 0.5  // 自适应K线波动设置竖线长度,可替换为固定数值
lineColor = color.new(color.gray, 20)

// 纽约时区周一午夜触发判断
isNyMonday = dayofweek(time(timeframe.period, "America/New_York")) == dayofweek.monday and ta.change(time("D", "America/New_York"))

// 竖线绘制方法
if isNyMonday
    line.new(bar_index, low - LineLength, bar_index, high + LineLength, color=lineColor, width=1, style=line.style_dashed)

验证说明:加载代码后切换任意分钟/小时/日K周期,分隔线都会固定落在纽约时间周一00:00对应的K线位置,不会再偏移到UTC午夜位置。

内容的提问来源于stack exchange,提问作者Acta Non Verba

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 18:09:35