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

Pinescript盘前高低线绘制问题:session.ismarket判断异常

PineScript 盘前/常规时段高低线取值修正方案

问题根源

session.ismarket会将NYSE盘前(美国东部时间9:30前)也判定为市场时段,导致你在盘前就取到high[1](实际是两天前的高点)。你尝试用time()函数限定时段,但直接将时间戳和布尔值做逻辑与,因类型不匹配触发报错——time()返回的是符合时段的时间戳(不符合时返回na),不是布尔值,不能直接用于and运算。

修正方案

通过not na(time(...))将时间戳转换为布尔判断,明确区分常规交易时段(美东9:30-16:00,对应UTC14:30-21:00)和盘前时段,再切换高低线取值:

//@version=5
indicator("前一日高低线(盘前修正)", overlay=true)

// 定义常规交易时段(NYSE: 美东9:30-16:00 = UTC14:30-21:00,仅周一至周五)
is_regular_session = not na(time(timeframe.period, "1430-2100:23456"))

// 初始化盘前时段的高低线(取当日数据)
pdh = high[0]
pdl = low[0]

// 常规交易时段切换为前一日数据
if is_regular_session
    pdh := high[1]
    pdl := low[1]

// 绘制高低线
plot(pdh, color=color.green, title="前一日高点/盘前当日高点")
plot(pdl, color=color.red, title="前一日低点/盘前当日低点")

代码说明

  • time(timeframe.period, "1430-2100:23456"):返回UTC14:30-21:00、周一至周五时段内的时间戳,非该时段返回na
  • not na(...):将时间戳转换为布尔值——符合时段返回true,否则false
  • 盘前时段(is_regular_session为false)取当日high[0]/low[0],常规时段取前一日high[1]/low[1],完全匹配需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 02:17:05