如何在TradingView 1分钟周期内绘制指定时段的高低点水平线?
在TradingView 1分钟时间框架下绘制当日10:00-10:12时段高低点水平线
直接上可用的Pine Script v5代码,同时优化了原示例的逻辑漏洞:
//@version=5 indicator("时段高低点水平线", overlay=true) // 可自定义的时段参数 startHour = input.int(10, title="开始小时") startMinute = input.int(0, title="开始分钟") endHour = input.int(10, title="结束小时") endMinute = input.int(12, title="结束分钟") // 存储当日时段高低点,var关键字确保变量仅初始化一次 var float sessionHigh = na var float sessionLow = na // 正确判断当前K线是否处于目标时段(支持跨小时场景) inSession = (hour > startHour) or (hour == startHour and minute >= startMinute) and (hour < endHour) or (hour == endHour and minute <= endMinute) // 交易日切换时重置高低点,避免跨交易日数据混淆 if ta.change(time("D")) sessionHigh := na sessionLow := na // 时段内实时更新高低点 if inSession sessionHigh := ta.max(high, sessionHigh) sessionLow := ta.min(low, sessionLow) // 全天显示高低点水平线,而非仅时段内 plot(sessionHigh, color=color.red, title="时段高点", linewidth=2) plot(sessionLow, color=color.green, title="时段低点", linewidth=2)
关键细节说明:
- 参数灵活配置:通过
input.int设置可调整的时段参数,无需修改代码就能快速更改起止时间。 - 每日重置机制:解决原代码无交易日切换处理的问题,避免第二天高低点沿用前一天的数据。
- 时段判断修复:原代码仅支持同小时的时段判断,优化后的逻辑可覆盖跨小时场景(如9:55-10:05)。
- 高低点更新简化:用
ta.max和ta.min替代原代码的条件判断,逻辑更简洁且不易出错。 - 绘图优化:原代码仅在时段内显示水平线,优化后全天持续显示,更便于后续行情分析参考。
原代码存在的问题:
- 时段判断逻辑有局限性,仅适用于同小时的时段;
- 无每日重置机制,跨交易日会导致数据错误;
- 水平线仅在时段内显示,实用性不足。
内容的提问来源于stack exchange,提问作者vishal
相关产品推荐
相关产品推荐

