SCHEDULE
SCHEDULE 用于请求交易时间表。它和 TRADES、MIDPOINT 不同,重点不是价格,而是交易时段安排。
官方参考:Historical Schedule
app.reqHistoricalData( 1010, contract, "", "1 M", "1 day", "SCHEDULE", 1, 1, False, [],)SCHEDULE 必须使用日级周期。若把 barSizeSetting 写成 5 mins,TWS 会返回 321 错误,提示交易时间表请求只支持日级单位。
SCHEDULE 的官方返回不是 historicalData(),而是 historicalSchedule()。回调里会包含请求窗口、时区和若干交易 session,结构类似:
BAR_TOTAL_COUNT=reqId=4206;name=schedule;count=0SCHEDULE=reqId=4206;name=schedule;start=20260514-09:30:00;end=20260612-16:00:00;timeZone=US/Eastern;sessions=21SCHEDULE=sessionStart=20260514-09:30:00;sessionEnd=20260514-16:00:00;refDate=20260514SCHEDULE=sessionStart=20260515-09:30:00;sessionEnd=20260515-16:00:00;refDate=20260515如果请求发出后没有收到 historicalSchedule(),先检查 barSizeSetting 是否为 1 day、合约是否支持交易时间表、TWS 版本是否支持该回调,以及 error() 是否有参数错误。不要把它当成普通 OHLC K 线来等待 historicalData()。
能解决什么问题
Section titled “能解决什么问题”| 问题 | 用途 |
|---|---|
| 哪些日期可交易 | 生成交易日历 |
| 当天是否提前收盘 | 过滤特殊交易日 |
| 回测是否跳过休市日 | 避免把缺数据误判为接口错误 |
交易时间表应单独保存为 calendar 或 schedule 数据,不要和价格 K 线混在一起。策略回测前先用交易日历过滤时间范围,再请求价格数据,会比请求后再猜缺口原因更稳。