Tradingview昨日23:00以来1分钟蜡烛计数功能求助
解决TradingView 1分钟K线计数问题
问题原因分析
你得到错误数值13344,核心原因是代码未限制统计的时间范围,累计了历史所有符合"昨日23:00"条件的K线,而非仅从最近的昨日23:00开始计数。
正确实现代码
//@version=5 indicator("昨日23:00以来K线计数器", overlay=false) // 计算目标起始时间:昨日23:00,兼容跨日/跨周场景 targetTime = timestamp(year, month, dayofmonth - 1, 23, 0, 0) // 若当前时间在当日00:00-23:00之间,修正昨日日期(避免周一的昨日被算成当天) targetTime := time >= timestamp(year, month, dayofmonth, 0, 0, 0) ? targetTime : timestamp(year, month, dayofmonth - 2, 23, 0, 0) // 判断当前K线是否处于目标时间区间内 inTargetRange = time >= targetTime // 初始化计数器,交易日切换时重置 var int barCount = 0 if ta.change(time("D")) barCount := 0 // 仅在目标区间内累加计数 if inTargetRange barCount := barCount + 1 // 可视化展示计数结果 plot(barCount, title="K线数量", color=color.new(color.blue, 0), linewidth=2) label.new(bar_index, barCount, str.tostring(barCount), color=color.yellow, textcolor=color.black, style=label.style_label_down)
关键逻辑说明
- 时间戳修正:针对凌晨时段的日期计算误差做了适配,确保"昨日23:00"的时间戳准确。
- 计数器重置:通过
ta.change(time("D"))检测交易日切换,重置计数器,避免跨交易日累计。 - 区间过滤:仅对目标时间之后的K线进行计数,排除历史无关数据。
验证方法
切换到1分钟K线图,观察计数器:
- 从昨日23:00开始逐根K线累加数值
- 当日00:00后继续计数,直到次日23:00后随交易日切换重置为0
内容的提问来源于stack exchange,提问作者mike-kaast
相关产品推荐
相关产品推荐

