📡订阅行情4个
📊获取行情5个
⬇️下载历史4个
📋合约信息2个
🏛️板块信息6个
💰财务数据2个
📋 接口概述 Overview
xtdata 是 QMT 量化交易平台提供的 Python 行情数据模块
- 📈 K线数据(历史+实时,分钟/日/周/月/季/年线)
- 📉 分笔数据(Tick级行情)
- 💰 财务数据(资产负债表、利润表、现金流量表等)
- 🏛️ 板块分类(行业、概念、地区等)
- 📋 合约基础信息(代码、名称、保证金率等)
💡 运行逻辑:xtdata 本质是与 MiniQMT 建立连接,由 MiniQMT 处理数据请求。
使用前需确保 MiniQMT 已有所需数据,不足时用
使用前需确保 MiniQMT 已有所需数据,不足时用
download_xxx 补充。
🏷️ 合约代码格式 stock_code
# 格式:code.market
"000001.SZ" # 深圳股票
"600000.SH" # 上海股票
"000300.SH" # 沪深300指数
"510300.SH" # 沪深300ETF
"AU2506.SGEX" # 期货(上海金)
"100050.SH" # 期权
市场代码:
SZ=深圳 SH=上海
BJ=北交所 CF=中金所
SF=上海期货 DF=大连期货
ZF=郑州期货 SGEX=上海金
⏱️ 周期类型 period
tick分笔
1m1分钟
5m5分钟
15m15分钟
30m30分钟
1h1小时
1d日线
1w周线
1mon月线
1q季度线
1hy半年线
1y年线
🏎️ 投研版特色数据:
warehousereceipt=期货仓单 | futureholderrank=期货席位 | transactioncount1m=逐笔成交统计
🔄 除权方式 dividend_type
none不复权
front前复权
back后复权
front_ratio等比前复权
back_ratio等比后复权
📌 注意:复权方式仅对K线数据有效,对tick等其他周期数据无效
📡 订阅接口 Subscribe
subscribe_quote
订阅
→ int (订阅号)
订阅单股行情数据,数据推送从 callback 返回
| 参数 | 类型 | 说明 |
|---|---|---|
| stock_code | str | 合约代码,如 "000001.SZ" |
| period | str | 周期,默认 "1d" |
| start_time | str | 起始时间,格式 "20200101" 或 "20200101000000" |
| end_time | str | 结束时间 |
| count | int | 数据个数,-1=全部,0=仅订阅实时 |
| callback | func | 回调函数,格式 def on_data(datas): |
示例代码
def on_data(datas):
for stock_code in datas:
print(stock_code, datas[stock_code])
xtdata.subscribe_quote("000001.SZ", period="1d", count=100, callback=on_data)
xtdata.run() # 阻塞线程维持运行
subscribe_whole_quote
订阅
→ int (订阅号)
订阅全推行情数据(市场全部合约切面数据),适合高订阅数场景
| 参数 | 类型 | 说明 |
|---|---|---|
| code_list | list | 市场代码 ["SH", "SZ"] 或合约代码 ["600000.SH", "000001.SZ"] |
| callback | func | 回调函数 |
⚡ 性能提示:单股订阅建议不超过50个,超过建议用全推数据
unsubscribe_quote
→ None
取消订阅行情数据
| 参数 | 类型 | 说明 |
|---|---|---|
| seq | int | 订阅时返回的订阅号 |
run
→ None
阻塞当前线程,维持订阅运行状态,持续处理回调
典型用法
xtdata.subscribe_quote("000001.SZ", callback=on_data)
# ... 其他订阅 ...
xtdata.run() # 放在最后,阻塞维持运行📊 获取行情数据 Get Data
get_market_data
获取
L1
→ dict
从缓存获取行情数据,是主动获取行情的主要接口
| 参数 | 类型 | 说明 |
|---|---|---|
| field_list | list | 数据字段列表,传空则全部字段 |
| stock_list | list | 合约代码列表 |
| period | str | 周期 |
| start_time | str | 起始时间 |
| end_time | str | 结束时间 |
| count | int | 数据个数,-1=全部 |
| dividend_type | str | 除权方式,默认 "none" |
| fill_data | bool | 是否向后填充空缺数据,默认 True |
示例代码
# 获取日线数据
data = xtdata.get_market_data(
stock_list=["000001.SZ", "600000.SH"],
period="1d",
start_time="20240101",
end_time="20241231"
)
# 返回: {'open': DataFrame, 'close': DataFrame, 'high': ..., 'low': ..., 'volume': ...}
# 获取分笔数据
tick = xtdata.get_market_data(stock_list=["000001.SZ"], period="tick")返回值:
K线:dict { field: DataFrame },index=stock_list,columns=time_list
Tick:dict { stock: np.ndarray },按时间戳升序
get_local_data
获取
L1
→ dict
从本地数据文件获取行情数据,用于快速批量获取历史部分的行情数据
| 参数 | 类型 | 说明 |
|---|---|---|
| field_list | list | 数据字段列表,传空则全部 |
| stock_list | list | 合约代码列表 |
| period | str | 周期 |
| start_time | str | 起始时间 |
| end_time | str | 结束时间 |
| count | int | 数据个数,-1=全部 |
| dividend_type | str | 除权方式 |
| fill_data | bool | 是否向后填充空缺数据 |
| data_dir | str | MiniQMT数据路径,默认自动获取 |
📌 注意:仅用于获取level1数据
get_full_tick
获取
→ dict
获取全推数据
| 参数 | 类型 | 说明 |
|---|---|---|
| code_list | list | 市场代码 ["SH", "SZ"] 或合约代码列表 |
示例代码
# 获取全市场分笔数据
data = xtdata.get_full_tick(["SH", "SZ"])
# 获取指定合约
data = xtdata.get_full_tick(["600000.SH", "000001.SZ"])
get_full_kline
获取
L1
→ dict
获取最新交易日K线全推数据,仅支持最新一个交易日,不包含历史值
| 参数 | 类型 | 说明 |
|---|---|---|
| field_list | list | 数据字段列表,传空则全部 |
| stock_list | list | 合约代码列表 |
| period | str | 周期,默认 "1m" |
| start_time | str | 起始时间 |
| end_time | str | 结束时间 |
| count | int | 数据个数,默认1 |
| dividend_type | str | 除权方式,默认 "none" |
| fill_data | bool | 是否填充空缺数据 |
get_divid_factors
获取
→ DataFrame
获取除权数据(分红、拆分等)
| 参数 | 类型 | 说明 |
|---|---|---|
| stock_code | str | 合约代码 |
| start_time | str | 起始时间 |
| end_time | str | 结束时间 |
示例代码
df = xtdata.get_divid_factors("000001.SZ", start_time="20200101")⬇️ 下载历史数据 Download
download_history_data
下载
→ None
补充历史行情数据,同步执行,补充数据完成后返回
| 参数 | 类型 | 说明 |
|---|---|---|
| stock_code | str | 合约代码 |
| period | str | 周期 |
| start_time | str | 起始时间 |
| end_time | str | 结束时间 |
| incrementally | bool/None | 是否增量下载,None时start_time为空则增量 |
示例代码
# 增量下载(从本地最后一条往后下载)
xtdata.download_history_data("000001.SZ", period="1d")
# 指定时间范围下载
xtdata.download_history_data("000001.SZ", period="1d", start_time="20200101", end_time="20241231")
download_history_data2
下载
→ None
补充历史行情数据,批量版本,支持进度回调
| 参数 | 类型 | 说明 |
|---|---|---|
| stock_list | list | 合约列表 |
| period | str | 周期 |
| start_time | str | 起始时间 |
| end_time | str | 结束时间 |
| callback | func | 进度回调,参数 {total, finished, stockcode, message} |
| incrementally | bool/None | 是否增量下载 |
示例代码
def on_progress(data):
print(f"进度: {data['finished']}/{data['total']} - {data['stockcode']}")
xtdata.download_history_data2(
stock_list=["000001.SZ", "600000.SH"],
period="1d",
callback=on_progress
)
download_sector_data
下载
→ None
下载板块分类信息,同步执行,下载完成后返回
📌 提示:板块分类信息更新频率低,建议按周或按日定期下载更新即可
💰 财务数据 Financial
get_financial_data
财务
→ dict
获取财务数据
| 参数 | 类型 | 说明 |
|---|---|---|
| stock_list | list | 合约代码列表 |
| table_list | list | 财务表名列表 |
| start_time | str | 起始时间 |
| end_time | str | 结束时间 |
| report_type | str | 报表筛选方式:report_time(截止日期) / announce_time(披露日期) |
table_list 可选值:
Balance=资产负债表 |
Income=利润表 |
CashFlow=现金流量表 |
Capital=股本表 |
Holdernum=股东数 |
Top10holder=十大股东 |
Top10flowholder=十大流通股东 |
Pershareindex=每股指标
示例代码
data = xtdata.get_financial_data(
stock_list=["000001.SZ"],
table_list=["Balance", "Income"],
start_time="20200101",
end_time="20241231"
)
# 返回: { stock_code: { "Balance": DataFrame, "Income": DataFrame, ... } }
download_financial_data2
下载
→ None
下载财务数据,支持进度回调
| 参数 | 类型 | 说明 |
|---|---|---|
| stock_list | list | 合约列表 |
| table_list | list | 财务表名列表 |
| start_time | str | 起始时间(按披露日期筛选) |
| end_time | str | 结束时间 |
| callback | func | 进度回调函数 |
📋 合约信息 Instrument
get_instrument_detail
信息
→ dict
获取合约基础信息,可用于检查合约代码是否正确
| 参数 | 类型 | 说明 |
|---|---|---|
| stock_code | str | 合约代码 |
| iscomplete | bool | 是否获取全部字段,默认False |
返回字段(iscomplete=False)
{
"ExchangeID": "SZ", # 交易所代码
"InstrumentID": "000001", # 合约代码
"InstrumentName": "平安银行", # 合约名称
"ProductID": "", # 品种ID(期货)
"ProductName": "", # 品种名称(期货)
"ExpireDate": 0, # 退市日/到期日
"UpStopPrice": 0.0, # 涨停价
"DownStopPrice": 0.0, # 跌停价
"OpenInterestMultiple": 0, # 交割月持仓倍数
"LongMarginRatio": 0.0, # 多头保证金率
"ShortMarginRatio": 0.0, # 空头保证金率
"PriceTick": 0.01, # 最小价格变动单位
"VolumeMultiple": 1, # 合约乘数
"MainContract": 0, # 主力合约标记 1/2/3
"IsTrading": True, # 是否可交易
"IsRecent": True, # 是否近月合约
}示例代码
info = xtdata.get_instrument_detail("000001.SZ")
print(info["InstrumentName"]) # 平安银行
get_instrument_type
信息
→ dict
获取合约类型
| 参数 | 类型 | 说明 |
|---|---|---|
| stock_code | str | 合约代码 |
返回值:
index: True=指数 | stock: True=股票 | fund: True=基金 | etf: True=ETF
示例代码
xtdata.get_instrument_type("000001.SZ")
# {'index': False, 'stock': True, 'fund': False, 'etf': False}📅 交易日历 Calendar
get_trading_dates
日历
→ list (时间戳)
获取交易日列表
| 参数 | 类型 | 说明 |
|---|---|---|
| market | str | 市场代码,如 "SZ", "SH" |
| start_time | str | 起始时间 |
| end_time | str | 结束时间 |
| count | int | 数据个数,-1=全部 |
get_trading_calendar
日历
→ list (8位日期字符串)
获取指定市场交易日历
| 参数 | 类型 | 说明 |
|---|---|---|
| market | str | 市场代码 |
| start_time | str | 起始时间,8位字符串,为空表示市场首个交易日 |
| end_time | str | 结束时间,8位字符串,为空表示当前时间 |
📌 提示:结束时间可以填写未来时间,获取未来交易日(需要下载节假日列表)
get_holidays
日历
→ list (8位日期字符串)
获取截止到当年的节假日日期
🏛️ 板块信息 Sector
get_sector_list
板块
→ list
获取板块列表
示例代码
sectors = xtdata.get_sector_list()
print(sectors[:5])
# ['地域板块', '行业板块', '概念板块', '上证A股', '深证A股', ...]
get_stock_list_in_sector
板块
→ list
获取板块成分股列表
| 参数 | 类型 | 说明 |
|---|---|---|
| sector_name | str | 板块名称,如 "上证A股"、"行业板块"、"华为概念" |
示例代码
# 获取所有A股
stocks = xtdata.get_stock_list_in_sector("上证A股")
# 获取行业板块
industry = xtdata.get_stock_list_in_sector("行业板块")
# 获取概念板块
concept = xtdata.get_stock_list_in_sector("华为概念")
自定义板块操作
板块
create_sector(parent_node, sector_name, overwrite)
创建板块,parent_node为空表示"我的"
add_sector(sector_name, stock_list)
添加自定义板块
remove_stock_from_sector(sector_name, stock_list)
移除板块成分股
remove_sector(sector_name)
移除自定义板块
📌 其他接口 ETF/CB/IPO
get_etf_info
ETF
→ dict
获取ETF申赎清单信息(需先调用 download_etf_info() 下载)
get_cb_info
可转债
→ dict
获取可转债基础信息(需先调用 download_cb_data() 下载)
| 参数 | 类型 | 说明 |
|---|---|---|
| stockcode | str | 合约代码,如 "600000.SH" |
get_ipo_info
IPO
→ list[dict]
获取新股申购信息
| 参数 | 类型 | 说明 |
|---|---|---|
| start_time | str | 开始日期,如 "20230327" |
| end_time | str | 结束日期 |
返回字段:
securityCode-证券代码 | codeName-代码简称 | market-所属市场
actIssueQty-发行总量(股) | onlineIssueQty-网上发行量 | publishPrice-发行价格
isProfit-是否盈利 | afterPE-发行后市盈率
🧮 公式/模型接口 Formula
subscribe_formula
订阅
→ int
订阅VBA模型运行结果,需连接投研端使用
📌 注意:使用该函数时需要补充本地K线或分笔数据
call_formula
调用
→ dict
获取VBA模型运行结果
| 参数 | 类型 | 说明 |
|---|---|---|
| formula_name | str | 模型名称 |
| stock_code | str | 模型主图代码,如 "000300.SH" |
| period | str | K线周期 |
| start_time | str | 起始时间,形如 "20200101" |
| end_time | str | 结束时间 |
| count | int | 向前count根bar,-1=全部 |
📌 注意:使用该函数时需要补充本地K线或分笔数据