如何在Bybit平台可靠获取完整交易历史?
Bybit当日交易历史获取的非轮询优化方案
方案一:历史包下载+断点续传式API拉取
- 每日凌晨后,先通过Bybit官方的历史交易数据打包下载功能,获取前一日的完整交易记录,确保历史数据的完整性。
- 对于当日交易数据,采用基于交易ID的断点续传拉取:
- 首次拉取时,调用
/v5/market/recent-trade接口,指定startTime为当日0点的时间戳,拉取当日到当前的所有交易数据,同时记录返回结果中最后一条交易的tradeId。 - 后续需要更新数据时,直接传入这个
tradeId作为fromId参数,接口会返回该ID之后的交易记录(最多1000条),拉取完成后更新本地存储的tradeId。 - 这种方式无需持续轮询,可按需触发(比如每小时一次,或在需要最新数据时执行);即使程序崩溃,重启后读取本地保存的
tradeId,就能从断点处继续拉取,不会断档。
- 首次拉取时,调用
方案二:Websocket实时推送+初始数据补全
- 利用Bybit的
publicTradeWebsocket频道,订阅目标交易对的实时交易推送:- 程序启动时,先通过
/v5/market/recent-trade接口拉取当日0点到当前的所有交易数据,写入本地存储,并记录最后一条交易的tradeId和时间戳。 - 订阅Websocket频道,后续所有新产生的交易会实时推送到客户端,直接追加到本地存储即可。
- 若Websocket连接断开,重启后先通过
/v5/market/recent-trade接口,用断开前记录的tradeId作为fromId拉取断开期间的增量数据,再重新订阅频道,确保数据无遗漏。
- 程序启动时,先通过
关键注意点
- 无论采用哪种方案,都需要本地持久化存储最后一条交易的
tradeId和时间戳,作为断点标记。 - 使用Websocket时,要实现自动重连机制,应对网络波动,重连后及时补全缺失数据。
内容的提问来源于stack exchange,提问作者Mooh
相关产品推荐
相关产品推荐

