最近很多伙伴经常问到使用 QMT时如何获取股票行情数据。无论是量化交易策略的回测验证,还是实时行情的监控分析,精准且高效地获取股票数据都是 QMT 使用者的核心需求。但面对 QMT 丰富的数据接口与多样的功能模块,不少新手感到无从下手,老用户也希望挖掘更便捷、更全面的数据获取方式。接下来,本文将深入拆解 QMT 在股票数据获取方面的实用技巧,从基础数据调取到高级数据处理,为你解锁高效获取数据的 “密钥” 。
包含股票的上市时间、退市时间、代码、名称、是否是ST等。另外,获取合约基础信息数据在每个交易日9点更新。
调用方法:
ContextInfo.get_instrument_detail(stockcode)
注意:stockcode标的名称,必须是 'stock.market' 形式from xtquant import xtdataxtdata.get_stock_list_in_sector(sector_name)
在 QMT 的 gmd 系列函数里,历史行情数据得从电脑本地找,所以想用历史数据的话,得先把数据下载到电脑里。下载方法很简单,要么直接在软件界面上操作,要么用download_history这个函数就能搞定。
软件界面下载:
用函数订阅:
ContextInfo.get_market_data_ex( fields=[], stock_code=[], period='follow', start_time='', end_time='', count=-1, dividend_type='follow', fill_data=True, subscribe=True)
要是需要最新的实时行情数据,那就不用下载了,直接从服务器获取就行,相当于 “现查现用”。
不过有个特别的地方要注意:
如果用xtdata.get_market_data_ex这个函数获取实时数据,必须先手动订阅行情(用subscribe_quote函数),因为这个函数本身没有订阅功能,不提前订阅就拿不到最新数据哦!
另外,如果同时需要历史和实时数据,gmd 系列函数会自动把两部分数据拼在一起,不用自己动手合并,这点还挺方便。
获取行情示例:
# coding:gbkdef init(C): start_date = '20231001'# 格式"YYYYMMDD",开始下载的日期,date = ""时全量下载 end_date = "" period = "1d" need_download = 1 # 取数据是空值时,将need_download赋值为1,确保正确下载了历史数据 code_list = ["000001.SZ", "600519.SH"] # 股票列表 if need_download: # 判断要不要下载数据, gmd系列函数都是从本地读取历史数据,从服务器订阅获取最新数据 my_download(code_list, period, start_date, end_date) ############ 仅获取历史行情 ##################### subscribe = False # 设置订阅参数,使gmd_ex仅返回本地数据 count = -1 # 设置count参数,使gmd_ex返回全部数据 data1 = C.get_market_data_ex([],code_list,period = period, start_time = start_date, end_time = end_date,subscribe = subscribe) ############ 仅获取最新行情 ##################### subscribe = True # 设置订阅参数,使gmd_ex仅返回最新行情 count = 1 # 设置count参数,使gmd_ex仅返回最新行情数据 data2 = C.get_market_data_ex([],code_list,period = period, start_time = start_date, end_time = end_date,subscribe = subscribe, count = 1) # count 设置为1,使返回值只包含最新行情 ############ 获取历史行情+最新行情 ##################### subscribe = True # 设置订阅参数,使gmd_ex仅返回最新行情 count = -1 # 设置count参数,使gmd_ex返回全部数据 data3 = C.get_market_data_ex([],code_list,period = period, start_time = start_date, end_time = end_date,subscribe = subscribe, count = -1) # count 设置为-1,使返回值包含最新行情和历史行情 print(data1[code_list[0]].tail())# 行情数据查看 print(data2[code_list[0]].tail()) print(data3[code_list[0]].tail())def handlebar(C): returndef my_download(stock_list,period,start_date = '', end_date = ''): ''' 用于显示下载进度 ''' if "d" in period: period = "1d" elif "m" in period: if int(period[0]) < 5: period = "1m" else: period = "5m" elif "tick" == period: pass else: raise KeyboardInterrupt("周期传入错误") n = 1 num = len(stock_list) for i in stock_list: print(f"当前正在下载{n}/{num}") download_history_data(i,period,start_date, end_date) n += 1 print("下载任务结束")
仅获取历史行情:
当前正在下载1/2当前正在下载2/2下载任务结束start simulation mode amount close high low open openInterest preClose \stime 20231124 6.914234e+08 10.10 10.13 10.08 10.11 15 10.15 20231127 8.362684e+08 10.01 10.09 9.97 10.09 15 10.10 20231128 7.844058e+08 9.95 10.02 9.95 9.99 15 10.01 20231129 1.438320e+09 9.72 9.97 9.70 9.95 15 9.95 20231130 8.714817e+08 9.68 9.73 9.62 9.69 15 9.72 settelementPrice stime suspendFlag time volume stime 20231124 0.0 20231124 0 1700755200000 684695 20231127 0.0 20231127 0 1701014400000 836188 20231128 0.0 20231128 0 1701100800000 786175 20231129 0.0 20231129 0 1701187200000 1467597 20231130 0.0 20231130 0 1701273600000 901765
仅获取最新行情:
start simulation mode amount close high low open openInterest preClose \stime 20231130 8.714817e+08 9.68 9.73 9.62 9.69 15 9.72 settelementPrice stime suspendFlag time volume stime 20231130 0.0 20231130 0 1701273600000 901765
获取历史行情+最新行情:
start simulation mode amount close high low open openInterest preClose \stime 20231124 6.914234e+08 10.10 10.13 10.08 10.11 15 10.15 20231127 8.362684e+08 10.01 10.09 9.97 10.09 15 10.10 20231128 7.844058e+08 9.95 10.02 9.95 9.99 15 10.01 20231129 1.438320e+09 9.72 9.97 9.70 9.95 15 9.95 20231130 8.714817e+08 9.68 9.73 9.62 9.69 15 9.72 settelementPrice stime suspendFlag time volume stime 20231124 0.0 20231124 0 1700755200000 684695 20231127 0.0 20231127 0 1701014400000 836188 20231128 0.0 20231128 0 1701100800000 786175 20231129 0.0 20231129 0 1701187200000 1467597 20231130 0.0 20231130 0 1701273600000 901765
- 股票无条件万1,根据资金量最低可以做到万0.854
- 极速柜台:普通柜台毫秒级,极速柜台微秒级延时,理论上极速柜台并发处理能力在普通柜台5倍以上。
- VIP席位 :普通席位人数众多,同一价位排单量多,导致无法在理想价位买入。VIP席位人数少,可更加快实现成交。
福利5:量化工具安装使用教程、视频
福利6:极速柜台,量化投资者专用,速度微秒级