跳转到内容

SCHEDULE

SCHEDULE 用于请求交易时间表。它和 TRADESMIDPOINT 不同,重点不是价格,而是交易时段安排。

官方参考: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=0
SCHEDULE=reqId=4206;name=schedule;start=20260514-09:30:00;end=20260612-16:00:00;timeZone=US/Eastern;sessions=21
SCHEDULE=sessionStart=20260514-09:30:00;sessionEnd=20260514-16:00:00;refDate=20260514
SCHEDULE=sessionStart=20260515-09:30:00;sessionEnd=20260515-16:00:00;refDate=20260515

如果请求发出后没有收到 historicalSchedule(),先检查 barSizeSetting 是否为 1 day、合约是否支持交易时间表、TWS 版本是否支持该回调,以及 error() 是否有参数错误。不要把它当成普通 OHLC K 线来等待 historicalData()

问题用途
哪些日期可交易生成交易日历
当天是否提前收盘过滤特殊交易日
回测是否跳过休市日避免把缺数据误判为接口错误

交易时间表应单独保存为 calendar 或 schedule 数据,不要和价格 K 线混在一起。策略回测前先用交易日历过滤时间范围,再请求价格数据,会比请求后再猜缺口原因更稳。