许昌永诚网络科技有限公司/优化大师的作用
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
。
创建虚拟环境的方法有很多种,这里介绍两种方法,分别是使用venv
和conda
:
要使用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芯片的版本可选:
安装完成后,创建用户,设置访问方式并设置密码:
# 创建新的用户,并允许客户通过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
功能的使用将会受到限制,如下图所示:
未来计划增加其他金融数据提供商的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-Lib
的python 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文档
相关文章:

【python量化交易】qteasy使用教程01 - 安装方法及初始化配置
qteasy教程1 - 安装方法及初始化配置 qteasy教程1 - 安装方法及初始配置qteasy安装前的准备工作1, 创建安装环境2,安装MySQL数据库 (可选)安装pymysql 3,创建tushare账号并获取API token (可选)4,安装TA-lib (可选)WindowsMac OSL…...

UML 2.5图形库
UML 2.5图形库 drawio是一款强大的图表绘制软件,支持在线云端版本以及windows, macOS, linux安装版。 如果想在线直接使用,则直接输入网址drawon.cn或者使用drawon(桌案), drawon.cn内部完整的集成了drawio的所有功能,并实现了云端存储&#…...

分享springboot框架的一个开源的本地开发部署教程(若依开源项目开发部署过程分享持续更新二开宝藏项目PostgresSQL数据库版)
1首先介绍下若依项目: 若依是一个基于Spring Boot和Spring Cloud技术栈开发的多租户权限管理系统。该开源项目提供了一套完整的权限管理解决方案,包括用户管理、角色管理、菜单管理、部门管理、岗位管理等功能。 若依项目采用前后端分离的架构…...

打卡今天学习 Linux
过年了,祝大家过年快乐 在今天的学习中,我们涉及了一些关键的 Linux 系统管理知识点,包括 systemctl、IP 地址配置、域名解析、映射的创建、软链接等。让我们简要回顾一下这些主题。 1. systemctl systemctl 是一个强大的 Linux 系统管理工…...

单片机精进之路-3流水灯
P1代表单片机的P1口的8个io的寄存器,使用_crol_函数:将 k进行1位左位移,并将值以unsigned char类型返回,再将K的值赋给P1,这样就点亮了P1口对应的IO为低电平的led灯。 //flow light and beep #include <reg51.h>…...

c# File.WriteAllLines 和 File.WriteAllText
File.WriteAllLines 和 File.WriteAllText 都是 C# 中用于写入文本文件的方法,但它们有一些区别。 1. File.WriteAllLines 方法: File.WriteAllLines 方法用于将字符串数组的内容按行写入文本文件。每个数组元素都被写入文件的一行,且方法会…...

linux系统定时任务管理
crontab使用 一、crontab简介 crontab 这个指令所设置的工作将会循环的一直进行下去!可循环的时间为分钟、小时、每周、每月或每年等。crontab 除了可以使用指令执行外,亦可编辑 /etc/crontab 来支持。 至于让 crontab 可以生效的服务则是 crond 这个服…...

mysql的慢sql优化
为什么要优化慢sql ? 慢sql会长时间占用 数据库连接数,如果项目中有大量的慢sql,那么可用的数据库连接数就会变少,进而会影响业务。 慢sql优化 优化慢sql,最常见的就是添加索引。查询语句中不要使用select *尽量减少…...

排序算法---插入排序
原创不易,转载请注明出处。欢迎点赞收藏~ 插入排序是一种简单直观的排序算法,它的基本思想是将待排序的元素分为已排序和未排序两部分,每次从未排序部分中选择一个元素插入到已排序部分的合适位置,直到所有元素都插入到已排序部分…...

迷你世界勒索病毒,你的文件被删了吗?
前言 笔者在某恶意软件沙箱平台分析样本的时候,发现了一款比较有意思的勒索病毒MiniWorld迷你世界勒索病毒,它的解密界面与此前的WannaCry勒索病毒的界面相似,应该是作者仿冒的WannaCry的UI,如下所示: 这款勒索病毒既…...

QT styleSheet——控件设置样式表
QT开发中,需要设置多种多样的控件表现形式,QT实现的styleSheet能够满足多种多样的场景,这里简单的记录下一些我常用的 设置透明背景,鼠标悬浮时,设置背景色: pushButton->setStyleSheet("QPushBu…...

Linux学习
1 Linux的目录结构介绍 bin存放常用的命令etc存放配置文件bootlinux启动的文件home存放用户lib存放动态库,给应用程序使用lostfound一般是空的,但系统异常关机会产生文件media自动挂载,如u盘,光盘mnt手动挂载,一般自己…...

MFC研发自验用例编写应注意哪些关键测试点
MFC(Microsoft Foundation Classes)是一个用于开发Windows应用程序的C类库。在MFC应用程序的研发过程中,自验用例(自我验证测试用例)的编写是非常重要的一环,它有助于确保代码的质量、稳定性和功能正确性。…...

ChatGPT升级版本GPT-4V(ision)支持多模态语音和图像
ChatGPT升级指南:迎接GPT-4V(ision)的全新多模态时代 ChatGPT最新升级引入了GPT-4V(ision),这是一个突破性的多模态版本,支持语音和图像输入。现在,用户可以与ChatGPT进行更加丰富和互动的对话。以下是您升级到GPT-4V(ision)所需…...

机器人搬砖 - 华为OD统一考试
OD统一考试(C卷) 分值: 100分 题解: Java / Python / C 题目描述 机器人搬砖,一共有N堆砖存放在N个不同的仓库中,第 i 堆中有 bricks[i] 块砖头,要求在8小时内搬完。 机器人每小时能搬砖的数量…...

10分钟快速入门正则表达式
在力扣上看了一本付费书籍,终于让我入门了正则表达事... 问题: "^1[3-9]\\d{9}$" 是啥意思 读完本篇小笔记,你就知道,啥是"^1[3-9]\\d{9}$" 这个是啥意思了。 首先,正则表达式,这个名…...

【C++】C++的简要介绍
简单不先于复杂,而是在复杂之后。 文章目录 1. 什么是C2. C的发展史3. C的重要性3.1 语言的使用广泛度3.2 在工作领域3.3 在校招领域3.3.1 岗位需求3.3.2 笔试题 3.3.3 面试题 4. 如何学习C4.1 别人怎么学? 1. 什么是C C语言是结构化和模块化的语言&…...

Golang数据库编程详解 | 深入浅出Go语言原生数据库编程
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站https://www.captainbed.cn/kitie。 Golang学习专栏:https://blog.csdn.net/qq_35716689/category_12575301.html 前言 对数据库…...

《游戏引擎架构》 -- 学习2
声明,定义,以及链接规范 翻译单元 声明与定义 链接规范 C/C 内存布局 可执行映像 程序堆栈 动态分配的堆 对象的内存布局 kilobyte 和 kibibyte 流水线缓存以及优化 未完待续。。。...

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

Qt博客目录
一.Qt安装配置和创建项目 Qt所有版本下载地址 Qt安装配置教程windows版(包括:Qt5.8.0版本,Qt5.12,Qt5.14版本下载安装教程)(亲测可行) QT从入门到入土(一)——Qt5.14.…...

【C++】初识模板:函数模板和类模板
目录 一、模板函数 1、函数模板的概念 2、函数模板的格式 3、函数模板的原理 4、函数模板实例化 5、 模板参数的匹配原则 二、类模板 1 、类模板的定义格式 2 、类模板的实例化 3、模板类示例 一、模板函数 1、函数模板的概念 函数模板代表了一个函数家族,…...

记录Dynamo每个节点的运行时间
不知道小伙伴们在写Dynamo程序的时候,有没有遇到这种问题→程序运行很慢,但是却不知道该优化哪些节点,可以提高程序运行的速度。 今天呢,就给大家分享一个节点包→TuneUp,在节点包管理器里就可以下载,安装…...

探索设计模式的魅力:代理模式揭秘-软件世界的“幕后黑手”
设计模式专栏:http://t.csdnimg.cn/U54zu 目录 引言 一、魔法世界 1.1 定义与核心思想 1.2 静态代理 1.3 动态代理 1.4 虚拟代理 1.5 代理模式结构图 1.6 实例展示如何工作(场景案例) 不使用模式实现 有何问题 使用模式重构示例 二、…...

AD9361多片同步设计方法
本文基于ZC706FMCOMMS5的平台,介绍了多片AD9361同步的方法。并将该设计移植到自行设计的ZYNQ70354片AD9361(实现8路同步收发)的电路板上。本设计采用纯逻辑的方式,仅使用了ZYNQ芯片的PL部分。 9361多芯片同步主要包括基带同步和射频同步两大块任务。其中…...

2024/2/7 图的基础知识
图的存储 B3643 图的存储 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路:mp[n][n]用来存邻接矩阵,二维vector用来存每个点连的点 完整代码: #include <bits/stdc.h> #define int long long const int N 1e5 10; int n, m; …...

1897_野火FreeRTOS教程阅读笔记_链表
1897_野火FreeRTOS教程阅读笔记_链表 全部学习汇总: g_FreeRTOS: FreeRTOS学习笔记 (gitee.com) 之前我自己通过直接啃代码的方式对FreeRTOS也算是有了一点理解了,这次趁着些许闲暇翻看一下野火的FreeRTOS教程。一者算是一种复习;二者可能对自…...

CTFshow web(php命令执行 45-49)
基础知识: 1.绕过cat使用: tac more less head tac tail nl od(二进制查看) vi vim sort uniq rev 2.绕过空格用: %09 <> ${IFS} $IFS$ {cat,fl*} %20 注: %09 ##(Tab) %20 ##(spa…...

飞天使-linux操作的一些技巧与知识点8-zabbix6.0 容器搭建
文章目录 安装docker安装步骤mysql下载镜像安装zabbix 使用zabbix非host模式创建 测试效果 安装docker 1. 配置官方 yum 源$ sudo yum install -y yum-utils $ sudo yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo2. 安装 Docker$ …...

51 单片机入门 400 例
1 IO输出 点亮1个LED灯方法1 2 IO输出 点亮1个LED灯方法2 3 IO输出 点亮多个LED灯方法1 4 IO输出 点亮多个LED灯方法2 5 闪烁1个LED 6 不同频率闪烁1个LED灯 7 不同频率闪烁多个LED灯…...