如何在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)
关键逻辑说明
- 时区转换:通过
timezone.new("America/New_York")明确指定纽约时区,避免交易所时区与纽约时间的偏差。 - 午夜检测:对比当前与前一根K线的纽约时区日期,当日期变化时,判定为午夜时刻。
- 周起始识别:Pine Script中
dayofweek.monday对应周一(数值1),周一0点即为一周的起始,对应用户需求的周日夜间。 - 竖线绘制:
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
相关产品推荐
相关产品推荐

