文章目录

  • 前言
  • 一、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-8import pandas as pdimport syssys.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 finished603909.SH300450.SZ600740.SH002362.SZ600750.SH2023021712.9945.08 5.6237.8015.662023022013.0345.56 5.7338.9016.132023022113.1945.40 5.8436.9516.142023022213.0444.85 5.9037.9916.252023022313.0344.45 5.8934.1916.36

总结

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