文章链接 qmt量化教程4----订阅全推数据 (qq.com)
上次写了订阅单股数据的教程 量化教程3---miniqmt当作第三方库设置,提供源代码
全推就主动推送,当行情有变化就会触发回调函数,推送实时数据,可以理解为数据驱动类型,当数据没有变化不推送数据,函数保持一样的数据,可以全推市场数据比如SH,SZ,期货市场等
1打开qmt,登录选择极简模式

原始的qmt全推送函数代码

# coding:utf-8import timefrom xtquant import xtdatacode='600031.SH'#订阅最新行情def callback_func(data):print('回调触发')stock_code=list(data.keys())df=xtdata.get_full_tick(code_list=stock_code)print(df)xtdata.subscribe_quote(stock_code=code,start_time='20240101',end_time='20240525',period='1m')hist=xtdata.get_market_data(stock_list=[code],start_time='20240101',end_time='20240525',period='1m')print(hist)xtdata.subscribe_whole_quote(code_list=[code],callback=callback_func)#死循环 阻塞主线程退出xtdata.run()
运行的效果

推送一分钟的数据先订阅

小果框架利用类开发使用非常方便

小果框架订阅全推数据的代码
# coding:utf-8import timefrom qmt_trader.qmt_data import qmt_datadata=qmt_data()code='600031.SH'#订阅最新行情def callback_func(datas):print('回调触发')stock_code=list(datas.keys())df=data.get_full_tick(code_list=stock_code)print(df)data.subscribe_quote(stock_code=code,start_time='20240101',end_time='20240525',period='1m')hist=data.get_market_data(stock_list=[code],start_time='20240101',end_time='20240525',period='1m')print(hist)data.subscribe_whole_quote(code_list=[code],callback=callback_func)#死循环 阻塞主线程退出data.run()#函数的具体代码"""def get_full_tick(self,code_list=['600031.SH','600111.SH']):'''例子models=qmt_data()stock_list=['600031.SH','600111.SH']df=models.get_full_tick()print(df)释义获取全推数据参数code_list - 代码列表,支持传入市场代码或合约代码两种方式传入市场代码代表订阅全市场,示例:['SH', 'SZ']传入合约代码代表订阅指定的合约,示例:['600000.SH', '000001.SZ']返回dict 数据集 { stock1 : data1, stock2 : data2, ... }备注无获取除权数据'''df=self.xtdata.get_full_tick(code_list=code_list)return df""""""def get_market_data(self,field_list=[], stock_list=['600031.SH','600111.SH'],period='1d', start_time='20210101', end_time='20240419',count=-100, dividend_type='none', fill_data=True):'''数据需要先订阅#启动模型models=qmt_data()models.subscribe_quote(stock_code='600031.SH')df=models.get_market_data(field_list=[], stock_list=['600031.SH','600111.SH'],period='1d', start_time='20210101', end_time='20240419',count=-100, dividend_type='none', fill_data=True)print(df)释义从缓存获取行情数据,是主动获取行情的主要接口参数field_list - list 数据字段列表,传空则为全部字段stock_list - list 合约代码列表period - string 周期start_time - string 起始时间end_time - string 结束时间count - int 数据个数默认参数,大于等于0时,若指定了start_time,end_time,此时以end_time为基准向前取count条;若start_time,end_time缺省,默认取本地数据最新的count条数据;若start_time,end_time,count都缺省时,默认取本地全部数据dividend_type - string 除权方式fill_data - bool 是否向后填充空缺数据返回period为1m 5m 1d等K线周期时返回dict { field1 : value1, field2 : value2, ... }field1, field2, ... :数据字段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增序排列备注获取lv2数据时需要数据终端有lv2数据权限时间范围为闭区间'''df=self.xtdata.get_market_data(field_list, stock_list, period,start_time, end_time, count, dividend_type, fill_data)return dfdef get_marke""""""def subscribe_whole_quote(self,code_list=['600031.SH'], callback=None):'''models=qmt_data()func=models.on_data_subscribe_quotemodels.subscribe_whole_quote(code_list=['600031.SH','600111.SH'],callback=func)models.run()释义订阅全推行情数据,返回订阅号数据推送从callback返回,数据类型为分笔数据参数code_list - 代码列表,支持传入市场代码或合约代码两种方式传入市场代码代表订阅全市场,示例:['SH', 'SZ']传入合约代码代表订阅指定的合约,示例:['600000.SH', '000001.SZ']callback - 数据推送回调回调定义形式为on_data(datas),回调参数datas格式为 { stock1 : data1, stock2 : data2, ... }'''stats=self.xtdata.subscribe_whole_quote(code_list=code_list,callback=callback)if stats !=-1:print('{}订阅成功'.format(code_list))else:print('{}订阅失败'.format(code_list))return stats"""
推送ticck数据

推送一分钟数据

源代码全部上传了知识星球可以直接下载