如何在PINE Script v5中判断当前时间是否处于EST 09:00-16:00?
解决Pine Script中EST时间区间判断的鲁棒性方案
直接使用Pine Script的timezone模块创建固定的美国东部时区对象,彻底脱离标的和用户本地时区的影响,实现精准的EST 09:00-16:00区间判断:
//@version=5 indicator("EST时间区间判断", overlay=true) // 创建美国东部时区对象(自动处理夏令时EDT) est_timezone = timezone.new("America/New_York") // 获取当前K线在EST时区的小时和分钟 est_hour = hour(time, est_timezone) est_minute = minute(time, est_timezone) // 判断是否处于EST 09:00-16:00区间 is_in_est_session = (est_hour > 9) or (est_hour == 9 and est_minute >= 0) and (est_hour < 16) or (est_hour == 16 and est_minute == 0) // 可视化验证:区间内背景变蓝 bgcolor(is_in_est_session ? color.new(color.blue, 90) : na) // 输出状态到图表 var label status_label = label.new(bar_index, high, "", yloc=yloc.belowbar) label.set_text(status_label, is_in_est_session ? "EST交易时段" : "非EST交易时段") label.set_color(status_label, is_in_est_session ? color.green : color.red)
关键说明:
timezone.new("America/New_York"):采用IANA标准时区标识符,会自动切换EST(冬令时)和EDT(夏令时),无需手动调整时区偏移。hour(time, est_timezone)/minute(time, est_timezone):明确指定从EST时区提取时间分量,完全不受标的本身的时区设置(比如ES的CST)和用户本地时区干扰。- 区间判断逻辑:精准覆盖9:00整到16:00整的时间范围,包含首尾端点。
替代简化写法(用time函数直接匹配):
如果偏好更简洁的实现,也可以直接在time()函数中指定时区参数,效果完全一致:
//@version=5 indicator("EST时间区间判断(简化版)", overlay=true) est_timezone = timezone.new("America/New_York") // 0900-1600为时间范围,23456代表周一至周五,可按需调整 is_in_est_session = time(timeframe.period, "0900-1600:23456", est_timezone) bgcolor(is_in_est_session ? color.new(color.blue, 90) : na)
内容的提问来源于stack exchange,提问作者daft.punk.trader4life
相关产品推荐
相关产品推荐

