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

如何在Pine Script 5中制作显示纽约午夜竖线的指标?周日线需加宽

Pine Script 5 实现纽约时间午夜竖线(含周起始宽线)

要实现纯竖线形式的纽约时间午夜标记,且周日夜间(周起始)的竖线更宽,核心是使用Pine Script的line.new()函数(而非plotshape),它支持设置线条宽度,且能覆盖所有历史数据。以下是完整实现代码及说明:

完整代码

//@version=5
indicator("纽约时间午夜竖线", overlay=true)

// 定义纽约时区
nyTimeZone = timezone.new("America/New_York")

// 获取纽约时区下的当前/前一日日期、星期几
nyCurrentDate = yearmonthday(time, nyTimeZone)
nyPrevDate = yearmonthday(time[1], nyTimeZone)
nyDayOfWeek = dayofweek(time, nyTimeZone)

// 判定是否为纽约时间午夜(日期切换时刻)
isMidnight = nyCurrentDate != nyPrevDate

// 判定是否为周起始(周一0点,即用户说的周日夜间)
isWeekStart = nyDayOfWeek == dayofweek.monday

// 绘制竖线
if isMidnight
    // 获取竖线的上下边界(当前K线的高低,也可改为全历史高低)
    lineLow = ta.lowest(low, 1)
    lineHigh = ta.highest(high, 1)
    // 根据是否为周起始设置线条宽度
    lineWidth = isWeekStart ? 2 : 1
    // 创建竖线:x坐标为当前K线位置,y覆盖当前K线高低范围
    line.new(bar_index, lineLow, bar_index, lineHigh, width=lineWidth, color=color.blue, style=line.style_solid)

关键逻辑说明

  1. 时区转换:通过timezone.new("America/New_York")明确指定纽约时区,避免交易所时区与纽约时间的偏差。
  2. 午夜检测:对比当前与前一根K线的纽约时区日期,当日期变化时,判定为午夜时刻。
  3. 周起始识别:Pine Script中dayofweek.monday对应周一(数值1),周一0点即为一周的起始,对应用户需求的周日夜间。
  4. 竖线绘制:line.new()创建纯竖线,通过设置相同的x坐标实现垂直效果;根据周起始状态切换宽度(2或1),满足视觉区分需求。

可选调整

  • 若要让竖线覆盖整个图表的历史高低范围,可将ta.lowest(low, 1)改为ta.lowest(low, 0),ta.highest(high, 1)改为ta.highest(high, 0)。
  • 可修改color.blue为你需要的线条颜色,比如color.gray。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 03:48:17