【python量化交易】qteasy使用教程01 - 安装方法及初始化配置

qteasy教程1 - 安装方法及初始化配置

  • `qteasy`教程1 - 安装方法及初始配置
    • `qteasy`安装前的准备工作
      • 1, 创建安装环境
      • 2,安装`MySQL`数据库 (可选)
        • 安装`pymysql`
      • 3,创建`tushare`账号并获取API token (可选)
      • 4,安装`TA-lib` (可选)
          • Windows
          • Mac OS
          • Linux
    • 第一次导入`qteasy`
      • 1,配置`tushare`的API token
      • 2,配置本地数据源
    • 开始下载第一批金融数据

qteasy教程1 - 安装方法及初始配置

qteasy是一个完全本地化部署和运行的量化交易分析工具包,具备以下功能:

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

qteasy使用python创建,使用向量化回测及交易模拟引擎实现了策略的高速回测,同时又兼顾策略框架的灵活性,使得用户可以根据需要灵活定制各种高级策。qteasy提供了多种策略参数优化算法,帮助优化及评价交易策略,同时提供了实时运行模式,使交易策略可以直接部署使用。

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

qteasy安装前的准备工作

1, 创建安装环境

qteasy可以通过pip来安装,由于依赖包较多,为了避免各依赖包与现有环境中的包产生冲突,建议创建一个独立的python环境来安装qteasy

创建虚拟环境的方法有很多种,这里介绍两种方法,分别是使用venvconda

要使用venv创建虚拟环境,macOS和Linux用户可以打开终端,进入您需要创建环境的路径,输入以下命令,在当前目录下创建一个名为qteasy-env的虚拟环境,并激活环境:

python -m venv qteasy-env  
source qteasy-env/bin/activate

Windows用户可以打开命令提示符,进入您需要创建环境的文件夹,输入以下命令,创建虚拟环境并激活:

py -m venv qteasy-env  
.venv\Scripts\activate

要使用conda创建虚拟环境,可以打开终端,输入以下命令,创建一个名为qteasy-env的虚拟环境,并激活环境:

conda create -n qteasy-env python=3.8
conda activate qteasy-env

在激活的虚拟环境中,使用以下命令安装qteasy:

pip install qteasy

2,安装MySQL数据库 (可选)

qteasy可以管理大量的金融数据。qteasy的工作方式是将所有的金融数据下载到本地,清洗后存储到事先定义好的数据表中,在需要时(生成K线图、交易信号生成、模拟交易回测、交易结果评价等所有环节都需要用到金融数据)从本地数据源直接读取所需的数据。因此,必须在本地设置一个数据管理环境。

qteasy同时支持数据库及文件系统作为数据管理环境,考虑到金融数据量,强烈推荐使用数据库作为本地数据源。qteasy支持的本地数据源包括:

  • csv 文件 默认数据源。占用空间大,但是可以使用Excel读取本地数据,数据量大时速度慢
  • mysql 数据库,强烈推荐使用mysql数据库并确保磁盘有至少1TB的存储空间,速度快
  • hdf5 文件 占用空间大,数据量大时速度慢
  • feather 文件 占用空间较小,数据量大时速度慢

为了实现最佳的数据存储效率,建议使用mysql数据库作为本地数据源。

如果需要使用数据库作为本地数据源,参照以下方法安装MySQL数据库,如果使用文件作为本地数据源,可以跳过这一步。

MySQL的官网可以直接找到社区开源版本下载:
网站提供了dmg和tar等多种不同的安装方式,而且还有针对M1芯片的版本可选:

png

安装完成后,创建用户,设置访问方式并设置密码:

# 创建新的用户,并允许客户通过localhost连接
mysql> CREATE USER '用户名'@'localhost' IDENTIFIED BY '初始密码';
Query OK, 0 rows affected (0.46 sec)

# 设置用户的权限
mysql> GRANT ALL ON *.* TO '用户名'@'localhost';
Query OK, 0 rows affected (0.06 sec)

# 创建新的用户,并允许客户通过远程连接
mysql> CREATE USER '用户名'@'%' IDENTIFIED BY '初始密码';
Query OK, 0 rows affected (0.46 sec)

# 设置用户的权限
mysql> GRANT ALL ON *.* TO '用户名'@'%';
Query OK, 0 rows affected (0.06 sec)

数据库设置好之后,记录您的数据库登录信息、在qteasy的设置中将会用到。

安装pymysql
pip install pymysql

3,创建tushare账号并获取API token (可选)

qteasy目前主要依赖tushare来获取金融数据,系统内建了比较完整的API与tushare接口。鉴于tushare的接口均有权限或积分要求,建议用户提前准备好相应的tushare积分,并开通相应权限。

在这里插入图片描述

申请tushare积分和权限的方法请参见tushare pro主页:

在这里插入图片描述

如果不创建tushare账号,qteasy仍然可以获得一些数据,但是数据的种类非常有限,访问频率和次数也受到限制,很多qteasy功能的使用将会受到限制,如下图所示:

tushare数据详情页2
未来计划增加其他金融数据提供商的API,以扩大数据来源。

4,安装TA-lib (可选)

qteasy内置了大量的技术指标,这些技术指标的计算依赖于TA-lib,如果需要使用qteasy内置的所有技术指标,需要安装TA-lib
如果跳过这一步,将只能使用以下少数几种内置策略。下面简单介绍TA-lib的安装方法:

完整的TA-Lib包无法通过pip安装,因为通过pip install ta-lib安装的只是TA-Lib包的一个python wrapper, 用户必须首先安装C语言的TA-Lib才能在python中使用它。

有些用户可以用下面的方法安装C语言的TA-Lib包:
conda install -c conda-forge libta-lib

在不同的系统下安装C语言的TA-Lib包的方法:

Windows
  • 下载 ta-lib-0.4.0-msvc.zip 并解压至 C:\ta-lib.
  • 下载并安装 Visual Studio Community (2015 或更新版本), 选择 [Visual C++] 功能
  • Windows 开始菜单, 启动 [VS2015 x64 Native Tools Command Prompt]
  • 移动至 C:\ta-lib\c\make\cdr\win32\msvc
  • nmake
Mac OS

使用brew安装ta-lib

$ brew install ta-lib

如果使用Apple Silicon芯片,可以使用:

$ arch -arm64 brew install ta-lib
Linux

下载 ta-lib-0.4.0-src.tar.gz ,然后:

$ tar -xzf ta-lib-0.4.0-src.tar.gz
$ cd ta-lib/
$ ./configure --prefix=/usr
$ make
$ sudo make install

安装完成C语言TA-Lib后,可以安装TA-Libpython wrapper

pip install TA-Lib

更完整的TA-Lib的安装方法请参考这里

第一次导入qteasy

当qteasy的所有依赖包正确安装后,就可以在IDE中导入qteasy了。

import qteasy as qt
print(qt.__version__)

第一次导入qteasy时会自动初始化,初始化过程会创建一个qteasy.cnf文件,这个文件用于存储qteasy的环境配置变量,用户可以通过修改这个文件来修改qteasy的环境配置变量。

用户可以将一些关键配置信息存放在qteasy.cfg文件中,这样qteasy在导入时会自动读取这些配置信息。

用户可以在资源管理器、访达或者终端中找到qteasy的根目录,然后打开qteasy.cfg文件,修改其中的内容。

在qteasy中可以通过qt.QT_ROOT_PATH查看qteasy的根目录

import qteasy as qt
print(qt.QT_ROOT_PATH)

第一次初始化后的qteasy.cnf文件内容如下:

# qteasy configuration file
# following configurations will be loaded when initialize qteasy

# example:
# local_data_source = database

用户可以直接在文件中添加配置信息,保存文件后重新导入qteasy即可使配置生效了,例如:

local_data_source = database

以下几个配置信息是用户在使用qteasy前非常有必要配置的:

1,配置tushare的API token

注意tushare是一个收费的数据服务,用户需要获取积分,积分越多,获取的数据种类越多,权限也越大,如果不配置tushare token,将无法正常使用tushare的数据服务。

如果您按照教程前一节的内容创建了tushare账号并获取了token,可以将token写入qteasy.cnf文件中,这样在导入qteasy时就会自动读取这个token。

qteasy.cnf文件中添加以下内容:

tushare_token = 你的tushare token

2,配置本地数据源

默认情况下,qteasy使用csv文件保存本地数据,速度较慢而且占用空间较大。为了更好地使用qteasy,用户还应该完成本地数据源的基本配置。

如果您按照教程前一节的内容创建了mysql数据库,可以将数据库的配置信息写入qteasy.cnf文件中,这样qteasy就会连接到您指定的数据库,将金融数据存储到数据库中。

qteasy.cnf文件中添加以下内容:

local_data_source = database
database_host = <你的数据库主机名,如local_host>
database_port = <你的数据库端口,如3306>
database_user = <你的数据库用户名>
database_password = <你的数据库连接密码>
database_name = <保存金融数据的数据库名,如qt_base>

如果不做上述配置,qteasy会使用默认的csv文件作为本地数据源。

开始下载第一批金融数据

完成上述配置以后,保存并关闭qteasy.cfg文件,恭喜你,qteasy已经安装并配置好了,现在可以开始使用qteasy了。

首先,我们需要下载一些金融数据,交易策略的回测、优化、评价等所有功能都需要用到金融数据。
在这里,我们可以先下载一些股票数据,以便后续的教程中使用。

qt.refill_data_source是一个通用的数据下载函数,只要你的tushare积分足够,可以下载股票、期货、指数、基金等金融数据,也可以下载宏观经济、财务报表、财务指标、公司基本信息等非交易数据。使用这个函数,您可以批量下载数据到本地,保存前会进行数据去重和清洗、确保不会重复保存,另外,使用多线程并行下载,提供下载进度条,特别适合一次性下载大量历史数据保存到本地,也适合定期运行,定期补充增量数据,例如每月或每周补充下载本月或本周的所有数据。

import qteasy as qt

# 下载股票数据 (从2023年1月1日到2023年12月31日之间的所有股票数据)
qt.refill_data_source(tables='stock_daily', start_date='20230101', end_date='20231231')

Filling data source file://csv@qt_root/data/ ...
[########################################]9/9-100.0%  <trade_calendar:SSE-XHKG>74804wrtn in ~9't
[########################################]7/7-100.0%  <stock_basic:SH-BJ>10365wrtn in ~1't
[########################################]272/272-100.0%  <stock_daily:20230101-20231231>959278623wrtn in ~2H

qteasy中,所有数据都保存在特定的数据表中,而且每一种数据都有其唯一的数据ID,例如’pe’表示市盈率,open表示开盘价,等等;通过数据ID,用户可以在qteasy中随时获取所需的数据——只要数据已经下载到本地。

同时,数据ID也是qteasy中交易策略的核心,用户可以通过数据ID在交易策略中"订阅"所需要的数据类型,并根据这些数据生成交易信号(关于交易信号和交易策略,请参见教程第四章)。

根据您的网络环境和数据量大小,下载数据的时间可能会有所不同,下载完成后,2023年内的所有股票数据就可以直接获取了。

要获取历史数据,可以使用get_history_data函数,在参数中指定数据类型、股票代码、开始日期和结束日期,
下面的代码可以获取2023年1月1日到3月1日的股票000001.SZ的开盘价、最高价、最低价、收盘价、成交量、成交额等数据:

import qteasy as qt
qt.get_history_data('open, high, low, close, vol', shares='000001.SZ', start='20230101', end='20230301')

{'000001.SZ':              open   high    low  close         vol
2023-01-04  13.71  14.42  13.63  14.32  2189682.53
2023-01-05  14.40  14.74  14.37  14.48  1665425.18
2023-01-06  14.50  14.72  14.48  14.62  1195744.71
...
2023-02-27  13.75  13.88  13.68  13.69   621461.93
2023-02-28  13.75  13.85  13.61  13.78   607935.92
2023-03-01  13.80  14.19  13.74  14.17  1223451.78}

至此,如果您看到上面的数据,表明qteasy的安装和初始化工作已经完成,您已经可以开始使用qteasy了。

在下一章节中,我们将会介绍qteasy的基本数据类型,以及如何使用qteasy来获取并管理金融数据。

关于qteasy的更多介绍,请参见qteasy文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/378984.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[VulnHub靶机渗透] dpwwn: 1

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【python】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收藏…

嵌入式系统中的故障容错和恢复机制有哪些常用的方法和技术?

嵌入式系统是一种在特定应用领域内运行的计算机系统&#xff0c;其对系统可靠性和稳定性有着较高的要求。在嵌入式系统中&#xff0c;故障容错和恢复机制是至关重要的&#xff0c;因为它们能够确保系统在面临故障和异常情况时能够继续正常工作或者快速恢复正常状态。本文将介绍…

单片机学习笔记---DS1302实时时钟工作原理

目录 DS1302介绍 学会读芯片手册&#xff08;DS1302芯片手册&#xff09; 封装 引脚定义 电源部分 时钟部分 通信部分 总结列表 内部结构图 电源控制部分 时钟控制部分 寄存器部分 访问部分 寄存器部分的详细定义 命令字 时序的定义 单字节读 单字节写 提前预…

渲染包装效果图要注意什么?渲染100邀请码1a12

包装效果图是产品设计的重要一环&#xff0c;能呈现产品特点&#xff0c;吸引消费者注意力&#xff0c;提高销量&#xff0c;渲染包装效果图要注意以下几点&#xff1a; 1、了解产品和客户需要 在进行包装效果图渲染前&#xff0c;必须充分了解产品的特点和客户需求。只有深入了…

C# OpenVino Yolov8 Seg 分割

目录 效果 模型信息 项目 代码 下载 效果 模型信息 Model Properties ------------------------- date&#xff1a;2023-09-07T17:11:46.798385 description&#xff1a;Ultralytics YOLOv8n-seg model trained on coco.yaml author&#xff1a;Ultralytics task&#xf…

嵌入式学习之Linux入门篇笔记——7,Linux常用命令第二部分

配套视频学习链接&#xff1a;http://【【北京迅为】嵌入式学习之Linux入门篇】 https://www.bilibili.com/video/BV1M7411m7wT/?p4&share_sourcecopy_web&vd_sourcea0ef2c4953d33a9260910aaea45eaec8 目录 1.mkdir 命令 2.rmdir 3.rm 命令 4.touch 命令 5.clear…

#Js篇:js里面递归的理解

定义&#xff1a; 递归是一种编程技术&#xff0c;它是指一个函数在其定义内部调用自身的过程。 特点&#xff1a; 一个问题可以分解为更小的问题用同样的方法解决&#xff1b;分解后的子问题求解方式一样&#xff0c;不同的是数据规模变小&#xff1b;存在递归终止条件 作…

STM32内存管理

一.什么是内存管理 内存管理是计算机系统中的一个重要组成部分&#xff0c;它负责管理计算机的内存资源。内存管理的主要目标是有效地分配、使用和释放内存&#xff0c;以满足程序的运行需求。 内存是计算机用于存储程序和数据的地方&#xff0c;它由一系列内存单元组成&#…

微信公众号接入智能聊天机器人

微信公众号免费接入智能聊天机器人 准备物料操作步骤1.准备1个域名2.讯飞星火认知大模型3.github帐号4.vercel1.登录[vercel](https://vercel.com/login),使用github帐号登录2.创建一个新应用&#xff0c;通过github导入(它会自动拉取github仓库的项目)3.添加domains 5.微信公众…

Linux部署Nacos注册中心实现远程访问UI管理界面

Nacos是阿里开放的一款中间件,也是一款服务注册中心&#xff0c;它主要提供三种功能&#xff1a;持久化节点注册&#xff0c;非持久化节点注册和配置管理。 本例通过结合Cpolar内网穿透实现远程访问Nacos 提供的UI (控制台)界面,帮助管理所有的服务和应用的配置 Cpolar内网穿…

常用排序算法(Java版本)

1 引言 常见的排序算法有八种&#xff1a;交换排序【冒泡排序、快速排序】、插入排序【直接插入排序、希尔排序】、选择排序【简单选择排序、堆排序】、归并排序、基数排序。 2 交换排序 所谓交换&#xff0c;就是序列中任意两个元素进行比较&#xff0c;根据比较结果来交换…

编曲入门软件哪个好 编曲入门教程 Studio One哪个版本好 Studio One6.5正版多少钱 FL Studio下载

新手编曲软件推荐&#xff1f;新手学编曲要先熟悉编曲逻辑&#xff0c;因此需要选择编曲逻辑简明易懂的宿主软件。编曲新手应该做哪些准备&#xff1f;准备好编曲设备、宿主软件、基础乐理学习资料。 一、编曲入门软件哪个好 新手入门阶段还没有形成系统的编曲思维&#xff0…

用的到的linux-查找find-Day4

前言&#xff1a; 在上一节&#xff0c;我们了解到rm删除命令&#xff0c;一共拥有三种模式&#xff0c;即-i默认只能删除文件且会提示确认&#xff0c;其次是-r 遍历删除&#xff0c;用于删除目录及目录下的文件&#xff0c;同样需确认后才会删除&#xff0c;最后为-f为强制删…

Flink Checkpoint过程

Checkpoint 使用了 Chandy-Lamport 算法 流程 1. 正常流式处理&#xff08;尚未Checkpoint&#xff09; 如下图&#xff0c;Topic 有两个分区&#xff0c;并行度也为 2&#xff0c;根据奇偶数 我们假设任务从 Kafka 的某个 Topic 中读取数据&#xff0c;该Topic 有 2 个 Pa…

Stable Diffusion 模型下载:GhostMix(幽灵混合)

文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十 下载地址 模型介绍 GhostMix 是绝对让你惊艳的模型&#xff0c;也是自己认为现在最强的2.5D模型。我认为模型的更新应该是基于现有的画面整体不大变的前提下&#xff0c;提高模型的成…

win32编程系统BUG(Win32 API中的WM_SETTEXT消息)

由于频繁使用Win32 API中的WM_SETTEXT消息&#xff0c;导致内存占用直线上升。 暂未找到有效解决方案。

【C++】中的 inline 用法

1、引入 inline 关键字的原因 在 c/c 中&#xff0c;为了解决一些频繁调用的小函数大量消耗栈空间&#xff08;栈内存&#xff09;的问题&#xff0c;特别的引入了 inline 修饰符&#xff0c;表示为内联函数。 栈空间就是指放置程序的局部数据&#xff08;也就是函数内数据&a…

c入门第十篇——指针入门

一句话来说: 指针就是存储了内存地址值的变量。 在前面讨论传值和传址的时候&#xff0c;我们就已经开始使用了指针来传递地址。 在正式介绍指针之前&#xff0c;我们先来简单了解一下内存。内存可以简单的理解为一排连续的房子的街道&#xff0c;每个房子都有自己的地址&#…

QGIS介绍

一.基本概念 QGIS的官方网站为&#xff1a;https://www.qgis.org Github地址&#xff1a;https://github.com/qgis/QGIS QGIS采用开源证书GNU GPLv2 (GNU General Public License version 2&#xff09;发布&#xff0c;主要采用C语言开发&#xff0c;用户界面依赖Qt平台。 二…

JMeter测试工具(性能篇)

自动化脚本 设置全局变量 断言 接口弱压力测试 模拟半小时之内1000个用户访问服务器资源&#xff0c;要求平均响应时间在3000ms内&#xff0c;且错误率为0 模拟100个用户同时访问服务器资源&#xff0c;要求平均响应时间在3000毫秒内&#xff0c;且错误率为0 高并发 模拟2个…