返回列表 发布新帖

qmt量化教程4----订阅全推数据

2227 0
发表于 2024-5-25 22:54:58 | 显示全部楼层 阅读模式
https://mp.weixin.qq.com/s/5vn1W-R1ae4KFl2DVBLGVA
上次写了订阅单股数据的教程 [color=var(--weui-LINK)]量化教程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 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数据
推送一分钟数据
源代码全部上传了知识星球可以直接下载
可以加我备注入群,一起研究量化交易


回复

您需要登录后才可以回帖 登录 | 立即注册

客服专线

400-080-8112

用思考的速度交易,用真诚的态度合作,我们是认真的!
  • 关注公众号
  • 添加微信客服
Copyright © 2001-2025 迅投QMT社区 版权所有 All Rights Reserved. 京ICP备2025122616号-3
关灯 快速发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表