miniQMT(迅投极简量化交易终端)
miniQMT 是迅投科技开发的轻量级量化交易终端,专为外接Python设计。它作为本地Windows服务运行,通过 XtQuant Python SDK(xtdata + xttrade)提供行情数据和交易功能。
⚠️ 需要券商开通miniQMT权限。联系您的证券公司开通。多家国内券商支持(国金、华鑫、中泰、东方财富、国信、方正等)。
miniQMT 概述
- - 轻量级QMT客户端,在Windows上作为后台服务运行
- 为外部Python程序提供行情数据服务 + 交易服务
- Python脚本通过
xtquant SDK经本地TCP连接(xtdata获取行情,xttrade执行交易) - 支持品种:A股、ETF、可转债、期货、期权、融资融券
- 部分券商提供免费的 Level 2数据
架构
CODEBLOCK0
如何获取 miniQMT
- 1. 在支持QMT的券商开立证券账户
- 申请miniQMT权限(部分券商要求最低资产,如5万-10万元)
- 从券商处下载安装QMT客户端
- 以miniQMT模式(极简模式)启动并登录
使用流程
1. 启动 miniQMT
以极简模式启动QMT客户端并登录。miniQMT界面非常简洁——只有一个登录窗口。
2. 安装 xtquant
CODEBLOCK1
3. 使用Python连接行情数据
CODEBLOCK2
4. 使用Python连接交易服务
CODEBLOCK3
miniQMT 与完整版 QMT 对比
| 特性 | miniQMT | QMT(完整版) |
|---|
| Python | 外接Python(任意版本) | 内置Python(版本受限) |
| IDE |
任意(VS Code, PyCharm, Jupyter等) | 仅内置编辑器 |
|
第三方库 | 所有pip包(pandas, numpy等) | 仅内置库 |
|
界面 | 极简(仅登录窗口) | 完整交易UI + 图表 |
|
行情数据 | 通过xtdata API | 内置 + xtdata API |
|
交易 | 通过xttrade API | 内置 + xttrade API |
|
资源占用 | 轻量(~50 MB内存) | 较重(完整GUI,~500 MB+) |
|
调试 | 完整IDE调试支持 | 有限 |
|
使用场景 | 自动化策略、外部集成 | 可视化分析 + 手动交易 |
|
连接方式 | 一次性连接,无自动重连 | 持久连接 |
数据能力(通过xtdata)
| 类别 | 详情 |
|---|
| K-line | tick, 1m, 5m, 15m, 30m, 1h, 1d, 1w, 1mon — supports adjustment (forward / backward / proportional) |
| Tick |
Real-time tick data with 5-level bid/ask, volume, turnover, trade count |
|
Level 2 | l2quote (real-time snapshot), l2order (order-by-order), l2transaction (trade-by-trade), l2quoteaux (aggregate buy/sell), l2orderqueue (order queue), l2thousand (1000-level order book), fullspeedorderbook (full-speed 20-level) |
|
Financials | Balance sheet, income statement, cash flow statement, per-share metrics, share structure, top 10 shareholders / free-float holders, shareholder count |
|
Reference | Trading calendar, holidays, sector lists, index constituents & weights, ex-dividend data, contract info |
|
Real-time | Single-stock subscription (
subscribe_quote), market-wide push (
subscribe_whole_quote) |
|
Special | Convertible bond info, IPO subscription data, ETF creation/redemption lists, announcements & news, consecutive limit-up tracking, snapshot indicators (volume ratio / price velocity), high-frequency IOPV |
数据访问模式
CODEBLOCK4
交易能力(通过xttrade)
| 类别 | 操作 |
|---|
| Stocks | Buy/sell (sync and async), limit/market/best price orders |
| ETF |
Buy/sell, creation/redemption |
|
Convertible bonds | Buy/sell |
|
Futures | Open long/close long/open short/close short |
|
Options | Buy/sell open/close, covered open/close, exercise, lock/unlock |
|
Margin trading | Margin buy, short sell, buy to cover, direct return, sell to repay, direct repayment, special margin/short |
|
IPO | New share/bond subscription, query subscription quota |
|
Cancel | Cancel by order_id or broker contract number (sync and async) |
|
Query | Assets, orders, trades, positions, futures position summary |
|
Credit query | Credit assets, liability contracts, margin-eligible securities, available-to-short data, collateral |
|
Bank-broker transfer | Bank to securities, securities to bank (sync and async) |
|
Smart algorithms | VWAP and other algorithmic execution |
|
Securities lending | Query available securities, apply for lending, manage contracts |
账户类型
CODEBLOCK5
关键交易回调
| 回调函数 | 触发时机 |
|---|
| INLINECODE5 | Order status change (submitted, partially filled, fully filled, cancelled, rejected) |
| INLINECODE6 |
Trade execution report |
|
on_stock_position(position) | Position change |
|
on_stock_asset(asset) | Asset/fund change |
|
on_order_error(error) | Order placement failure |
|
on_cancel_error(error) | Order cancellation failure |
|
on_disconnected() | Disconnected from miniQMT |
订单状态码
已报 |
| 54 | 已撤 |
| 55 | 部分成交 |
| 56 | 已成 |
| 57 | 废单 |
常见券商路径
CODEBLOCK6
股票代码格式
000001.SZ |
| 北交所 |
430047.BJ |
| 指数 |
000001.SH(上证综指),
399001.SZ(深证成指) |
| 中金所期货 |
IF2401.IF |
| 上期所期货 |
ag2407.SF |
| 期权 |
10004358.SHO |
| ETF |
510300.SH |
| 可转债 |
113050.SH |
完整示例:行情数据 + 交易策略
CODEBLOCK7
完整示例:实时行情监控
CODEBLOCK8
使用技巧
- - miniQMT 仅支持Windows — 如果TCP可达,Python脚本可以在同一台或不同机器上运行。
- Python脚本运行期间,miniQMT必须保持登录状态。
- INLINECODE22 是一次性连接 — 断开后不会自动重连,需要自行实现重连逻辑。
- INLINECODE23 对每个策略必须唯一 — 不同Python脚本必须使用不同的sessionid。
- 实时订阅时,
xtdata.run() 会阻塞线程 — 请在单独线程中运行,主线程用于交易。 - 下载的数据会本地缓存 — 后续读取速度极快。
- 在推送回调(
on_stock_order等)中,使用异步查询方法(如 query_stock_orders_async)避免死锁。或启用 set_relaxed_response_order_enabled(True)。 - 部分券商提供miniQMT免费Level 2数据 — 请咨询您的券商。
- 文档:http://dict.thinktrader.net/nativeApi/startnow.html
进阶示例
网格交易策略
CODEBLOCK9
可转债T+0日内交易
CODEBLOCK10
定时打新申购
CODEBLOCK11
🤖 AI Agent 高阶使用指南
对于 AI Agent,在使用该量化/数据工具时应遵循以下高阶策略和最佳实践,以确保任务的高效完成:
1. 数据校验与错误处理
在获取数据或执行操作后,AI 应当主动检查返回的结果格式是否符合预期,以及是否存在缺失值(NaN)或空数据。
- * 示例策略:在通过 API 获取数据框(DataFrame)后,使用
if df.empty: 进行校验;捕获 Exception 以防网络或接口错误导致进程崩溃。
2. 多步组合分析
AI 经常需要进行宏观经济分析或跨市场对比。应善于将当前接口与其他数据源或工具组合使用。
- * 示例策略:先获取板块或指数的宏观数据,再筛选成分股,最后对具体标的进行深入的财务或技术面分析,形成完整的决策链条。
3. 构建动态监控与日志
对于交易和策略类任务,AI 可以定期拉取数据并建立监控机制。
- * 示例策略:使用循环或定时任务检查特定标的的异动(如涨跌停、放量),并在发现满足条件的信号时输出结构化日志或触发预警。
社区与支持
由 大佬量化 维护 — 量化交易教学与策略研发团队。
微信客服: bossquant1 · Bilibili · 搜索 大佬量化 — 微信公众号 / Bilibili / 抖音
miniQMT(迅投极简量化交易终端)
miniQMT 是迅投科技开发的轻量级量化交易终端,专为外接Python设计。它作为本地Windows服务运行,通过 XtQuant Python SDK(xtdata + xttrade)提供行情数据和交易功能。
⚠️ 需要券商开通miniQMT权限。联系您的证券公司开通。多家国内券商支持(国金、华鑫、中泰、东方财富、国信、方正等)。
miniQMT 概述
- - 轻量级QMT客户端,在Windows上作为后台服务运行
- 为外部Python程序提供行情数据服务 + 交易服务
- Python脚本通过 xtquant SDK经本地TCP连接(xtdata获取行情,xttrade执行交易)
- 支持品种:A股、ETF、可转债、期货、期权、融资融券
- 部分券商提供免费的 Level 2数据
架构
Python脚本(任意IDE: VS Code, PyCharm, Jupyter等)
↓ xtquant SDK(pip install xtquant)
├── xtdata ──TCP──→ miniQMT(行情数据服务)
└── xttrade ──TCP──→ miniQMT(交易服务)
↓
券商交易系统
如何获取 miniQMT
- 1. 在支持QMT的券商开立证券账户
- 申请miniQMT权限(部分券商要求最低资产,如5万-10万元)
- 从券商处下载安装QMT客户端
- 以miniQMT模式(极简模式)启动并登录
使用流程
1. 启动 miniQMT
以极简模式启动QMT客户端并登录。miniQMT界面非常简洁——只有一个登录窗口。
2. 安装 xtquant
bash
pip install xtquant
3. 使用Python连接行情数据
python
from xtquant import xtdata
连接本地miniQMT行情数据服务
xtdata.connect()
下载历史数据(首次访问前必须下载)
xtdata.download
historydata(000001.SZ, 1d, start
time=20240101, endtime=20240630)
获取K线数据(返回以股票代码为键的DataFrame字典)
data = xtdata.get
marketdata_ex(
[], [000001.SZ], period=1d,
start
time=20240101, endtime=20240630,
dividend_type=front # 前复权
)
print(data[000001.SZ].tail())
4. 使用Python连接交易服务
python
from xtquant import xtconstant
from xtquant.xttrader import XtQuantTrader, XtQuantTraderCallback
from xtquant.xttype import StockAccount
path必须指向QMT安装目录下的userdata_mini文件夹
path = rD:\券商QMT\userdata_mini
session_id对每个策略/脚本必须唯一
session_id = 123456
xt
trader = XtQuantTrader(path, sessionid)
注册回调接收实时推送通知
class MyCallback(XtQuantTraderCallback):
def on_disconnected(self):
print(已断开连接 — 需要重新连接)
def on
stockorder(self, order):
print(fOrder update: {order.stock
code} status={order.orderstatus} msg={order.status_msg})
def on
stocktrade(self, trade):
print(fTrade filled: {trade.stock
code} {trade.tradedvolume}@{trade.traded_price})
def on
ordererror(self, order_error):
print(fOrder error: {order
error.errormsg})
xttrader.registercallback(MyCallback())
xt_trader.start()
connectresult = xttrader.connect() # 收益率 0 on success, non-zero on failure
account = StockAccount(your_account)
xt_trader.subscribe(account) # 订阅账户推送通知
下买入单
order
id = xttrader.order_stock(
account, 000001.SZ, xtconstant.STOCK_BUY, 100,
xtconstant.FIX
PRICE, 11.50, mystrategy, test_order
)
order_id > 0 表示成功,-1 表示失败
miniQMT 与完整版 QMT 对比
| 特性 | miniQMT | QMT(完整版) |
|---|
| Python | 外接Python(任意版本) | 内置Python(版本受限) |
| IDE |
任意(VS Code, PyCharm, Jupyter等) | 仅内置编辑器 |
|
第三方库 | 所有pip包(pandas, numpy等) | 仅内置库 |
|
界面 | 极简(仅登录窗口) | 完整交易UI + 图表 |
|
行情数据 | 通过xtdata API | 内置 + xtdata API |
|
交易 | 通过xttrade API | 内置 + xttrade API |
|
资源占用 | 轻量(~50 MB内存) | 较重(完整GUI,~500 MB+) |
|
调试 | 完整IDE调试支持 | 有限 |
|
使用场景 | 自动化策略、外部集成 | 可视化分析 + 手动交易 |
|
连接方式 | 一次性连接,无自动重连 | 持久连接 |
数据能力(通过xtdata)
| 类别 | 详情 |
|---|
| K线 | tick, 1m, 5m, 15m, 30m, 1h, 1d, 1w, 1mon — 支持复权(前复权/后复权/等比复权) |
| Tick |
实时tick数据,包含5档买卖盘、成交量、成交额、成交笔数 |
|
Level 2 | l2quote(实时快照)、l2order(逐笔委托)、l2transaction(逐笔成交)、l2quoteaux(买卖总量)、l2orderqueue(委托队列)、l2thousand(千档盘口)、fullspeedorderbook(全速20档) |
|
财务数据 | 资产负债表、利润表、现金流量表、每股指标、股本结构、十大股东/流通股东、股东户数 |
|
参考数据 | 交易日历、节假日、板块列表、指数成分股及权重、除权除息数据、合约信息 |
|
实时数据 | 单只股票订阅(subscribe
quote)、全市场推送(subscribewhole_quote) |
|
特殊数据 | 可转债信息、新股申购数据、ETF申赎清单、公告与新闻、连板跟踪、快照指标(量比/涨速)、高频IOPV |
数据访问模式
downloadhistorydata() → getmarketdata_ex() # 历史数据:先下载到本地缓存,再从缓存读取
subscribe_quote() → callback # 实时数据:订阅并通过回调接收
getfulltick() # 快照数据:获取全市场最新tick
交易能力(通过xttrade)
| 类别 | 操作 |
|---|
| 股票 | 买入/卖出(同步和异步)、限价/市价/最优价委托 |
| ETF |
买入/卖出、申购/赎回 |
|
可转债 | 买入/卖出 |
|
期货 | 开多/平多/开空/平空 |
|
期权 | 买入开仓/卖出开仓/买入平仓/卖出平仓、备兑开仓/平仓、行权、锁定/解锁 |
|
融资融券 | 融资买入、融券卖出、买券还券、直接还券、卖券还款、直接还款、专项融资/融券 |
|
新股申购 | 新股/新债申购、查询申购额度 |
|
撤单 | 按订单ID或券商合同号撤单(同步和异步) |
|
查询 | 资产、委托、成交、持仓、期货持仓汇总 |
|
信用查询 | 信用资产、负债合约、可融资标的、可融券数据、担保品 |
|
银证转账 | 银行转证券、证券转银行(同步和异步) |
|
智能算法 | VWAP及其他算法执行 |
|
证券出借 | 查询可出借证券、申请出借、管理合约 |
账户类型
python
StockAccount(id) # 普通股票账户
StockAccount(id, CREDIT) # 信用账户(融资融券)
StockAccount(id, FUTURE) # 期货账户
关键交易回调
| 回调函数 | 触发时机 |
|---|
| onstockorder(order) |
订单状态变化(已提交、部分成交、全部成交、已撤单