如何在30分钟时段的Renko蜡烛收盘末尾绘制图形?
解决Renko 30分钟时段末尾绘图问题
原代码通过ta.change(time(res)) != 0检测新时段的开始,只会在时段第一根bar上标记。要在时段末尾(最后一根bar)标记,可通过计算时段结束时间、判断当前bar是否接近该时间点实现,无需使用request.security或offset:
//@version=5 indicator(title='Renko Brick Close', overlay=true) // 输入目标时段(分钟),转换为毫秒级时长 res_input = input('30', title="目标时段(分钟)") res_ms = tonumber(res_input) * 60 * 1000 // 获取当前时段的起始时间(自动对齐到30分钟边界) current_session_start = ta.time(res_input) // 计算当前时段的结束时间 current_session_end = current_session_start + res_ms // 判断当前bar是否为时段末尾:当前bar时间接近时段结束(误差范围为当前图表时间框架的1倍时长) is_session_end = ta.time >= current_session_end - ta.timeframe.multiplier // 在时段末尾的bar下方绘制标记 plotshape(is_session_end, title="时段末尾", location=location.belowbar, color=color.new(color.green, 0), style=shape.labelup, text="时段结束", textcolor=color.white, size=size.small)
逻辑说明
- 确定时段边界:用
ta.time(res_input)获取当前30分钟时段的起始时间,加上30分钟对应的毫秒数得到结束时间。 - 判断末尾条件:通过
ta.time >= current_session_end - ta.timeframe.multiplier,让程序识别当前bar时间已接近时段结束(用当前图表的时间乘数做误差缓冲,适配Renko价格驱动的时间特性)。 - 绘制标记:满足条件时,在对应bar的下方显示“时段结束”标签。
内容的提问来源于stack exchange,提问作者TwiMob
相关产品推荐
相关产品推荐

