Forex市场中如何用Pine Script获取指定时间的bar_index
解决外汇市场中指定时间对应bar_index的计算偏差问题
你原来的公式(time - mytime) / (1000 * timeframe.in_seconds(timeframe.period))是线性计算时间差,但外汇市场存在周末休市时段(无K线生成),这段空白时间会被计入计算,导致得出的bar_index和实际不符。以下是两种可靠的解决方法:
方法一:用ta.barssince()自动跳过休市时段
这个函数会在有K线的范围内查找符合条件的时间点,自动忽略休市的空白期:
// 定义目标时间(毫秒级时间戳) target_time = mytime // 计算从当前K线到目标时间K线的间隔数 bars_since_target = ta.barssince(time >= target_time) // 得到正确的bar_index correct_bar_index = bar_index - bars_since_target
如果需要精确匹配目标时间为K线开盘时间,可将time >= target_time改为time == target_time。
方法二:用ta.valuewhen()直接获取对应bar_index
适合需要精准定位目标时间对应K线的场景:
target_time = mytime // 获取最近的、时间匹配目标时间的K线的bar_index correct_bar_index = ta.valuewhen(time == target_time, bar_index, 0)
若目标时间处于K线运行过程中(非开盘时间),可调整条件为time >= target_time,取第一个符合条件的K线索引。
注意事项
- 不同经纪商的休市窗口略有差异,上述方法基于当前图表的K线数据计算,会自动适配经纪商的休市规则;
- 跨周期计算时,确保
timeframe.period参数与目标周期一致,或切换到对应周期图表执行计算。
内容的提问来源于stack exchange,提问作者stefano introini
相关产品推荐
相关产品推荐

