QMT量化交易中实时行情订阅与历史数据补全的完整实操路径
发布时间:2026-3-9 23:40阅读:23
行情获取失败是新手最常遇到的卡点,根本原因往往不是网络或权限问题,而是没搞清xtdata的数据分发机制。以订阅沪深300成分股的1分钟K线为例,必须先调用subscribe_history_data,指定code_list、period="1m"、start_time、end_time四个必填参数,否则即使MiniQmt本地已加载数据,Python端也无法触发推送。注意:start_time和end_time需为字符串格式“20230101”,且跨日数据必须分段请求——这是2022-06-27版本后新增的强制校验逻辑。
Level2数据的处理更需谨慎。l2quote快照可用get_l2_quote直接拉取,但l2order和l2transaction这类逐笔数据只能通过subscribe_l2_order和subscribe_l2_transaction订阅,且回调函数必须显式注册。例如:def on_l2_order(data): print(data["order_id"], data["price"]);然后执行xttrader.subscribe_l2_order(["SH600000"], callback=on_l2_order)。关键细节在于:Level2数据无历史存储,当日收盘后自动清空,若需复盘必须在交易时段内完成订阅并主动缓存到本地CSV。
当发现历史K线缺失时,不能依赖get_history,而应调用download_history_data2,传入code、period、start_time、end_time及force_update=True。该接口会绕过缓存直接向MiniQmt服务端发起补全请求,特别适用于2023年新增的千档盘口数据(l2thousand),其字段包含bid_price_1000、ask_volume_1000等深度信息,但仅支持T+1下载——即今日数据需明日9:30后才能补全。
财务数据获取易被忽略的是字段对齐问题。使用get_financial_data时,需明确指定report_type="quarterly"或"annual",且返回的DataFrame列名与文档附录严格对应,如"total_revenue"而非"revenue"。若遇字段缺失,必须配合download_financial_data2指定report_date范围重试,该接口支持2020-11-23后修正的CreateDate/ OpenDate字符串格式。
最后提醒一个硬性约束:所有数据接口均要求账户资产≥10万元才能开通正式版权限,测试账号虽可申请但无法访问l2thousand和期权相关接口。多实例部署时,系统会自动分配8888~8899端口,无需手动配置,但需确保每个QMT进程的xttrader初始化独立——重复调用connect会触发端口冲突报错。
温馨提示:投资有风险,选择需谨慎。
-
买股总怕买贵?【PB低估值】工具:帮你精准揪出“打折股”
2026-03-09 15:29
-
炒股不懂K线?用这个 AI 工具,小白选股不盲目
2026-03-09 15:29
-
2025年业绩涨28%之后,2026年的科创板还能投吗?(附开通条件)
2026-03-09 15:29


问一问

+微信
分享该文章
