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

如何从指定时长/K线回溯位置开始计算技术指标?

解决方案:基于时间回溯动态计算起始Bar索引

直接通过让用户输入回溯天数/小时数,自动推导计算起始位置,完美避开手动设置timestamp或bar index的痛点,适配所有品种和时间周期,实现步骤如下(以Pine Script为例):

1. 定义用户输入参数

给用户提供极简的输入选项,无需复杂配置:

//@version=5
indicator("动态回溯技术指标", overlay=true)

// 核心输入:选择回溯类型+数值
回溯类型 = input.string("天数", title="回溯范围类型", options=["天数", "小时"])
回溯数值 = input.int(2, title="回溯时长", minval=1)

2. 自动计算起始时间戳

根据用户输入的时长,结合当前K线时间反向推导起始时间:

// 计算回溯起始时间(毫秒级)
var float 起始时间 = na
if barstate.islast
    一天毫秒数 = 86400000
    一小时毫秒数 = 3600000
    起始时间 := 回溯类型 == "天数" ? time - 回溯数值 * 一天毫秒数 : time - 回溯数值 * 一小时毫秒数

3. 定位有效计算的Bar范围

通过时间匹配找到对应的起始Bar索引,后续仅在该范围内计算指标:

// 找到第一个符合起始时间的Bar索引
起始Bar索引 = ta.barssince(time >= 起始时间) + 1

// 示例:仅在回溯范围内计算SMA指标
sma20 = ta.sma(close, 20)
plot(bar_index >= 起始Bar索引 ? sma20 : na, color=color.new(color.blue, 0), title="近N天/小时SMA")

方案优势

  • 完全无需手动维护timestamp或bar index,用户只需输入想要回溯的时长
  • 自动适配所有交易品种(外汇/期货/股票)和时间周期(1分钟/4小时/日线等),不用单独配置
  • 不受20k bars权限限制,仅计算回溯范围内的K线,不会超出加载的Bar数量

如果需要针对交易日而非自然日回溯(比如股票跳过周末),可以结合ta.session函数判断交易日,进一步优化起始时间的计算逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 23:40:42