【python量化交易】qteasy使用教程02 - 获取和管理金融数据

qteasy教程2 - 获取并管理金融数据

qteasy是一个完全本地化部署和运行的量化交易分析工具包,Github地址在这里,并且可以通过pip安装

$ pip install qteasy

qteasy具备以下功能:

  • 金融数据的获取、清洗、存储以及处理、可视化、使用
  • 量化交易策略的创建,并提供大量内置基本交易策略
  • 向量化的高速交易策略回测及交易结果评价
  • 交易策略参数的优化以及评价
  • 交易策略的部署、实盘运行

通过本系列教程,您将会通过一系列的实际例子,充分了解qteasy的主要功能以及使用方法。

开始前的准备工作

在开始本教程前,请完成以下工作:

  • 完成qteasy的安装并升级到最新版本
  • 注册tushare pro账户并确保有一定的积分(大多数高级数据需要较多积分才能下载)
  • 完成qteasy.cfg文件的配置,将tushare_token写入配置文件
  • 完成mysql数据库的配置,并将数据库配置写入qteasy.cfg·(可选项)
  • 完成ta-lib的安装 (可选项)

上一篇教程中,我介绍了如何新建一个虚拟环境,并在新的虚拟环境中安装并初始化qteasy,如果还没有完成这一步的朋友,请移步前一篇教程完成qteasy的安装和基础配置。

另外,为了方便后续图表等功能的使用,建议使用jupyter notebook来进行开发,您可以在新建的虚拟环境中运行以下命令安装jupyter notebook

pip install notebook

安装完成后,可以使用下面命令启动jupyter notebook

jupyter notebook

启动后,就可以在浏览器中的一个交互式开发环境中运行代码了,如下图所示:

在这里插入图片描述

如果不使用jupyter notebook,也可以使用ipython

pip install ipython

ipython 运行在terminal中,但是对图表的支持没有那么好

获取基础数据以及价格数据

如上一篇教程介绍,刚刚初始化的qteasy是无法调用任何历史数据的,所有历史数据都必须首先下载到本地,保存到一个称为Datasource的数据仓库之后,才能完成后续所有需要数据的工作,例如调用历史数据,进行策略的回测和优化等等。

qteasy需要使用的数据种类很多,所有的数据都是保存在一些预定义的数据表中,Datasource就是一系列数据表的集合。其中最基础的数据表包括:

  • trade_calendar - 交易日历数据,包括不同交易所的开市、闭市日期计划,每年底更新下一年的交易日历
  • stock_basics - 股票基础信息,包括沪深股市所有股票的基本信息,包括代码、名称、全称、上市日期、分类等等基础信息
  • index_basics - 指数基础信息,包括沪深股市所有指数的基本信息,包括代码、名称、全称等等信息

在配置好tushare_token以后,第一次导入qteasy时,如果系统未找到交易日历数据,会显示以下提示信息:

import qteasy as qt
UserWarning: trade calendar is not loaded, some utility functions may not work properly, to download trade calendar, run 
"qt.refill_data_source(tables='trade_calendar')"
  warnings.warn(f'trade calendar is not loaded, some utility functions may not work '

qteasy提供了一个函数get_table_overview()来显示本地存储的数据信息,运行这个函数,可以打印出本地保存的数据表的清单,存储的数据量、占用的磁盘空间大小、以及数据范围等等。

import qteasy as qt
qt.get_table_overivew()
[Out]:
Analyzing local data source tables... depending on size of tables, it may take a few minutes
[########################################]62/62-100.0%  Analyzing completed!or>>>>>ht>or>>
file://csv@qt_root/data/
Following tables contain local data, to view complete list, print returned DataFrame
Empty DataFrame
Columns: [has_data, size, records, min2, max2]
Index: []

如果本地数据源中没有数据,将会显示上面的内容。此时需要下载数据到本地数据源。

下载交易日历和基础数据

我们可以调用refill_data_source函数下载交易日历和基础数据。这个函数是qteasy的标准数据下载接口函数,所有的历史数据类型均可以通过此接口下载。这个函数的基本参数是tables,传入数据表的名称即可下载相应的数据到本地存储了。使用refill_data_source下载交易数据时,qteasy会自动进行数据清洗,排除重复数据,去除错误数据,发生错误自动重试,并将下载的数据合并到本地数据表中。目前qteasy仅支持通过tushare下载金融数据,未来还会增加其他的金融数据接口,丰富用户选择。

要下载前面提到的交易日历、股票和指数的基本信息,只需要运行下面的代码:

qt.refill_data_source(tables='trade_calendar, stock_basic, index_basic')
[out]:
Filling data source file://csv@qt_root/data/ ...
[########################################]9/9-100.0%  <trade_calendar:SSE-XHKG>74804wrtn in ~9't
[########################################]3/3-100.0%  <stock_basic:SSE-BSE>5365wrtn in ~1't
[########################################]7/7-100.0%  <index_basic:SSE-OTH>10365wrtn in ~1't

数据下载过程中会显示一个进度条,下载完成后,再次运行qt.get_table_overview()函数,可以看到数据已经成功下载到本地:

qt.get_table_overivew()
[Out]:
Analyzing local data source tables... depending on size of tables, it may take a few minutes
[########################################]62/62-100.0%  Analyzing completed!or>>>>>ht>or>>
file://csv@qt_root/data/
Following tables contain local data, to view complete list, print returned DataFrame
               Has_data Size_on_disk Record_count Record_start Record_end
table                                                                    
trade_calendar   True       1.9MB         75K       19901012    20241231 
stock_basic      True       355KB          2K           None        None 
index_basic      True       3.4MB         10K           None        None 

可以看到,三张数据表已经被下载到本地数据源,数据源的类型为"file://csv@qt_root/data/"类型(即数据以csv文件形式存储在qt根路径的/data/路径下),包含三张数据表,其中交易日历的范围涵盖到2024年年底。

查看股票和指数的基础数据

上面的基础数据下载好之后,建议重新启动IDE,重新导入qteasy。这时,我们就可以使用qteasy筛选和查找股票/指数了。

查找股票/指数详细信息可以使用get_stock_info()或者get_basic_info()函数,两个函数功能相同,都可以根据输入的证券代码、名称或者关键字查找证券的信息,支持通配符或者模糊查找;如果同一个代码对应不同的qt_code,例如股票000001代表平安银行,对应qt_code: 000001.SZ,而指数000001代表上证指数,qt_code: 000001.SZqteasy会罗列出所有的证券信息:

import qteasy as qt

# 通过完整的qt_code获取信息
qt.get_basic_info('000001.SZ')
[Out]:
found 1 matches, matched codes are {
   
   'E': {
   
   '000001.SZ': '平安银行'}, 'count': 1}
More information for asset type E:
------------------------------------------
ts_code       000001.SZ
name               平安银行
area                 深圳
industry             银行
fullname     平安银行股份有限公司
list_status           L
list_date    1991-04-03
-------------------------------------------

# 如果不知道完整的qt_code,可以通过六位数字证券代码获取所有相关的证券信息,并列出他们的qt_code
qt.get_basic_info('000001')
found 4 matches, matched codes are {
   
   'E': {
   
   '000001.SZ': '平安银行'}, 'IDX': {
   
   '000001.CZC': '农期指数', '000001.SH': '上证指数'}, 'count': 3}
More information for asset type E:
------------------------------------------
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值