如何获取最后一根K线的毫秒级常量时间并实现24小时前标记
问题1:获取最后一根K线的毫秒级常量时间(全K线显示)
要让所有K线都显示最后一根K线的毫秒时间,核心是用var变量存储该值——var只会在脚本初始化时赋值一次,后续仅在最后一根K线更新时修改,确保历史K线同步显示最新的最后K线时间。
示例代码:
//@version=5 indicator("最后K线常量毫秒时间", overlay=false) // 初始化变量,仅在脚本启动时执行一次 var float lastBarMsTime = time // 仅在最后一根K线更新时,同步最新时间 if barstate.islast lastBarMsTime := time // 绘制常量时间值 plot(lastBarMsTime, title="最后K线毫秒时间", color=color.blue, linewidth=2)
所有K线都会显示同一个最后K线的毫秒时间,不会出现随历史K线时间上升的趋势。
问题2:在最后一根K线24小时前标记"TRUE"条件
通过计算最后K线时间的24小时前毫秒值,匹配对应K线后绘制标记,以下是两种适配不同场景的实现方式:
方式1:精准匹配K线时间
适合周期固定且目标时间恰好是K线起始时间的场景:
//@version=5 indicator("24小时前标记", overlay=true) // 存储最后一根K线的毫秒时间 var float lastBarMsTime = time if barstate.islast lastBarMsTime := time // 计算24小时前的毫秒时间(24*60*60*1000 = 86400000毫秒) targetMsTime = lastBarMsTime - 86400000 // 判断当前K线是否为目标时间 isTargetBar = time == targetMsTime // 在目标K线下方绘制标记 plotshape(isTargetBar, title="24小时前标记", location=location.belowbar, color=color.green, style=shape.labelup, text="TRUE", textcolor=color.white)
方式2:匹配最近的K线
如果目标时间落在K线周期内,用ta.valuewhen定位最近的K线:
//@version=5 indicator("24小时前标记(适配周期)", overlay=true) var float lastBarMsTime = time if barstate.islast lastBarMsTime := time targetMsTime = lastBarMsTime - 86400000 // 找到时间小于等于目标时间的最近K线索引 targetBarIdx = ta.valuewhen(time <= targetMsTime, bar_index, 0) isTargetBar = bar_index == targetBarIdx plotshape(isTargetBar, title="24小时前标记", location=location.belowbar, color=color.orange, style=shape.labelup, text="TRUE", textcolor=color.white)
内容的提问来源于stack exchange,提问作者Shuman Rotula
相关产品推荐
相关产品推荐

