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

文章目录

  • 前言
  • 一、XtQuant是什么?
  • 二、如何活动XtQuant?
    • 1.引入库
    • 2.批量下载数据
  • 总结


前言

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

你可能感兴趣的:(量化交易,python,开发语言)