使用PineScript官方代码异常:time函数未正确着色指定时段背景
解决PineScript中1100-1300时段背景着色问题
问题分析
原代码通过time(timeframe.period, "1100-1300")判断时段,但可能因为时区不匹配、K线周期适配问题,导致实际着色时段和预期不符。
替代实现方法
以下两种方式能更可靠地实现需求:
方法一:指定时区的精准时段判断
明确指定目标时区(比如交易所时区),避免时区差异带来的偏差:
//@version=5 indicator("Session bars", "", true) // 可替换为实际需要的时区,比如"Asia/Shanghai"或"America/New_York" inSession = not na(time(timeframe.period, "1100-1300", "Asia/Shanghai")) bgcolor(inSession ? color.silver : na)
方法二:直接提取时间参数判断
通过提取K线的小时、分钟信息,精准匹配目标时段,不受时区和周期限制:
//@version=5 indicator("Session bars", "", true) currentHour = hour currentMinute = minute // 判断是否处于11:00-13:00区间,可根据K线周期调整边界判断逻辑 inSession = (currentHour > 10 and currentHour < 13) or (currentHour == 13 and currentMinute == 0) bgcolor(inSession ? color.silver : na)
补充提示
- 使用方法一时,需确认时区字符串的正确性,可参考PineScript官方支持的时区列表。
- 方法二更适合非标准K线周期场景,能避免跨周期判断带来的误差。
内容的提问来源于stack exchange,提问作者ca_us30sniper
相关产品推荐
相关产品推荐

