【QMT之xtquant】活用xtdata,激活download_history_data2批量高效获取行情数据


前言

QMT包含了XtQuant,可以方便的获取行情数据,最近碰到一些小问题,自己也琢磨了下,顺便分享出来。


提示:以下是本篇文章正文内容,下面案例可供参考

一、XtQuant是什么?

XtQuant能提供哪些服务
XtQuant是基于迅投MiniQMT衍生出来的一套完善的Python策略运行框架,对外以Python库的形式提供策略交易所需要的行情和交易相关的API接口。

XtQuant运行依赖环境
XtQuant目前提供的库包括64位Python3.6----3.11版本,不同版本的python导入时会自动切换。 在运行使用XtQuant的程序前需要先启动MiniQMT客户端。

二、如何活动XtQuant?

1.引入库

方法1. XtQuant 默认安装在QMT安装目录下bin.x64\Lib\site-packages,如笔者安装在c:\gszqqmt\,则
将如下语句插入需要引用XtQuant的python文件里,就可以随意调用了:

sys.path.append(r'c:\gszqqmt\bin.x64\Lib\site-packages')

方法2. 将bin.x64\Lib\site-packages\xtquant目录复制到python安装环境Lib\site-packages\目录下,即可直接使用本地Python环境直接调用XtQuant。缺点是每次QMT更新XtQuant,需要手动再复制一次。

2.批量下载数据

2.1 找到xtquant目录下xtdata.py中__all__,在末尾增加如下一行:

    , 'download_history_data2'

即可通过调用download_history_data2批量下载数据,具体步骤如下。修改后的结果如下:

__all__ = [
    'subscribe_quote'
    , 'subscribe_whole_quote'
    , 'unsubscribe_quote'
    , 'run'
    , 'get_market_data'
    , 'get_local_data'
    , 'get_full_tick'
    , 'get_divid_factors'
    , 'get_l2_quote'
    , 'get_l2_order'
    , 'get_l2_transaction'
    , 'download_history_data'
    , 'get_financial_data'
    , 'download_financial_data'
    , 'get_instrument_detail'
    , 'get_instrument_type'
    , 'get_trading_dates'
    , 'get_sector_list'
    , 'get_stock_list_in_sector'
    , 'download_sector_data'
    , 'add_sector'
    , 'remove_sector'
    , 'get_index_weight'
    , 'download_index_weight'
    , 'get_holidays'
    , 'get_trading_calendar'
    , 'get_trade_times'
    #, 'get_industry'
    #, 'get_etf_info'
    #, 'get_main_contract'
    #, 'download_history_contracts'
    , 'download_cb_data'
    , 'get_cb_info'
    # 增加如下一行,即可通过download_history_data2下载数据
    , 'download_history_data2'
]

2.2 批量下载多只股票代码行情数据(源代码)

修改完以上后,将如下代码保存到任意位置,运行即可。注意将c:\gszqqmt替换为自己的QMT安装路径。

#coding=utf-8

import pandas as pd
import sys
sys.path.append(r'c:\gszqqmt\bin.x64\Lib\site-packages')

# 加载xtquant库
from xtquant.xtdata import *

def on_progress(data):
    '''补充历史数据回调函数'''
    print(data) 
    
if __name__ == "__main__":
    print("xtdata demo")
    # 根据stock_list下载数据
    stock_list = ['603909.SH','300450.SZ','600740.SH','002362.SZ','600750.SH']
    field_list = ['time','open','close','low','high','volume'] # 提取的字段
    download_history_data2(stock_list, period='1d', start_time='20230201', end_time='20230223', callback=on_progress)
    print('download_history_data2 finished')
    
    # 获取股票close数据
    ret = get_market_data(field_list, stock_list, period='1d', start_time='', end_time='', count=5, dividend_type='front', fill_data=True)
    print(ret['close'].T)

结果如下:

xtdata demo
{'finished': 1, 'total': 5, 'stockcode': '603909.SH', 'message': ''}
{'finished': 2, 'total': 5, 'stockcode': '600740.SH', 'message': ''}
{'finished': 3, 'total': 5, 'stockcode': '600750.SH', 'message': ''}
{'finished': 4, 'total': 5, 'stockcode': '300450.SZ', 'message': ''}
{'finished': 5, 'total': 5, 'stockcode': '002362.SZ', 'message': ''}
download_history_data2 finished
          603909.SH  300450.SZ  600740.SH  002362.SZ  600750.SH
20230217      12.99      45.08       5.62      37.80      15.66
20230220      13.03      45.56       5.73      38.90      16.13
20230221      13.19      45.40       5.84      36.95      16.14
20230222      13.04      44.85       5.90      37.99      16.25
20230223      13.03      44.45       5.89      34.19      16.36

总结

xtquant是qmtmini的灵魂,这篇文章只是抛砖引玉,后面还有很多用法,以后抽空再分享。感兴趣的童鞋可在评论区留言。

  • 9
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT里的交易员

分享是一种快乐,打赏是一种肯定

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值