使用手册
功能在哪 · 是什么 · 怎么调出来一、QMT 是什么
QMT(迅投量化交易终端)是当前国内个人股票量化最主流的入口:
- 券商提供:在你开户的券商那里申请开通 QMT 权限(不同券商资金门槛不同,常见为几万到几十万元,详见 FAQ);
- Python 接口 xtquant:用 Python 写策略,通过本地连接直连券商柜台;
- 两种运行形态:QMT=完整图形客户端(看行情、手动下单、跑内置策略);miniQMT=无界面极简后台,专门给外部 Python 程序连;
- 支持品种:A 股、ETF、可转债、期货、期权、融资融券;
- 速度快、稳定,是现在私募和个人股票量化的事实标准。
新手注解:QMT 不是下载就能用,必须找券商开通权限。不同券商门槛差异很大(部分 5 万–10 万即可,部分要求更高),达不到门槛可以先用 vn.py + SimNow 或天勤 TqSdk 的模拟环境学习。
1、QMT vs 其他方案
| 方案 | 特点 | 适合谁 |
|---|---|---|
| QMT/miniQMT | 券商提供,股票量化事实标准,xtquant 外接任意 Python | 做股票/ETF/可转债的个人量化 |
| vn.py | 开源,期货为主,可深度改造 | 做期货、有工程能力 |
| PTrade | 恒生电子出的券商终端,与 QMT 同类 | 券商支持哪个用哪个 |
| 聚宽/米筐 | 云端回测平台 | 偏研究回测、暂不实盘 |
二、开通权限与安装
1、开通权限
- 在你开户的券商 App 或官网/客户经理处申请"QMT 量化交易权限";
- 满足适当性要求(资金门槛、知识测试、风险测评;两融/期权/期货需单独开通对应权限);
- 券商会给你:QMT 下载链接、资金账号、以及 miniQMT 启动方式。
国内支持 QMT 的券商较多(社区常见如国金、华鑫、中泰、东方财富、国信、方正等,具体以你开户券商为准)。
2、安装 QMT 与 xtquant
- 从券商提供的链接下载 QMT 安装包(注意是你券商的版本,不同券商安装目录名不同);
- 安装后用资金账号登录;首次登录会下载行情、同步合约信息。
## xtquant 建议 Python 3.8 / 3.9 / 3.10
pip install xtquant
新手注解:xtquant 通常在 QMT 安装目录下也自带一份(bin.x64/Lib/site-packages/xtquant),用券商自带的版本最稳,能保证和你这版 miniQMT 完全匹配。pip install的版本可能和客户端有出入。
三、QMT 图形界面分区
QMT 完整客户端主界面大致分几块:
- 行情区:自选股列表、分时图、K 线图;
- 交易区:普通股票/期货/期权手动下单面板、当日委托成交、持仓;
- 量化区:策略管理、内置 Python 编辑器、回测、策略实例运行列表;
- 策略列表:你加载的所有策略实例及其运行状态。
新手建议先在 QMT 图形界面里手动交易几天,熟悉委托、撤单、持仓这些基本概念,再碰 Python 接口。
操作教程
一步一步 · 跟着做完一件事四、miniQMT 极简后台模式
miniQMT 是 QMT 的"无头版"(没有完整图形界面,登录窗口极简),在 Windows 上作为后台服务运行,专门给外部 Python 程序提供:
- 行情数据服务(xtdata 走本地 TCP 取行情/历史);
- 交易服务(xttrader 走本地 TCP 下单/查持仓)。
启动方式:① 以 miniQMT(极简)模式启动券商提供的程序;② 登录资金账号;③ 保持它后台运行;④ Python 脚本通过 xtquant 连接本地服务。
Python 脚本(VS Code / PyCharm / Jupyter 任意 IDE)
下:xtquant SDK(pip install xtquant)
├── xtdata ──本地TCP──→ miniQMT(行情数据服务)
└── xttrader ──本地TCP──→ miniQMT(交易服务)
1. 券商交易系统(柜台):
| 对比项 | QMT 完整版 | miniQMT |
|---|---|---|
| 界面 | 完整看盘+交易 UI+图表 | 仅一个登录窗口,后台跑 |
| Python | 内置编辑器,Python 版本/库受限 | 外接任意 Python,可用全部 pip 包(pandas/numpy 等) |
| 资源占用 | 较重(完整 GUI,约 500MB+ 内存) | 轻量(约 50MB 内存) |
| 调试 | 内置编辑器,调试有限 | 任意 IDE 完整断点调试 |
| 连接方式 | — | 一次性连接,断线不自动重连 |
| 适合 | 手动交易、可视化分析、内置策略 | 7×24 自动跑程序、外部集成、VPS 部署 |
白话注解:QMT 完整版就像汽车有方向盘有仪表盘,miniQMT 是把仪表盘拆了只留发动机——专门给程序用的。跑实盘策略用 miniQMT,别用完整 QMT:完整界面吃内存多,还可能不小心手动下单干扰策略。
五、xtdata:行情与历史数据接口
xtquant.xtdata 负责一切"取数"。它有三种数据访问模式,必须分清:
| 模式 | 调用 | 说明 |
|---|---|---|
| 历史数据 | download_history_data() → get_market_data_ex() | 先把历史下载到本地缓存,再从缓存读;首次访问前必须先下载 |
| 实时订阅 | subscribe_quote() → callback | 订阅后通过回调函数推送实时行情 |
| 快照 | get_full_tick() | 一次性取全市场最新 tick 快照 |
1、连接行情服务
from xtquant import xtdata
xtdata.connect() # 连接本地 miniQMT 行情数据服务
2、下载并读取历史 K 线
## 首次访问前先下载(增量下载到本地缓存)
xtdata.download_history_data('600000.SH', '1d',
start_time='20240101', end_time='20250101')
## 读取:返回 {股票代码: DataFrame} 字典
data = xtdata.get_market_data_ex(
field_list=[], # 空列表=取全部字段
stock_list=['600000.SH'],
period='1d', # 周期见下表
start_time='20240101',
end_time='20250101',
dividend_type='front' # front=前复权 / back=后复权
)
print(data['600000.SH'].tail())
period 常用取值:tick、1m、5m、15m、30m、1h、1d、1w、1mon(月线)。复权用 dividend_type:front 前复权、back 后复权。
3、订阅实时行情
from xtquant import xtdata
def on_data(datas): # datas 是 {代码: tick字典}
for code, tick in datas.items():
print(code, tick['lastPrice'], tick['volume'])
## 订阅单只 tick;也可用 period='1d' 订阅日线推送
xtdata.subscribe_quote('600000.SH', period='tick', callback=on_data)
xtdata.run() # 阻塞当前线程,持续接收(要放子线程!)
白话:xtdata.run() 会把当前线程堵死在那等行情,所以订阅要放进单独的子线程,主线程留着下单。另外下载到本地的历史数据有缓存,第二次读飞快;换了品种或要更新,重新 download 即可。
4、Level-2 与其他数据能力
- Level-2 行情:部分券商免费提供,包括
get_l2_quote(实时快照)、get_l2_order(逐笔委托)、get_l2_transaction(逐笔成交)、get_l2_orderqueue(委托队列)、get_l2_thousand(千档盘口)等;是否可用问你券商。 - 全市场推送:
subscribe_whole_quote()一次性订阅全市场行情,适合做扫描类策略。 - 财务数据:
get_financial_data()可取三大报表、每股指标、股本结构、十大股东等(先download_financial_data()下载)。 - 参考数据:交易日历、节假日、板块成分、指数成分与权重、除权除息、合约信息;另有打新数据、ETF 申赎清单、公告新闻、连板跟踪、高低频 IOPV 等。
六、xttrader:交易接口与回调
1、连接交易服务的固定套路
from xtquant import xtconstant
from xtquant.xttrader import XtQuantTrader, XtQuantTraderCallback
from xtquant.xttype import StockAccount
## path 必须指向 QMT 安装目录下的 userdata_mini 文件夹
path = r'D:\国金证券QMT交易端\userdata_mini'
session_id = 123456 # 每个策略/脚本必须唯一
class MyCallback(XtQuantTraderCallback):
def on_disconnected(self):
print('已断开连接')
def on_stock_order(self, order): # 委托状态变化
print(order.stock_code, order.order_status, order.status_msg)
def on_stock_trade(self, trade): # 成交回报
print('成交', trade.stock_code, trade.traded_volume, trade.traded_price)
def on_order_error(self, error): # 下单失败
print('下单错误', error.error_msg)
trader = XtQuantTrader(path, session_id)
trader.register_callback(MyCallback())
trader.start()
if trader.connect() != 0: # 返回 0 表示成功,非 0 失败
raise SystemExit('连接失败')
account = StockAccount('你的资金账号')
trader.subscribe(account) # 订阅账户推送
2、下单 order_stock
## 限价买入:600000 浦发银行 100 股,价格 10.50
order_id = trader.order_stock(
account, '600000.SH',
xtconstant.STOCK_BUY, # 买;卖用 STOCK_SELL
100,
xtconstant.FIX_PRICE, # 限价;最新价用 LATEST_PRICE
10.50,
'my_strategy', '买入测试' # 策略名/下单备注(可空)
)
## 卖出
trader.order_stock(account, '600000.SH', xtconstant.STOCK_SELL,
100, xtconstant.FIX_PRICE, 10.80)
3、撤单与查询
trader.cancel_order_stock(account, order_id) # 按委托号撤单
asset = trader.query_stock_asset(account) # 查资金
print('总资产', asset.total_asset, '可用', asset.cash)
for pos in trader.query_stock_positions(account): # 查持仓
print(pos.stock_code, pos.volume, pos.can_use_volume, pos.open_price)
for o in trader.query_stock_orders(account): # 当日委托
print(o.stock_code, o.order_volume, o.traded_volume, o.order_status)
trader.query_stock_trades(account) # 当日成交
4、委托状态码(重要)
| order_status 值 | 含义 |
|---|---|
| 48 | 未报(还没送出去) |
| 50 | 已报(已到交易所) |
| 54 | 已撤 |
| 55 | 部分成交 |
| 56 | 已成(全部成交) |
| 57 | 废单(被拒,看 status_msg) |
5、账户类型
StockAccount('资金账号') # 普通股票账户
StockAccount('资金账号', 'CREDIT') # 信用账户(融资融券)
StockAccount('资金账号', 'FUTURE') # 期货账户
白话:xttrader 的套路是"先注册回调类 → start → connect(判断返回值是不是0)→ subscribe(account) → 再下单"。很多人报错是因为 path 指错了(没指到 userdata_mini 文件夹)或 session_id 撞了(两个脚本用同一个 id)。
七、进阶交易能力(两融/期权/打新/转账)
通过 xttrader,miniQMT 不止能买卖普通股票,还支持:
| 类别 | 能力 |
|---|---|
| 股票/ETF | 买卖(同步/异步)、限价/最新价/市价/本方最优价等委托类型、ETF 申赎 |
| 可转债 | 买卖(可转债 T+0) |
| 期货 | 开多/平多/开空/平空 |
| 期权 | 买开/卖开/买平/卖平、备兑、行权、锁仓/解锁 |
| 融资融券 | 融资买入、融券卖出、买券还券、直接还款、卖券还款、直接还款等 |
| 打新 | 新股/新债申购、query_new_purchase_limit 查申购额度、query_ipo_data 查当日新股 |
| 银证转账 | 银行转证券、证券转银行(同步/异步) |
| 智能算法 | VWAP 等算法拆单执行 |
| 撤单 | 按委托号或券商合同编号撤单(同步/异步) |
白话:这些进阶能力(两融、期权、打新、银证转账)都要先在券商那边单独开通对应权限,光有股票账户用不了。代码上只是 StockAccount 换个类型或调不同函数。
八、部署与排坑(VPS/重连/线程)
| 方式 | 说明 |
|---|---|
| 本地 Windows | 调试开发用,配合 IDE 断点 |
| 云 Windows 服务器 | 7×24 跑策略(阿里云/腾讯云 Windows 实例),miniQMT 仅支持 Windows |
| 备份 | 策略文件、账户配置每天备份,别只存在一台机器 |
1、常见排坑点(社区高频)
- miniQMT 必须保持登录状态:Python 脚本运行期间,miniQMT 不能掉线、不能关机。
- connect() 不自动重连:xtdata.connect / trader.connect 是一次性连接,断线后要自己写重连逻辑。
- session_id 必须唯一:每个并行脚本用不同 session_id,否则互相顶掉。
- xtdata.run() 要放子线程:它会阻塞,主线程留着交易;否则下单代码永远不执行。
- 回调里别同步查询:在 on_stock_order 等推送回调里直接调同步查询可能死锁;用异步查询(如
query_stock_orders_async)或开启set_relaxed_response_order_enabled(True)。 - 历史数据先下载再读:没 download 就 get_market_data_ex 会是空的。
- 不同券商路径不同:path 指到你客户端的
userdata_mini(如D:\国金证券QMT交易端\userdata_mini、D:\华鑫证券\userdata_mini、D:\中泰证券\userdata_mini)。
新手注解:跑实盘一定要用云 Windows 服务器。家里电脑停电、断网、Windows 自动更新重启,都会让策略停摆甚至裸奔。
九、隐藏功能与冷门技巧(祖坟级)
- 用客户端自带 xtquant:路径
bin.x64/Lib/site-packages/xtquant,与 miniQMT 版本严格匹配,比 pip 装的版本少踩坑。 - get_full_tick 全市场快照:启动时一次性拿到全市场最新行情,适合初始化时做全市场筛选。
- subscribe_whole_quote 全市场推送:做轮动/扫描策略时不用逐个 subscribe。
- download_history_data 增量下载:带
incrementally=True只补增量,比全量重下快。 - 回调里用异步查询防死锁:on_stock_order 里直接同步 query 可能卡死,用 query_stock_orders_async 或 set_relaxed_response_order_enabled(True)。
- xtdata.run 必须子线程:否则主线程的下单代码永远轮不到执行。
- 两融/期权/打新要单独开通权限:代码能调不代表账户有权限,没开通会下废单。
- 银证转账也能程序化:xttrader 支持银行证券转账(同步/异步),但实盘慎用自动转账。
- VWAP 算法拆单:大额单子直接市价会冲击成本,用内置智能算法按 VWAP 拆成小单分批成交。
- Level-2 是否免费问券商:部分券商对 miniQMT 用户免费提供 Level-2,开通后才能用 get_l2_\* 系列。
- 跨机部署:miniQMT 在一台 Windows 上跑,Python 脚本在另一台机器上只要 TCP 能连通也能连(生产更建议同机,减少网络故障点)。
- 断线重连要自己写:connect 一次性、on_disconnected 回调里要实现重连 + 重新 subscribe(account),否则断网恢复后程序就"哑巴"了。
十、2026 增量更新(深挖第2轮)
来源:迅投官方知识库「XtQuant 版本下载」页(dict.thinktrader.net/nativeApi/download_xtquant.html,页面 2025-12-19 更新)与 thinktrader.net 首页 Skills 介绍,抓取于 2026-09。本节只记手册正文尚未覆盖的近一年 xtquant 新增接口与迅投 2026 新推能力。
1、xtquant 近一年新增的交易/数据接口
- Python 3.13 支持 + 银证转账全套异步接口(xtquant_250516):xtdata/xttrader 适配 Python 3.13(此前 FAQ 说"3.12+ 可能没编译好"的顾虑已解除);新增
query_bank_info / query_bank_amount / bank_transfer_in / bank_transfer_out / query_bank_transfer_stream银证转账接口,以及期货期权资金划转ctp_transfer_option_to_future / ctp_transfer_future_to_option。 - xttrader 支持北交所(同版本):现在 xttrader 可直接交易北交所股票。
- 持仓/资产/委托对象加字段:XtOrder/XtTrade/XtPosition 新增
secu_account(股东代码)、instrument_name(证券名称);XtPosition 新增profit_rate / float_profit / position_profit / open_date;XtAsset 新增fetch_balance / current_balance。 - 智能算法下单 API(xtquant_250807):xttrader 新增
get_smart_algo_param / smart_algo_order_async / query_smart_algo_task / cancel_smart_algo_task_async,可用 Python 直接挂智能算法单(手册正文只提了 QMT 界面里的智能算法,没有这组接口)。 - 千档与队列排名:
xtdc.set_thousand_source_mode()切千档数据源;xtdata.get_order_rank()查委托在千档队列中的排名(投研版)。
白话:手册正文讲的是"QMT 界面里有银证转账、有智能算法";这一轮补的是用 xtquant 脚本直接调这些功能的接口名——你现在可以在 Python 里直接发银证转账、直接挂智能算法单、直接读股东代码和浮盈字段,不用再回 QMT 界面手动点。版本号对应到 xtquant_250807 及以上。
2、迅投 2026 新推:xtquant SDK Skills 与"一句话建策略"
- 迅投官网 thinktrader.net 2026 年上线了可一键安装的 xtquant SDK Skill(首批 8 个),覆盖行情、基础信息、财务三大数据底座,可被任意 AI 助手即装即用——相当于把常用 xtquant 调用封装成 AI 可直接调用的工具。
- QMT 客户端已支持拖拽建模与"AI 一句话建策略":用自然语言描述想法,AI 自动生成/搭出策略骨架。
白话:以前写 xtquant 要自己查文档拼接口;2026 年迅投把高频用到的数据接口打包成了 AI Skill,喂给 AI 助手就能直接出可跑的取数代码;不会写代码的人也能在 QMT 里用嘴"说"出一个策略雏形。注意这些是面向 AI/低代码的新入口,传统手写 xtquant 的用法不变。
本站固定免责声明:本教程仅讲解 QMT/xtquant 的软件操作,不构成投资建议、策略推荐或实盘引导。程序化交易风险极高,可能造成重大损失。请通过持牌券商参与交易,谨慎决策。功能、接口、状态码、门槛等以迅投官方知识库(dict.thinktrader.net)与你开户券商的最新版本为准。
💬 用户评价 (0)
立即登录