Pine Script代码问题:1分钟K线图每15分钟竖线不显示排查
1分钟K线图15分钟整点竖线绘制问题排查与修复
问题根源分析
原代码的核心问题在于周期起始判断逻辑错误,导致isPeriodStart条件永远无法成立,因此不会触发竖线绘制:
- 原判断式
(hour * periodsInHour + math.round((minute - periodStartMinute) / minutesInPeriod)) % periodsInDay == 0存在逻辑漏洞:当设置periodStartMinute=0、minutesInPeriod=15时,只有当hour * 4是96(24*4)的倍数时条件才成立,但hour范围是0-23,hour*4最大为92,永远无法满足模96等于0的要求,所以条件始终为假。 - 另外,
LineLength用ATR乘以1000会导致线段长度过大,超出图表可视范围,即使条件成立也可能看不到线条。
修复后的代码
以下是修正后的代码,调整了判断逻辑并优化了线段显示:
//@version=5 indicator(title="15分钟整点竖线", shorttitle="15分钟竖线", overlay=true) // 输入参数 minutesInPeriod = input.int(15, "周期长度(分钟)", minval=1) periodStartMinute = input.int(0, "周期起始分钟(0-59)", minval=0, maxval=59) lineColor = input.color(color.new(color.yellow, 30), "竖线颜色") // 判断是否为15分钟整点的K线(仅在1分钟K线生效) isPeriodStart = minute % minutesInPeriod == periodStartMinute // 绘制垂直虚线的函数,使用图表可视范围的高低值 drawVerticalLine() => // 获取当前图表的可视高低范围,避免线段过长 chartLow = ta.lowest(low, 100) chartHigh = ta.highest(high, 100) line.new(bar_index, chartLow * 0.99, bar_index, chartHigh * 1.01, color=lineColor, style=line.style_dotted, width=1) // 触发绘制 if isPeriodStart drawVerticalLine()
测试说明
- 将图表切换为1分钟K线周期
- 加载脚本后,会在每个15分钟整点(如08:00、08:15、08:30等)的K线位置绘制黄色半透明垂直虚线
- 可通过输入参数调整周期长度、起始分钟和竖线颜色
内容的提问来源于stack exchange,提问作者user7786088
相关产品推荐
相关产品推荐

