历史 K 线周期
barSizeSetting 决定每根 K 线覆盖多长时间。它必须使用 TWS API 支持的字符串,不能随便写成 60m、1h 或 daily。
| 类别 | 常见写法 |
|---|---|
| 秒级 | 1 secs、5 secs、10 secs、15 secs、30 secs |
| 分钟级 | 1 min、2 mins、3 mins、5 mins、10 mins、15 mins、20 mins、30 mins |
| 小时级 | 1 hour、2 hours、3 hours、4 hours、8 hours |
| 日以上 | 1 day、1 week、1 month |
| 策略类型 | 常用周期 | 注意事项 |
|---|---|---|
| 日内观察 | 1 min、5 mins、15 mins | 注意小周期限频 |
| 波段回测 | 1 hour、1 day | 数据量适中 |
| 长期分析 | 1 day、1 week、1 month | 注意复权和公司行动 |
| 实时拼接 | 5 secs 或分钟级 | 可考虑 keepUpToDate=True |
app.reqHistoricalData( 1002, contract, "", "1 W", "1 day", "TRADES", 1, 1, False, [],)上面表示请求最近 1 周的日线数据。
K 线周期越小,返回条数越多。你应该根据策略真正需要的粒度选择周期,不要为了“更精细”默认请求秒级数据。秒级历史数据更容易触发 pacing,也更容易遇到权限、可用年限和返回速度问题。
官方有效取值使用固定英文字符串,程序里建议用白名单保存,不要让用户自由输入 1h、5m 这类简写。