QMT Python API
场内基金
获取基金数据
此函数被设计为只支持单一基金查询,用于获取详细的股票信息。该函数可以让您接收关于特定基金的深度信息,包括但不限于其涨跌停价格、上市日期、退市日期以及期权到期日等重要数据。这将为您提供详尽的信息,以便更好地理解并分析股票的历史和现状。
调用方法
# coding=utf-8from xtquant import xtdataxtdata.get_instrument_detail(stock_code)参数
| 字段 | 类型 | 说明 |
|---|---|---|
stock_code | string | 合约代码 |
返回值
- 字典,{ field1 : value1, field2 : value2, ... },找不到指定合约时返回
None
| 字段 | 类型 | 说明 |
|---|---|---|
| ExchangeID | str | 合约市场代码 |
| InstrumentID | str | 合约代码 |
| ProductID | str | 合约的品种ID(期货) |
| ProductName | str | 合约的品种名称(期货) |
| CreateDate | str | 上市日期(期货) |
| OpenDate | str | IPO日期(股票) |
| ExpireDate | int | 退市日或者到期日 |
| PreClose | float | 前收盘价格 |
| SettlementPrice | float | 前结算价格 |
| UpStopPrice | float | 当日涨停价 |
| DownStopPrice | float | 当日跌停价 |
| FloatVolume | float | 流通股本(单位:股) |
| TotalVolume | float | 总股本(单位:股) |
| LongMarginRatio | float | 多头保证金率 |
| ShortMarginRatio | float | 空头保证金率 |
| PriceTick | float | 最小价格变动单位 |
| VolumeMultiple | int | 合约乘数(对期货以外的品种,默认是1) |
| MainContract | int | 主力合约标记,1、2、3分别表示第一主力合约,第二主力合约,第三主力合约 |
| LastVolume | int | 昨日持仓量 |
| InstrumentStatus | int | 合约已停牌日期(停牌第一天值为0,第二天为1,以此类推。注意,正常交易的股票该值也是0)获取股票停牌状态参考get_full_tick openInt字段 |
| IsTrading | bool | 合约是否可交易 |
| IsRecent | bool | 是否是近月合约 |
# coding=utf-8from xtquant import xtdatacode_detail = xtdata.get_instrument_detail('159733.SZ')print(code_detail)ETF申赎清单
提示
- 使用前需要调用
xtdata.download_etf_info()下载数据 - VIP 权限数据
调用方法
from xtquant import xtdata xtdata.get_etf_info() 参数
None
返回值
一个多层嵌套的dict
现金替代标志:
深市ETF的成分股现金替代标记取值范围
- 0 = 禁止现金替代(必须有证券)
- 1 = 可以进行现金替代(先用证券,证券不足时差额部分用现金替代)
- 2 = 必须用现金替代
沪市ETF的成分股现金替代标记取值范围
- 0 = 沪市不可被替代
- 1 = 沪市可以被替代
- 2 = 沪市必须被替代
- 3 = 深市退补现金替代
- 4 = 深市必须现金替代
- 5 = 成份证券退补现金替代
- 6 = 成份证券必须现金替代
- 7 = 港市退补现金替代
- 8 = 港市必须现金替代
是否需要公布IOPV:
- 0: 否
- 1: 是
申购的允许情况:
- 0: 否
- 1: 是
赎回的允许情况:
- 0: 否
- 1: 是
from xtquant import xtdata xtdata.download_etf_info() all_etf_info = xtdata.get_etf_info() print(list(all_etf_info.keys())[:20]) # 打印第一层key target_etf_info = all_etf_info["510050.SH"] print(target_etf_info.keys()) # 打印第二层key data = target_etf_info["成份股信息"] print(data[:10]) # 打印成份股信息 基金份额参考净值
函数是一个特定于Python的内部函数,它旨在获得基金的份额参考净值(IOPV - Indicative Optimized Portfolio Value)。使用此函数,可以轻松获取ETF(交易型开放式指数基金)当前的估算净值,帮助投资者了解基金及其底层资产的实时价值,从而进行更准确的投资决策。
调用方法
get_etf_iopv(stock_code)参数
| 字段 | 类型 | 说明 |
|---|---|---|
stock_code | string | 合约代码 |
返回值
- IOPV, 基金份额参考净值
# coding:gbkdef init(C): pass def handlebar(C): print(get_etf_iopv("510050.SH"))【🔔迅投研专属】基金实时申赎数据
提示
- 通过指定period为
etfstatistics获取该数据 - 该数据为尊享投研端需配合尊享投研端才可获取数据
- 获取时需要先通过subscribe_quote进行订阅
原生python
调用方法
from xtquant import xtdataxtdata.download_history_data(stock, 'etfstatistics', start_time, end_time, incrementally = True)data = xtdata.get_market_data_ex([], stock_list, period = 'etfstatistics', start_time = "", end_time = "")参数 除period参数需指定为 etfstatistics 外,其余参数于 get_market_data_ex 函数一致
返回值
分两种,当使用gmd_ex函数获取时:
- 一个
{stock_code:pd.DataFrame}结构的dict对象,其中pd.DataFrame的结构为:index: 自增序列,int类型值columns: ['time', '申购笔数', '申购数量', '申购金额', '赎回笔数', '赎回数量', '赎回金额']
当使用callback函数时:
- 一个
{stock_code:[{field1:values1,field2:values2,...}]}的dict嵌套对象
示例
import datetimefrom xtquant import xtdatafrom datetime import datetime start_time = datetime.now().strftime("%Y%m%d")end_time = ''print('start_time:', start_time, ' end_time:', end_time)stock_list = ['159001.SZ', '159003.SZ', '159005.SZ', '159150.SZ', '159306.SZ', '159309.SZ', '159502.SZ']for stock in stock_list: '''下载etf实时申赎信息''' xtdata.download_history_data(stock, 'etfstatistics', start_time, end_time, incrementally = True) print('download finished ' + stock) data = xtdata.get_market_data_ex([], stock_list, 'etfstatistics', start_time, end_time, -1)# 打印"159001.SZ"最后5条数据print(data["159001.SZ"].iloc[-5:]) def f(data): print(data) for i in stock_list: xtdata.subscribe_quote(i,period="etfstatistics",callback=f) 获取场内基金tick数据
要获取场内基金的tick数据,您需要先进行数据订阅subscribe_quote以获取最新的tick数据。如果您需要获取历史数据,可以使用download_history_data函数下载相关数据,然后使用get_market_data_ex函数提取所需的信息。这两个函数的组合可以帮助您获取即时和历史的场内基金数据,使您能够对市场情况有更全面、准确的了解,并帮助您做出更明智的投资决策。
调用方法
# coding=utf-8from xtquant import xtdata# 订阅指定合约最新行情xtdata.subscribe_quote(stock_code, period='', start_time='', end_time='', count=0, callback=None)# 下载指定合约历史行情xtdata.download_history_data(stock_code, period, start_time='', end_time='')# 获取指定合约历史行情xtdata.get_market_data_ex(field_list = [], stock_list = [], period = '', start_time = '', end_time = '', count = -1, dividend_type = 'none', fill_data = True)参数
- xtdata.subscribe_quote
| 字段 | 类型 | 说明 |
|---|---|---|
stock_code | str | 股票代码 |
start_time | str | 开始时间格式YYYYMMDD/YYYYMMDDhhmmss |
end_time | str | 结束时间 |
count | int | 数量 -1全部/n: 从结束时间向前数n个 |
period | str | 周期 分笔"tick" 分钟线"1m"/"5m" 日线"1d" |
- xtdata.get_market_data_ex
| 参数名称 | 类型 | 描述 |
|---|---|---|
field_list | list | 表示所有字段。不同的数据周期,取值范围有所不同。 |
stock_list | list | 合约代码列表 |
period | str | 数据周期,默认是当前主图周期。可选值如下: 'tick' (分笔线), '1d' (日线), '1m' (1分钟线), '5m' (5分钟线), '15m' (15分钟线), 'l2quote' (Level2行情快照), 'l2quoteaux' (Level2行情快照补充), 'l2order' (Level2逐笔委托), 'l2transaction' (Level2逐笔成交),'l2transactioncount' (Level2大单统计), 'l2orderqueue' (Level2委买委卖队列) |
start_time | str | 开始时间。为空时默认为最早时间。时间格式为'20201231'或'20201231093000' |
end_time | str | 结束时间。为空时默认为最新时间。时间格式为'20201231'或'20201231235959' |
count | int | 数据最大个数。-1表示不做个数限制 |
dividend_type | str | 复权方式,默认是当前主图复权方式。可选值包括: 'none' (不复权), 'front'(前复权), 'back' (后复权), 'front_ratio' (等比前复权), 'back_ratio' (等比后复权) |
fill_data | bool | 停牌填充方式 |
返回值
- period为
1m5m1dK线周期时- 返回dict { field1 : value1, field2 : value2, ... }
- value1, value2, ... :pd.DataFrame 数据集,index为stock_list,columns为time_list
- 各字段对应的DataFrame维度相同、索引相同
- period为
tick分笔周期时- 返回dict { stock1 : value1, stock2 : value2, ... }
- stock1, stock2, ... :合约代码
- value1, value2, ... :np.ndarray 数据集,按数据时间戳
time增序排列
# coding=utf-8from xtquant import xtdata# 订阅指定合约最新行情xtdata.subscribe_quote('513330.SH', period='tick', start_time='', end_time='20231026150000', count=1, callback=None)# 下载指定合约历史行情xtdata.download_history_data('513330.SH', 'tick', '20231026093000', '20231026150000')# 获取指定合约历史行情tick_data = xtdata.get_market_data_ex(field_list=[], stock_list=['513330.SH'], period='tick', start_time='', end_time='20231026150000', count=10, dividend_type='none', fill_data=True)print(tick_data) 基金列表
函数可以实时获取上市的场内基金、ETF(交易所交易基金)以及LOF(Listed Open-end Fund,列出的开放式基金)的列表。这个功能能帮助投资者了解当前上市并且可交易的基金合约,提供最新的数据支持,从而进行更精准的投资决策。
调用方法
# coding=utf-8from xtquant import xtdataxtdata.get_stock_list_in_sector(sector_name)参数
| 字段 | 类型 | 说明 |
|---|---|---|
sector_name | str | 板块名 |
返回值
- list:内含成份股代码,代码形式为 'stockcode.market',如 ['159659.SZ', '513330.SH']
# coding=utf-8from xtquant import xtdataret_sector_data = get_stock_list_in_sector('沪深基金') [:10]print(ret_sector_data)