You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在指定时间框架下获取选定日期对应的bar_index值?

实现交互式选择时间对应的相对bar_index

核心思路

以用户选定的时间为基准,先定位该时间对应的K线原始bar_index,再通过原始索引的差值计算出相对索引——选定时间的K线为0,更早的K线依次递增(如昨日为1、前日为2)。

完整代码示例

//@version=5
indicator("Relative Bar Index from Selected Time", overlay=true)

// 交互式选择目标时间
i_date = input.time(timestamp("23 Aug 2023 00:00 +0300"), "Target Date", confirm=true)

// 获取目标时间对应的原始bar_index
target_bar_index = ta.valuewhen(time == i_date, bar_index, 0)

// 计算相对bar_index:选定时间为0,更早的K线数值递增
relative_bar_index = na(target_bar_index) ? na : target_bar_index - bar_index

// 可选:在K线标签上显示相对bar_index值
var label rel_label = na
if barstate.islast
    rel_label := label.new(bar_index, high, str.tostring(relative_bar_index), color=color.orange, textcolor=color.white)

// 调试用:输出关键索引值
if barstate.islast
    label.new(bar_index, low, "Target bar_index: " + str.tostring(target_bar_index) + "\nRelative bar_index: " + str.tostring(relative_bar_index), color=color.blue, textcolor=color.white)

关键细节说明

  • ta.valuewhen(time == i_date, bar_index, 0):精准匹配用户选定时间对应的K线,提取其原始bar_index;0表示取第一个匹配的K线(1D时间框架下每个日期仅对应一根K线,无需担心多匹配)。
  • 相对索引计算逻辑:target_bar_index - bar_index——Pine Script中bar_index随时间递增(最新K线索引最大),更早的K线索引更小,差值即为相对索引(选定时间为0,昨日为1,以此类推)。
  • 时区匹配:确保input.time的时区参数(如示例中的+0300)与图表时区一致,否则会出现匹配不到目标K线的情况。

内容的提问来源于stack exchange,提问作者sey eeet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 09:43:22