
在量化交易领域,行情数据的精度与交易执行的效率直接决定策略收益上限。QMT(迅投极速交易终端)作为专业级交易工具,通过 XtQuant 接口实现了行情与交易的深度融合 —— 既支持官方 Level2 行情直连,也可接入外部 L2 数据源,搭配自定义策略实现毫秒级自动下单。本文将基于 量化工具QMT ,从行情优势、接口原理到实操落地,系统讲解如何搭建严谨的 Level2+QMT 自动交易体系。
一、先懂行情:Level2 相比 Level1 的核心优势
很多投资者对 Level2 的认知停留在 “十档盘口”,但在QMT里,Level2 行情的核心价值在于毫秒级数据粒度与全量委托成交明细,这是 Level1(3 秒快照)无法比拟的。通过官方数据字典可清晰看到两者差异:
以l2transaction(Level2 逐笔成交)字段为例,其包含time(毫秒级时间戳)、buyNo(买方委托号)、sellNo(卖方委托号)、tradeType(成交类型)等关键信息 —— 通过这些字段,可精准识别 “主力主动买入”“被动接盘” 等资金行为,而 Level1 完全无法提供此类明细。
对量化策略而言,Level2 的核心应用场景包括:
-
大单识别:通过volume字段设置阈值(如 1000 股),自动标记主力大单;
-
盘口异动捕捉:监控l2orderqueue(委托队列)中突增的大笔委托,预判短期走势;
-
撤单分析:通过entrustDirection字段(3 = 撤买、4 = 撤卖)识别虚假委托;
-
成交归因:结合tradeFlag(1 = 外盘、2 = 内盘)判断涨跌是否由主动资金推动。
二、QMT 的 Level2 接入双路径
QMT 支持两种 Level2 接入方式,分别对应不同需求场景。
路径 1:QMT 官方 Level2 直连
若券商已为你的账号开通 Level2 权限(多数券商对资产达标客户免费提供),可直接通过 QMT 内置接口获取,无需额外开发,核心优势是稳定合规与低延迟,具体操作严格遵循文档步骤:
1. 权限申请与验证
-
向券商申请 Level2 权限(需提供资金账号),1-2 个工作日生效;
-
启动 QMT 客户端(必须以 “极简模式” 登录;
-
在 QMT “系统设置 – 行情设置” 中勾选 “Level2 行情”,重启后生效(验证:盘口显示 “买十 – 卖十” 即成功)。
2. 接口调用示例(基于 xtdata 模块)
通过xtdata.subscribe_quote订阅 Level2 数据,需指定period为 Level2 专属周期(如l2transaction逐笔成交、l2order逐笔委托):
3. 关键注意事项
-
单股订阅数量不超过 50 只,多股建议用subscribe_whole_quote全推订阅;
-
Level2 数据无本地历史存储(跨交易日后清理),需在策略中实时保存;
-
行情接口调用前需确保 QMT 已加载数据,缺失时用xtdata.download_history_data2补充。
路径 2:miniQMT 接入外部 Level2 数据
若需自定义数据格式(如对接 jvQuant、通达信等外部 L2 数据源),可通过 miniQMT 的xtdata模块接入,核心是将外部数据标准化为 QMT 兼容格式,再通过xttrader接口下单。
1. 数据格式标准化
外部 L2 数据需转换为 QMT 定义的结构,以逐笔成交为例,需包含以下字段:
2. 外部数据写入 QMT 缓存(通过 xtdata 模块)

3. 优势与适用场景
-
支持自定义数据过滤(如仅保留大单数据);
-
可对接多数据源交叉验证(如 QMT 官方 + 外部 L2 双校验);
-
适合需要深度数据加工的策略(如盘口订单流分析)。
三、核心落地:Level2 策略 + QMT 自动下单
搭建完 Level2 数据源后,需通过 XtQuant 的交易接口(xttrader 模块)实现自动下单。QMT 交易接口分为 “系统设置接口”“操作接口”“查询接口” 三类,必须按顺序调用,否则会导致连接失败或下单异常。
1. 前置准备
-
环境要求:Python 3.6-3.11;
-
QMT 启动:必须以 “极简模式” 登录(常规模式无法建立 Python 连接);
-
路径验证:确认userdata_mini路径正确(可在 QMT “系统设置 – 路径设置” 中查看,如D:\qmt\GuojinQMT\userdata_mini)。
2. 交易接口初始化流程

3. Level2 策略实现(基于逐笔成交数据)
以 “大单突破策略” 为例,结合 Level2 逐笔成交数据触发下单,策略逻辑严格依赖l2transaction字段:

4. 关键风险控制(文档重点强调)
-
委托状态校验:通过query_stock_orders查询委托状态,避免重复下单;
-
非交易时间处理:用xtdata.get_trading_time判断交易时段,非交易时间下单转为次日委托;
-
持仓检查:卖出前调用query_stock_positions确认持仓,避免无持仓下单;
-
断线重连:在on_disconnected回调中实现重连逻辑,确保连接稳定性。
四、进阶优化:基于文档的性能与合规保障
从以下维度优化系统,确保策略稳定运行:
1. 接口调用性能优化
-
批量数据处理:用download_history_data2(批量下载)替代download_history_data,减少接口调用次数;
-
全推订阅:多股监控时用subscribe_whole_quote(全推)替代单股订阅,降低网络开销;
-
宽松时序开启:在on_stock_order等回调中调用查询接口时,开启set_relaxed_response_order_enabled(True),避免线程阻塞。
2. 合规与风险控制
-
订单备注长度:order_remark字段最大 24 个英文字符(文档限制),超出会被截断;
-
账号权限校验:用query_account_status确认账号状态(正常 = 0,见文档账号状态枚举);
-
数据备份:定期调用export_data接口导出委托 / 成交数据,用于后续复盘。
3. 常见问题排查
五、总结:从文档到落地的核心原则(附部分运行截图)
搭建 QMT+Level2 自动交易系统,需严格遵循官方文档的接口规范与数据定义,核心原则包括:
-
接口调用顺序不可乱:必须按 “初始化→注册回调→启动线程→连接→订阅账号” 的顺序调用;
-
数据格式必须匹配:外部数据需标准化为文档定义的字段结构(如l2transaction字段),避免解析异常;
-
风险控制不可少:下单前必查资金 / 持仓,非交易时间必做判断,断线必重连,确保合规与稳定;
-
性能优化有依据:参考文档 “请求限制” 与 “批量接口” 建议,避免高频调用导致的接口阻塞。
对普通投资者而言,无需追求复杂策略,先通过 Level2 数据看懂主力资金动向,再用 QMT 实现 “信号→下单” 的自动化,就能显著提升交易效率。但需牢记:工具是辅助,策略的回测有效性与风险控制,才是长期盈利的核心。




声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

评论(0)