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

Pine Script四小时竖线指标在不同品种时区显示异常问题

问题分析与解决方案

你的问题核心在于Pine Script中hour()等时间函数的时区依赖,以及期货与加密货币品种的时间戳基准差异:

  1. 时区混淆:hour()默认返回当前图表时区的小时数,但期货品种(如NQ1!)的K线时间锚定交易所本地时区(NQ1!属于芝商所,采用芝加哥时区,含夏令时偏移)。当图表时区与交易所时区不一致时,交易所的整点时间转换到图表时区后不再是整点,直接导致条件判断逻辑错位。
  2. 时间基准差异:加密货币(如BTC/USDT)为7*24小时交易,时间戳通常以UTC为基准;而期货品种受交易所时区、夏令时及交易时段限制,时间戳基准与UTC存在动态偏移。

修正方案

方案1:基于UTC时间绘制竖线(跨品种统一对齐)

此方案让竖线固定在UTC时间的0、4、8、12等整点,不受图表时区和品种时区影响,适合需要统一时间基准的场景:

//@version=5
indicator("4小时竖线(UTC基准)", overlay=true)
h4_bar_color = color.new(color.blue, 0)

// 基于UTC时间判断4小时整点
utc_hour = hour(time, "UTC")
utc_minute = minute(time, "UTC")
utc_second = second(time, "UTC")

if utc_hour % 4 == 0 and utc_minute == 0 and utc_second == 0
    line.new(bar_index, low * 0.99, bar_index, high * 1.01, extend=extend.both, color=h4_bar_color)

方案2:基于品种交易所时区绘制竖线(对齐品种交易时间)

此方案让竖线对齐品种交易所的4小时整点,适合跟随品种原生交易时段的场景:

//@version=5
indicator("4小时竖线(品种时区基准)", overlay=true)
h4_bar_color = color.new(color.red, 0)

// 基于品种交易所时区判断4小时整点
sym_hour = hour(time, syminfo.timezone)
sym_minute = minute(time, syminfo.timezone)
sym_second = second(time, syminfo.timezone)

if sym_hour % 4 == 0 and sym_minute == 0 and sym_second == 0
    line.new(bar_index, low * 0.99, bar_index, high * 1.01, extend=extend.both, color=h4_bar_color)

原代码异常原因

原代码直接用hour()(图表时区)判断整点,但期货K线是在交易所时区的整点生成的。以NQ1!为例,芝加哥夏令时(UTC-5)与你的UTC-4图表时区相差1小时,交易所的0点(UTC-5)对应图表的1点,此时hour()返回1,本不应触发条件,但夏令时切换、时区转换误差等因素会导致逻辑错位,最终出现竖线时间偏移的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 07:18:17