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

request.security返回的HTF bar_index在2月28日后为何异常波动?

问题原因与解决方案

这个现象的核心是Pine Script中bar_index的本质,以及request.security的数据对齐逻辑导致的:

  1. bar_index不是时间绝对索引
    bar_index是本地图表加载的K线的顺序索引,从0开始递增,完全取决于当前图表加载的K线数量和范围,并非基于时间的绝对标识。而request.security会从服务器重新拉取目标时间框架的K线数据,其返回的bar_index是基于拉取数据集的索引,和本地图表的bar_index可能因为数据加载范围、非交易时段过滤、跨月日期逻辑出现差异。

  2. 2月-3月的日期错位触发异常
    你遇到的2月28日到3月3日的索引波动,本质是2月与3月的天数差异(28/29天 vs 31天)导致Pine的跨月K线匹配逻辑临时出错:

    • 2月28日时,服务器拉取的1分钟数据集已经覆盖到新月份,bar_index更新为新序列值;
    • 3月1日、2日,跨月后日期对齐逻辑出现临时偏差,Pine错误将本地K线关联到了旧的索引序列;
    • 3月3日之后,日期对齐逻辑恢复正常,索引回到正确的新序列。
  3. 解决方案:用时间戳替代bar_index
    如果你需要的是基于时间的唯一标识,完全没必要用bar_index,直接使用time或time_close(Unix时间戳)即可,它们是绝对时间值,不会出现索引错位:

    //@version=5
    indicator("My script")
    
    // 注意:1分钟时间框架的代码是"1",不是"M"("M"是月线)
    htfTime = request.security(syminfo.tickerid, "1", time) 
    
    plotchar(bar_index, "bar_index", "", location = location.bottom)
    plotchar(htfTime, "htfTime", "", location = location.bottom)
    plot(htfTime)
    

    如果你一定要用bar_index,请确保:

    • request.security的时间框架参数和本地图表完全一致(1分钟用"1",不要写错成"M");
    • 关闭图表设置中的“仅显示交易时段”等可能过滤K线的选项,让本地和请求的数据集完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 13:35:19