https://mp.weixin.qq.com/s/5vn1W-R1ae4KFl2DVBLGVA
全推就主动推送,当行情有变化就会触发回调函数,推送实时数据,可以理解为数据驱动类型,当数据没有变化不推送数据,函数保持一样的数据,可以全推市场数据比如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 df def get_marke""""""def subscribe_whole_quote(self,code_list=['600031.SH'], callback=None): ''' models=qmt_data() func=models.on_data_subscribe_quote models.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数据 推送一分钟数据 源代码全部上传了知识星球可以直接下载
可以加我备注入群,一起研究量化交易
|