Pine Script v5问题:非周一为周首时无法正确绘制周高低线
问题修复:每周首日起贯穿整周的高低线绘制脚本
问题说明
需求为绘制从每周首日开始并贯穿整周的高低线,但当前Pine Script v5脚本存在以下问题:
- 若一周起始日为周一以外的日期(示例中周二),仅绘制首日K线的高低点
- 若起始日为周一,则可正常从周一高低点开始绘制并贯穿整周
原代码问题分析
原代码中仅限制周一K线更新高低点数值,导致当一周起始日不是周一(比如周二)时,后续非周一的K线不会更新高低点,最终高低线停留在首日数值上。同时仅通过ta.change(weekofyear)判断每周首日,逻辑不够严谨,存在跨年度周误判的可能。
修复后的代码
//@version=5 indicator('First Bar of the Week Session High-Low', overlay=true, week_start=1) // week_start可设置:1=周一,2=周二...7=周日 var float sessionHigh = na var float sessionLow = na // 准确判断每周第一根K线:周数变化 或 当前是一周起始日且周数未变化(应对跨周但同周数的情况) isFirstBarOfWeek = ta.change(weekofyear) or (dayofweek == week_start and not ta.change(weekofyear)) // 更新高低点:每周首日初始化,之后每周内所有K线持续更新 if isFirstBarOfWeek sessionHigh := high sessionLow := low else // 只要属于当前周,就持续更新高低点 sessionHigh := math.max(high, sessionHigh) sessionLow := math.min(low, sessionLow) // 绘制高低线 plot(sessionHigh, title='Session High', color=color.new(color.blue, 0)) plot(sessionLow, title='Session Low', color=color.new(color.orange, 0))
修复要点
- 添加
week_start参数:在indicator函数中指定一周起始日,可根据需求设置1(周一)到7(周日)的数值 - 优化每周首日判断逻辑:结合周数变化和一周起始日,避免跨周或跨年度的误判
- 取消仅周一更新的限制:只要当前K线属于本周(未到下一周首日),就持续更新高低点数值,确保整周高低线动态更新
内容的提问来源于stack exchange,提问作者Santi Santichai
相关产品推荐
相关产品推荐

