如何在PineScript中筛选历史数据中特定日期的收盘价
在PineScript中筛选特定日期收盘价的实现
场景1:提取所有周五的收盘价
实现思路
利用PineScript内置的dayofweek函数判断当前交易日是否为周五,通过持久化数组收集符合条件的收盘价,也可直接在图表上标记显示。
完整代码(Pine Script v5)
//@version=5 indicator("提取周五收盘价", overlay=false) // 标记当前是否为周五 isFriday = dayofweek == dayofweek.friday // 用持久化数组存储所有周五收盘价(var关键字避免每次K线重置数组) var float[] fridayCloses = array.new_float() if isFriday array.push(fridayCloses, close) // 可选:在最后一根K线处显示最近10个周五收盘价 if barstate.islast label.new(bar_index, high, str.tostring(array.slice(fridayCloses, array.size(fridayCloses)-10)), color=color.blue, textcolor=color.white) // 在图表上标记周五收盘价(红色圆点) plot(isFriday ? close : na, color=color.red, style=plot.style_circles, size=size.small, title="周五收盘价")
关键说明
dayofweek:返回当前交易日的星期数,dayofweek.friday对应枚举值5(周日为0,周一为1,以此类推)var:声明持久化变量,确保数组不会在每根K线重新初始化array.push:将符合条件的收盘价添加到数组中,方便后续统计或分析
场景2:提取所有周五及其次日周一的收盘价
实现思路
除了直接标记周五,额外判断当前交易日是否为紧接周五的周一(因周末休市,周五的下一根K线即为周一),合并两个条件后收集收盘价。
完整代码(Pine Script v5)
//@version=5 indicator("提取周五及次日周一收盘价", overlay=false) // 标记当前是否为周五 isFriday = dayofweek == dayofweek.friday // 标记当前是否为周五后的周一(通过前一根K线的星期数验证) isMondayAfterFriday = dayofweek == dayofweek.monday and dayofweek[1] == dayofweek.friday // 合并目标日期条件:周五 或 周五后的周一 targetDays = isFriday or isMondayAfterFriday // 存储符合条件的收盘价 var float[] targetCloses = array.new_float() if targetDays array.push(targetCloses, close) // 可选:在最后一根K线处显示最近10个目标收盘价 if barstate.islast label.new(bar_index, high, str.tostring(array.slice(targetCloses, array.size(targetCloses)-10)), color=color.green, textcolor=color.white) // 在图表上标记目标收盘价(橙色圆点) plot(targetDays ? close : na, color=color.orange, style=plot.style_circles, size=size.small, title="周五/周一收盘价")
关键说明
dayofweek[1]:访问前一根K线的星期数,确保当前周一确实是周五的下一个交易日(排除节日休市导致的间隔情况)- 合并条件
targetDays:同时覆盖周五和后续周一的收盘价提取需求
内容的提问来源于stack exchange,提问作者user2345694
相关产品推荐
相关产品推荐

