如何判断TWS API返回的行情数据是否延迟及对应延迟时长?
TWS API延迟行情数据识别及延迟时长判断方法
调用reqMarketDataType(4)后出现实时、延迟行情混发是接口默认逻辑:该参数的含义是优先请求实时行情,当账号无对应标的实时行情权限时,自动回退请求延迟行情,并非强制所有订阅走延迟数据源。
延迟/实时行情识别方法
可直接通过行情回调的参数标记区分,不需要额外发起请求:
- 所有延迟行情返回时,回调携带的tickType会落在专属枚举区间,对应枚举值如下:
// TWS API内置延迟行情tick类型枚举 DELAYED_BID = 66, DELAYED_ASK = 67, DELAYED_LAST = 68, DELAYED_HIGH = 69, DELAYED_LOW = 70, DELAYED_VOLUME = 71, DELAYED_CLOSE = 72, DELAYED_OPEN = 73
只要tickPrice、tickSize、tickString等行情回调收到的tickType属于上述范围,即可判定为延迟行情;如果tickType落在1-13的常规实时行情枚举区间,即为实时行情。
- 部分高版本API会在延迟行情推送的首个
tickString回调中携带delayedLastTimestamp字段,标注该行情在交易所的原始生成时间,可辅助校验。
延迟时长判断方法
- 不存在全局统一的延迟时长,延迟规则由对应交易所制定,常规参考范围:
- 美股NYSE、NASDAQ等主流交易所延迟行情默认延迟15分钟
- 港股、欧股主流交易所延迟行情普遍为15-20分钟
- 部分小众市场、期货/期权品种延迟行情可能达到30分钟
- 精准计算单条行情实际延迟的方法:提取延迟tick携带的交易所原始时间戳,和本地收到该tick的系统时间做差值,即可得到实时延迟秒数。不建议直接使用固定经验值,不同交易时段、不同交易所的网络链路波动会导致实际延迟有偏差。
补充说明:如果需要强制所有订阅都返回延迟行情(避免混发),可将
reqMarketDataType的入参改为3,该模式下API会完全屏蔽实时行情请求,所有返回均走延迟数据源。
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

