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

### 配置VSCode通过SSH免密钥连接至远程服务器 为了实现VSCode通过SSH免密钥连接到远程服务器,需完成几个关键步骤。在Windows环境中,确保已安装OpenSSH[^2];对于Mac系统,则主要关注于VSCode插件配置以及SSH密钥管理。 #### 安装并配置Remote-SSH插件 在Visual Studio Code中安装名为“Remote - SSH”的扩展插件后,左侧状态栏会出现一个绿色图标表示该插件已经准备好使用。此操作适用于任何操作系统平台上的VSCode版本。 #### 创建或获取现有的SSH私钥与公钥对 如果尚未拥有SSH密钥对,在本地机器(无论是Windows还是Mac)打开命令提示符或者终端执行如下命令来生成一对新的RSA类型的SSH密钥: ```bash ssh-keygen -t rsa -b 4096 -C "your_email@example.com" ``` 上述命令将会引导用户指定保存位置,默认情况下会在`~/.ssh/id_rsa`及其对应的`.pub`文件内存储私钥和公钥[^4]。 #### 将公钥添加到远程主机 接着要把新生成的公钥(`id_rsa.pub`)内容追加进目标Linux服务器上的`~/.ssh/authorized_keys`文件之中。可以通过下面的方式快速完成这一步骤: ```bash cat ~/.ssh/id_rsa.pub | ssh user@hostname 'umask 0077; mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys' ``` 这里假设读者已经在本地计算机上设置了正确的SSH代理以便能够顺利地向远端发送指令。 #### 编辑VSCode的SSH Configurations 最后回到VSCode内部调整其用于描述各个远程节点信息的配置文档——即位于用户主目录下的`.ssh/config`文件。按照以下模板填写相应字段以匹配个人实际情况: ```plaintext Host myserveralias HostName your.server.ip.or.domain.name User username_on_remote_machine IdentityFile ~/.ssh/id_rsa ``` 注意替换其中占位符部分为实际值,并且确认路径指向的是之前创建好的私钥文件所在之处[^1]。 一旦完成了以上全部准备工作,就可以尝试利用VSCode内置的功能去建立同那台特定命名过的远程主机之间的安全连接了。此时应该不再需要每次输入密码就能顺利完成认证流程[^3]。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

IT里的交易员

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

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

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

打赏作者

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

抵扣说明:

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

余额充值