跳转到内容

每个周期的最大持续时间

设计历史数据下载器时,不应让每个请求都取“尽可能长”。更好的方式是按 K 线周期选择一个稳定窗口,循环向前或向后分段下载。

K 线周期建议单次窗口说明
1 sec几分钟到半小时很容易触发小周期限频
5 secs / 10 secs1 小时到数小时适合短时间观察
1 min1 天以内常见日内回测窗口
5 mins / 15 mins数天到 1 周1 D + 5 mins 已用 AAPL 验证
1 hour数天到数周数据量更小,适合较长窗口
1 day数月到 1 年适合波段和长期回测

这些不是唯一正确值,而是比较稳的起点。真正上线时要结合合约类型、账户权限和请求频率调整。

request_plan = [
{"end": "", "duration": "1 D", "bar_size": "5 mins"},
# 下一段可以用上一段最早 bar 的时间作为新的 endDateTime
]

每段完成后,等待 historicalDataEnd(),再发下一段。不要在上一段没结束时连续扔很多历史请求。

如果你遇到这些现象,通常说明窗口太大或请求太频繁:

  • 很久没有收到 historicalDataEnd()
  • error() 返回 pacing 相关提示。
  • 小周期请求刚开始正常,连续运行后越来越慢。
  • 返回条数远超策略实际需要。

先缩短 durationStr,再增加请求间隔,通常比盲目重试更有效。