步长规则
TWS API 的历史 K 线有 step size 规则:请求窗口越长,允许的最小 K 线周期越大。目的很简单,避免一次请求返回过多数据。
下面是适合新手记忆的组合范围。实际开发时仍应按官方规则和真实返回情况做节流。
durationStr | 合理的 barSizeSetting 范围 |
|---|---|
60 S | 1 sec 到 1 min |
120 S | 1 sec 到 2 mins |
1800 S | 1 sec 到 30 mins |
3600 S | 5 secs 到 1 hour |
14400 S | 10 secs 到 3 hours |
28800 S | 30 secs 到 8 hours |
1 D | 1 min 到 1 day |
2 D | 2 mins 到 1 day |
1 W | 3 mins 到 1 week |
1 M | 30 mins 到 1 month |
1 Y | 1 day 到 1 month |
为什么要遵守
Section titled “为什么要遵守”如果请求组合过大,常见结果有三种:
- TWS 直接拒绝请求并返回错误。
- 请求很慢,影响后续请求。
- 频繁请求后触发 pacing violation。
程序里怎么控制
Section titled “程序里怎么控制”可以先写一个简单的白名单,只允许项目需要的组合:
ALLOWED_HISTORICAL_REQUESTS = { "1_hour_backtest": {"duration": "2 D", "bar_size": "1 hour"}, "daily_backtest": {"duration": "1 Y", "bar_size": "1 day"}, "intraday_preview": {"duration": "1 D", "bar_size": "5 mins"},}这样比让用户随便输入 durationStr 和 barSizeSetting 更安全,也更容易定位问题。