Pine Script指标开发求助:绘制跨周周日开盘价水平线
解决Pine Script周日开盘水平线绘制问题
核心需求实现代码
//@version=5 indicator(title="Sunday Open", shorttitle="Sunday Open", overlay=true) // 获取日线级别的开盘价与周日标识 [dailyOpen, isSunday] = request.security(syminfo.tickerid, "D", [open, dayofweek == dayofweek.sunday]) // 持久化存储当前生效的周日开盘价,仅在新周日出现时更新 var float currentSundayOpen = na if isSunday currentSundayOpen := dailyOpen // 绘制线条:仅在当前周日到下一个周日之间输出价格,避免延伸至图表末尾 plot(currentSundayOpen and not isSunday[1] ? currentSundayOpen : na, title="Sunday Open", style=plot.style_linebr, linewidth=2, color=color.orange)
关键逻辑说明
- 持久化价格存储:用
var关键字定义currentSundayOpen,确保变量不会随每根K线重置,仅当新的周日K线出现时更新为当日开盘价。 - 线条终止控制:通过
not isSunday[1]判断当前是否处于两个周日的间隔期——当新周日K线出现时,isSunday[1]变为true,此时停止输出当前线条价格,避免线条无限延伸。 - 跨周期数据同步:使用
request.security获取日线级别的开盘价和周日标识,保证时间周期匹配准确。
阶梯式连续线条版本(可选)
如果需要呈现连续阶梯效果(每个周日开盘价衔接上一周期终点),只需移除线条终止判断,线条会自动延续至下一个周日开盘:
//@version=5 indicator(title="Sunday Open (Stepped)", shorttitle="Sunday Open", overlay=true) [dailyOpen, isSunday] = request.security(syminfo.tickerid, "D", [open, dayofweek == dayofweek.sunday]) var float currentSundayOpen = na if isSunday currentSundayOpen := dailyOpen plot(currentSundayOpen ? currentSundayOpen : na, title="Sunday Open", style=plot.style_linebr, linewidth=2, color=color.orange)
内容的提问来源于stack exchange,提问作者0x4a42
相关产品推荐
相关产品推荐

