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

如何用Pine Script获取前一/两个交易日的开盘时间?

解决TradingView中获取前N个交易日开盘时间的问题

直接通过time("D", session.regular, syminfo.timezone) - (86400000 * backDays)计算的问题在于:这种方式仅按自然日做减法,完全不区分交易日/非交易日,所以会碰到周末、节假日这类无交易的日期,比如你提到的SPY案例中得到周日的时间。

要获取真实的前N个交易日开盘时间,需要基于实际存在交易的K线来回溯,推荐使用ta.valuewhen函数结合barstate.isopen标记开盘时刻的方案:

//@version=5
indicator("前N交易日开盘时间获取", overlay=true)

// 输入要回溯的交易日数量
back_days = input.int(1, "回溯交易日数", minval=1)

// 仅在每个交易日的开盘K线时,记录当前的开盘时间
// ta.valuewhen会按顺序取出第back_days次出现的开盘时间(从当前往前数)
prev_trading_day_open = ta.valuewhen(barstate.isopen, time("D", session.regular, syminfo.timezone), back_days)

// 最后一根K线时显示结果
if barstate.islast
    current_open = time("D", session.regular, syminfo.timezone)
    label.new(bar_index, high, 
        str.format("当前交易日开盘时间: %s\n前%s个交易日开盘时间: %s",
            str.tostring(current_open, "yyyy-MM-dd HH:mm"),
            str.tostring(back_days),
            str.tostring(prev_trading_day_open, "yyyy-MM-dd HH:mm")
        ),
        color=color.teal, textcolor=color.white, style=label.style_label_down
    )

代码说明

  • barstate.isopen:判断当前K线是否是交易日的第一根K线(即开盘时刻),确保只记录真实的交易日开盘时间。
  • ta.valuewhen(condition, value, occurrence):从当前K线往前数,找到第occurrence次满足condition的value值,这里就是第N个之前的交易日开盘时间。
  • 该方案会自动跳过周末、节假日等非交易日,只返回有实际交易的日期的开盘时间。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 09:15:31