XtQuant(迅投QMT Python SDK)
XtQuant is the Python SDK for the QMT/miniQMT quantitative trading platform, developed by ThinkTrader (XunTou Technology). It contains two core modules:
- - xtdata — Market Data Module: real-time quotes, historical K-lines, tick data, Level 2 data, financial data, sector management
- xttrade — Trading Module: order placement, position/order queries, account management, margin trading, futures/options, smart algorithms
⚠️ Requires miniQMT or QMT client running on Windows. XtQuant connects to the QMT process via local TCP. You need QMT/miniQMT access enabled by your broker.
安装
CODEBLOCK0
You can also download from the official website: http://dict.thinktrader.net/nativeApi/download_xtquant.html
架构概述
CODEBLOCK1
核心模块参考
| Module | Import | Purpose |
|---|
| INLINECODE0 | INLINECODE1 | Market data: K-lines, tick, Level 2, financials, sectors |
| INLINECODE2 |
from xtquant.xttrader import XtQuantTrader | Trading: order placement, queries, callbacks |
|
xtconstant |
from xtquant import xtconstant | Constants: order types, price types, market codes |
|
xttype |
from xtquant.xttype import StockAccount | Account types: STOCK, CREDIT, FUTURE |
快速入门 — 行情数据
CODEBLOCK2
实时行情订阅
CODEBLOCK3
财务数据
CODEBLOCK4
合约信息与板块
CODEBLOCK5
快速入门 — 交易
CODEBLOCK6
股票代码格式
| Market | Format | Example |
|---|
| Shanghai A-shares | INLINECODE8 | INLINECODE9 |
| Shenzhen A-shares |
XXXXXX.SZ |
000001.SZ |
| Beijing Stock Exchange |
XXXXXX.BJ |
430047.BJ |
| Shanghai Index |
XXXXXX.SH |
000001.SH (SSE Composite Index) |
| Shenzhen Index |
XXXXXX.SZ |
399001.SZ (SZSE Component Index) |
| CFFEX Futures |
XXXX.IF |
IF2401.IF (CSI 300 Futures) |
| SHFE Futures |
XXXX.SF |
ag2407.SF (Silver Futures) |
| DCE Futures |
XXXX.DF |
m2405.DF (Soybean Meal Futures) |
| ZCE Futures |
XXXX.ZF |
CF405.ZF (Cotton Futures) |
| INE Futures |
XXXX.INE |
sc2407.INE (Crude Oil Futures) |
| Shanghai Options |
XXXXXXXX.SHO |
10004358.SHO |
| Shenzhen Options |
XXXXXXXX.SZO |
90000001.SZO |
| ETF |
XXXXXX.SH/SZ |
510300.SH |
| Convertible Bonds |
XXXXXX.SH/SZ |
113050.SH |
数据周期
INLINECODE36 , 1m, 5m, 15m, 30m, 1h, 1d, 1w, INLINECODE44
支持的资产类型
| Asset | Market Data (xtdata) | Trading (xttrade) |
|---|
| A-shares (Shanghai & Shenzhen) | ✅ K-lines, tick, Level 2, financials | ✅ Buy/Sell |
| ETF |
✅ K-lines, tick, IOPV | ✅ Buy/Sell, Subscribe/Redeem |
| Convertible Bonds | ✅ K-lines, tick | ✅ Buy/Sell |
| Futures | ✅ K-lines, tick | ✅ Open long/Close long/Open short/Close short |
| Options | ✅ K-lines, tick | ✅ Buy/Sell open/close, Exercise |
| Indices | ✅ K-lines, tick | ❌ |
| Funds | ✅ K-lines, tick | ✅ Buy/Sell |
| Margin Trading | ✅ Via credit account | ✅ Full credit trading |
订单类型常量(xtconstant)
| Category | Constants |
|---|
| Stock | INLINECODE45 (23, buy), STOCK_SELL (24, sell) |
| Credit |
CREDIT_FIN_BUY (margin buy),
CREDIT_SLO_SELL (short sell),
CREDIT_BUY_SECU_REPAY (buy to repay securities),
CREDIT_DIRECT_CASH_REPAY (direct cash repayment), etc. |
|
Futures |
FUTURE_BUY_OPEN (open long),
FUTURE_SELL_CLOSE (close long),
FUTURE_SELL_OPEN (open short),
FUTURE_BUY_CLOSE (close short) |
|
Options |
STOCK_OPTION_BUY_OPEN (buy to open),
STOCK_OPTION_SELL_CLOSE (sell to close),
STOCK_OPTION_EXERCISE (exercise), etc. |
|
Price Type |
FIX_PRICE (11, limit),
ANY_PRICE (12, market),
LATEST_PRICE (5, latest price),
MARKET_PEER_PRICE_FIRST (best counterparty price), etc. |
账户类型
CODEBLOCK7
xtdata接口模式
The market data module follows a unified download → retrieve pattern:
- 1. Subscribe (subscribe):
subscribe_quote, subscribe_whole_quote — real-time push - Download (download):
download_history_data, download_financial_data — download from server to local cache (synchronous/blocking) - Retrieve (get):
get_market_data_ex, get_financial_data — read from local cache (fast)
xttrade回调系统
Register an XtQuantTraderCallback subclass to receive real-time push notifications:
| Callback | Data Type | Trigger Event |
|---|
| INLINECODE69 | XtOrder | Order status change |
| INLINECODE70 |
XtTrade | Trade execution |
|
on_stock_position(position) | XtPosition | Position change |
|
on_stock_asset(asset) | XtAsset | Asset change |
|
on_order_error(error) | XtOrderError | Order placement failure |
|
on_cancel_error(error) | XtCancelError | Order cancellation failure |
|
on_disconnected() | — | Connection lost |
|
on_order_stock_async_response(resp) | XtOrderResponse | Async order response |
高级功能
- - Smart Algorithm Trading: Execute algorithmic orders such as VWAP via INLINECODE77
- Securities Lending: Query available securities, apply for lending, manage contracts
- Bank-Securities Transfer: Transfer funds between bank and securities accounts
- CTP Internal Transfer: Transfer funds between futures and options accounts
- Custom Sectors: Create, manage, and query custom stock groups
- Level 2 Data: l2quote, l2order, l2transaction, l2quoteaux, l2orderqueue, l2thousand (1000-level order book), limitupperformance (consecutive limit-up tracking), snapshotindex, hfiopv, fullspeedorderbook
使用技巧
- - miniQMT must be running on Windows — xtquant connects via local TCP.
- INLINECODE78 must be unique per strategy — different strategies need different IDs.
- INLINECODE79 is a one-time connection — it does not auto-reconnect after disconnection; you must call it again manually.
- Always call
subscribe(account) to receive trading push callbacks. - Data is cached locally after download — subsequent reads are extremely fast.
- Use
dividend_type='front' to get forward-adjusted K-line data. - In push callbacks, use async query methods to avoid deadlocks.
- Documentation: http://dict.thinktrader.net/nativeApi/start_now.html
进阶示例
批量下载全市场日K线数据
CODEBLOCK8
实时行情监控 + 条件触发下单
CODEBLOCK9
多股票均线策略
CODEBLOCK10
获取财务数据并筛选股票
CODEBLOCK11
🤖 AI Agent 高阶使用指南
对于 AI Agent,在使用该量化/数据工具时应遵循以下高阶策略和最佳实践,以确保任务的高效完成:
1. 数据校验与错误处理
在获取数据或执行操作后,AI 应当主动检查返回的结果格式是否符合预期,以及是否存在缺失值(NaN)或空数据。
- * 示例策略:在通过 API 获取数据框(DataFrame)后,使用
if df.empty: 进行校验;捕获 Exception 以防网络或接口错误导致进程崩溃。
2. 多步组合分析
AI 经常需要进行宏观经济分析或跨市场对比。应善于将当前接口与其他数据源或工具组合使用。
- * 示例策略:先获取板块或指数的宏观数据,再筛选成分股,最后对具体标的进行深入的财务或技术面分析,形成完整的决策链条。
3. 构建动态监控与日志
对于交易和策略类任务,AI 可以定期拉取数据并建立监控机制。
- * 示例策略:使用循环或定时任务检查特定标的的异动(如涨跌停、放量),并在发现满足条件的信号时输出结构化日志或触发预警。
社区与支持
由 大佬量化 维护 — 量化交易教学与策略研发团队。
微信客服: bossquant1 · Bilibili · 搜索 大佬量化 — 微信公众号 / Bilibili / 抖音
XtQuant(迅投QMT Python SDK)
XtQuant是QMT/miniQMT量化交易平台的Python SDK,由迅投科技(ThinkTrader)开发。它包含两个核心模块:
- - xtdata — 行情数据模块:实时行情、历史K线、Tick数据、Level2数据、财务数据、板块管理
- xttrade — 交易模块:下单、持仓/订单查询、账户管理、融资融券、期货/期权、智能算法
⚠️ 需要在Windows上运行miniQMT或QMT客户端。XtQuant通过本地TCP连接到QMT进程。您需要券商开通QMT/miniQMT权限。
安装
bash
pip install xtquant
也可以从官网下载:http://dict.thinktrader.net/nativeApi/download_xtquant.html
架构概述
您的Python脚本(任意IDE,任意Python版本)
↓ (xtquant SDK, pip install)
├── xtdata → miniQMT(行情数据服务,TCP连接)
└── xttrade → miniQMT(交易服务,TCP连接)
↓
券商交易系统
核心模块参考
| 模块 | 导入方式 | 用途 |
|---|
| xtdata | from xtquant import xtdata | 行情数据:K线、Tick、Level2、财务、板块 |
| xttrader |
from xtquant.xttrader import XtQuantTrader | 交易:下单、查询、回调 |
| xtconstant | from xtquant import xtconstant | 常量:订单类型、价格类型、市场代码 |
| xttype | from xtquant.xttype import StockAccount | 账户类型:STOCK、CREDIT、FUTURE |
快速入门 — 行情数据
python
from xtquant import xtdata
连接到本地miniQMT(默认:localhost)
xtdata.connect()
下载历史K线数据(首次访问前必须下载到本地缓存)
xtdata.download
historydata(000001.SZ, 1d, start
time=20240101, endtime=20240630)
获取本地K线数据(返回以股票代码为键的DataFrame字典)
data = xtdata.get
marketdata_ex(
[], # field_list,空列表表示所有字段
[000001.SZ], # stock_list,股票代码列表
period=1d,
start_time=20240101,
end_time=20240630,
dividend
type=front # 复权类型:none(不复权)、front(前复权)、back(后复权)、frontratio(等比前复权)、back_ratio(等比后复权)
)
print(data[000001.SZ])
实时行情订阅
python
def on_data(datas):
行情数据回调函数,接收推送的实时数据
for stock_code, data in datas.items():
print(stock_code, data)
订阅单只股票的Tick数据
xtdata.subscribe
quote(000001.SZ, period=tick, callback=ondata)
订阅全市场行情推送
xtdata.subscribe
wholequote([SH, SZ], callback=on_data)
xtdata.run() # 阻塞当前线程,持续接收回调数据
财务数据
python
首先下载财务数据到本地缓存
xtdata.download
financialdata([000001.SZ])
然后从本地缓存获取财务数据
data = xtdata.get
financialdata([000001.SZ])
可用的财务报表:Balance(资产负债表)、Income(利润表)、CashFlow(现金流量表)、
PershareIndex(每股指标)、CapitalStructure(资本结构)、TOP10HOLDER(十大股东)、
TOP10FLOWHOLDER(十大流通股东)、SHAREHOLDER(股东人数)
合约信息与板块
python
获取详细的合约信息(名称、涨跌停板、最小变动价位等)
info = xtdata.get
instrumentdetail(000001.SZ)
获取证券类型(股票/指数/基金/债券等)
itype = xtdata.get
instrumenttype(000001.SZ)
获取板块中的股票列表
stocks = xtdata.get
stocklist
insector(沪深A股)
获取交易日列表
days = xtdata.get
tradingdates(SH, start
time=20240101, endtime=20240630)
快速入门 — 交易
python
from xtquant import xtconstant
from xtquant.xttrader import XtQuantTrader, XtQuantTraderCallback
from xtquant.xttype import StockAccount
创建交易器实例(路径指向miniQMT的userdata_mini目录)
path = rD:\国金证券QMT交易端\userdata_mini
session
id = 123456 # 每个策略必须使用唯一的sessionid
xt
trader = XtQuantTrader(path, sessionid)
注册回调类以接收实时推送通知
class MyCallback(XtQuantTraderCallback):
def on_disconnected(self):
print(连接断开)
def on
stockorder(self, order):
print(f订单更新:{order.stock
code} 状态={order.orderstatus})
def on
stocktrade(self, trade):
print(f成交更新:{trade.stock
code} {trade.tradedvolume}@{trade.traded_price})
def on
ordererror(self, order_error):
print(f下单错误:{order
error.errormsg})
def on
orderstock
asyncresponse(self, response):
print(f异步下单响应:order
id={response.orderid})
xttrader.registercallback(MyCallback())
xt_trader.start()
connectresult = xttrader.connect() # 连接成功返回0
创建账户对象并订阅推送
account = StockAccount(your
accountid)
xt_trader.subscribe(account) # 启用该账户的推送通知
下单:限价买入600000.SH,1000股,价格10.5
order
id = xttrader.order_stock(
account, 600000.SH, xtconstant.STOCK_BUY, 1000,
xtconstant.FIX
PRICE, 10.5, strategy1, testorder
)
成功返回order_id > 0,失败返回-1
查询持仓
positions = xt
trader.querystock_positions(account)
for pos in positions:
print(pos.stock
code, pos.volume, pos.canuse
volume, pos.marketvalue)
查询订单
orders = xt
trader.querystock_orders(account)
查询资产
asset = xt
trader.querystock_asset(account)
print(f可用资金:{asset.cash},总资产:{asset.total_asset})
撤单
xt
trader.cancelorder
stock(account, orderid)
阻塞主线程,等待回调
xt
trader.runforever()
股票代码格式
| 市场 | 格式 | 示例 |
|---|
| 上海A股 | XXXXXX.SH | 600000.SH |
| 深圳A股 |
XXXXXX.SZ | 000001.SZ |
| 北京证券交易所 | XXXXXX.BJ | 430047.BJ |
| 上海指数 | XXXXXX.SH | 000001.SH(上证综指) |
| 深圳指数 | XXXXXX.SZ | 399001.SZ(深证成指) |
| 中金所期货 | XXXX.IF | IF2401.IF(沪深300期货) |
| 上期所期货 | XXXX.SF | ag2407.SF(白银期货) |
| 大商所期货 | XXXX.DF | m2405.DF(豆粕期货) |
| 郑商所期货 | XXXX.ZF | CF405.ZF(棉花期货) |
| 能源中心期货 | XXXX.INE | sc2407.INE(原油期货) |
| 上海期权 | XXXXXXXX.SHO | 10004358.SHO |
| 深圳期权 | XXXXXXXX.SZO | 90000001.SZO |
| ETF | XXXXXX.SH/SZ | 510300.SH |
| 可转债 | XXXXXX.SH/SZ | 113050.SH |
数据周期
tick、1m、5m、15m、30m、1h、1d、1w、1mon
支持的资产类型
| 资产 | 行情数据(xtdata) | 交易(xttrade) |
|---|
| A股(沪深) |
✅