持续时间
durationStr 表示从 endDateTime 往前取多长一段历史数据。它不是开始时间,而是“回看窗口”。
<数量> <单位>常见单位:
| 单位 | 含义 | 示例 |
|---|---|---|
S | 秒 | 60 S |
D | 天 | 2 D |
W | 周 | 1 W |
M | 月 | 1 M |
Y | 年 | 1 Y |
示例:
app.reqHistoricalData( 1001, contract, "", "2 D", "1 hour", "TRADES", 1, 1, False, [],)和结束时间的关系
Section titled “和结束时间的关系”如果 endDateTime="",TWS 以可用的最新时间作为结束点,向前取 durationStr 指定的长度。
如果你填写具体结束时间,例如:
20260612 16:00:00 US/Eastern那么 2 D 表示从这个结束时间往前取 2 天,而不是自然日 0 点到 24 点。
和 K 线周期的关系
Section titled “和 K 线周期的关系”durationStr 越长,barSizeSetting 越小,返回的 K 线越多,也越容易触发限频或被 TWS 拒绝。
| 组合 | 新手判断 |
|---|---|
1 D + 1 hour | 合理,适合测试 |
1 D + 5 mins | 合理,AAPL 常规交易时段参考返回 78 根 |
1 Y + 1 sec | 不合理,请求量过大 |
1 M + 1 day | 合理,适合日线回测 |
写回测下载器时,不要一次请求很大的历史范围。更稳妥的方式是按 bar size 分段请求,并在每段之间加入节流和重试逻辑。