量化交易系统搭建之二:MySQL数据库
本文继续此前系列(),介绍如何在本地安装MySQL数据库,并将其部署至云端,为后续的自动化交易做铺垫。
01
—
本地安装和测试MySQL
一、在本地安装MySQL并测试
虽然本地系统与云端的Linux系统不同,但本地可以更方便地进行代码测试和维护。因此,首先将以MacOS系统为例,展示如何在本地安装并维护MySQL数据库。
MySQL是目前最受欢迎的关系型数据库管理系统(Relational Database Management System)之一,其所使用的 SQL 语言是用于访问数据库的最常用标准化语言。它代码开源,易上手,兼容性高,对个人使用者和中小型企业非常友好。
首先,用户可以首先前往MySQL官网下载安装包:
https://dev.mysql.com/doc/refman/8.0/en/installing.html
点击「2.4 Installing MySQL on macOS」,再按照流程一步步完成安装。这里推荐「2.4.2 Installing MySQL on macOS Using Native Packages」(下图),因为安装流程较简单。根据官网给出的安装指引,完成安装。
MySQL官网的安装指引
安装时,需设置数据库root用户的密码。安装成功后,在本地运行MySQL,如果看到以下界面则表示安装顺利完成:
数据库已经启动
二、连接数据库
为了能让Python更新和维护数据库,推荐使用SQLAlchemy数据包。SQLAlchemy是为Python编程语言提供的开源SQL工具包,使用简单,上手容易。
初次运行时,需要创建一个数据库,其中<user>和<password>填写创建数据库时使用的用户名和密码,一般用户名是root,密码是安装时设置的。<database name>是数据库名称。
from sqlalchemy import create_engine
from sqlalchemy_utils import database_exists, create_database
engine = create_engine("mysql+mysqlconnector://<user>:<password>@localhost/<database name>")
if not database_exists(engine.url):
create_database(engine.url)
print(database_exists(engine.url))
将数据保存到数据库的表中,加密货币的历史量价数据data为例,将其保存在名为「PRICE」的表(table)的方法是:
# 初始化数据库连接:
engine = create_engine('mysql+mysqlconnector://<user>:<password>@localhost/<database name>')
connection = engine.connect()
# 创建DBSession类型:
data.to_sql(name='PRICE',con=connection, if_exists='replace',index=False)
若要从数据库的PRICE表中读取数据,方法是:
#从数据库读取数据来计算各个资产的收益率
query = """
select *
from PRICE
order by time ASC"""
data = pd.read_sql(query, con=connection)
02
—
在Linux环境下搭建数据库
一、在云端服务器安装MySQL
本地数据创建后,可以开始创建云端数据库。首先连接云服务器并安装数据库服务器mysql server,这里使用APT(高级软件包工具)完成所有安装步骤。APT是一个一站式的安装包管理系统,它可以帮助用户解决安装包中的相互依赖关系。
sudo apt update
sudo apt install mysql-server
当以上指令成功结束运行后,mysql就已经开始运行,可以用以下指令验证。如果已经运行,便会收到Active: active (running)的消息。
sudo systemctl status mysql
接下来,需要设置root(根)账户的密码,首先以root身份登录:
sudo mysql
接下来,设置新的密码,将'your_password_here'更换成想要设置的密码
'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password_here'; ALTER USER
FLUSH PRIVILEGES;
为了验证密码已经修改成功,首先退出再使用root账户登录:
exit
sudo mysql -u root -p
二、从本地连接云端数据库
MySQL Workbench是一个可视化的数据库管理工具,可以帮助用户轻松完成数据库的管理工作。除了MySQL Workbench,Navicat也是不错一款不错的可视化工具。
用户可以前往以下网址下载MySQL Workbench:
https://dev.mysql.com/downloads/workbench/
打开后,在主界面中选择「添加」符号(红色方框):
连接数据库
数据库链接参数设置
连接成功后,点击「Schemes」便可以查询到刚刚在云端部署好的数据库。
数据库链接参数设置
三、实时更新云端数据库
最后,将关于创建数据库并定时数据库的代码上传至云服务器,并运行以下代码安装相关Python工具包。
pip3 install sqlalchemy
pip3 install sqlalchemy_utils
pip3 install mysql-connector-python
注意:如果是全新服务器,需要运行以下代码以设置Python3环境:
sudo apt update
sudo apt install python3-pip
pandas
pip3 install ccxt
采用上期介绍的后台运行的方法:,数据库的更新完全由代码自动在后台完成。
为了验证数据是由后台直接完成,可以直接从MySQL Workbench中查看数据:
此外,市场监测机器人也正确反馈信息:
总结
数据是量化交易的底层基础,本篇介绍了如何从零搭建云端数据库的并测试。用户还可以根据需要添加并储存更多的数据,例如恐贪指数等。下一篇文章将介绍,如何利用本文中的数据,完成程序化交易。