vlambda博客
学习文章列表

量化交易系统搭建之二: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,如果看到下界面则表示安装顺利完成:


量化交易系统搭建之二:MySQL数据库数据库已经启动



二、连接数据库


为了能让Python更新和维护数据库,推荐使用SQLAlchemy数据包。SQLAlchemy是为Python编程语言提供的开源SQL工具包,使用简单,上手容易。


初次运行时,需要创建一个数据库,其中<user>和<password>填写创建数据库时使用的用户名和密码,一般用户名是root,密码是安装时设置的。<database name>是数据库名称。


from sqlalchemy import create_enginefrom 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 PRICEorder by time ASC""" 
data = pd.read_sql(query, con=connection)



02



在Linux环境下搭建数据库



一、在云端服务器安装MySQL


本地数据创建后,可以开始创建云端数据库。首先连接云服务器并安装数据库服务器mysql server,这里使用APT(高级软件包工具)完成所有安装步骤。APT是一个一站式的安装包管理系统,它可以帮助用户解决安装包中的相互依赖关系。


sudo apt updatesudo apt install mysql-server


当以上指令成功结束运行后,mysql就已经开始运行,可以用以下指令验证。如果已经运行,便会收到Active: active (running)的消息。


sudo systemctl status mysql


接下来,需要设置root(根)账户的密码,首先以root身份登录:


sudo mysql


接下来,设置新的密码,将'your_password_here'更换成想要设置的密码


mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password_here';mysql> FLUSH PRIVILEGES;


为了验证密码已经修改成功,首先退出再使用root账户登录:


mysql> exitsudo mysql -u root -p



二、从本地连接云端数据库


MySQL Workbench是一个可视化的数据库管理工具,可以帮助用户轻松完成数据库的管理工作。除了MySQL Workbench,Navicat也是不错一款不错的可视化工具。


用户可以前往以下网址下载MySQL Workbench


https://dev.mysql.com/downloads/workbench/ 


打开后,在主界面中选择「添加」符号(红色方框):


量化交易系统搭建之二:MySQL数据库

连接数据库



量化交易系统搭建之二:MySQL数据库

数据库链接参数设置


连接成功后,点击「Schemes」便可以查询到刚刚在云端部署好的数据库。


量化交易系统搭建之二:MySQL数据库

数据库链接参数设置



三、实时更新云端数据库


最后,将关于创建数据库并定时数据库的代码上传至云服务器,并运行以下代码安装相关Python工具包。


pip3 install sqlalchemypip3 install sqlalchemy_utilspip3 install mysql-connector-python


注意:如果是全新服务器,需要运行以下代码以设置Python3环境:


sudo apt updatesudo apt install python3-pippip3 install pandaspip3 install ccxt


采用上期介绍的后台运行的方法:,数据库的更新完全由代码自动在后台完成。


为了验证数据是由后台直接完成,可以直接从MySQL Workbench中查看数据:




此外,市场监测机器人也正确反馈信息:





总结


数据是量化交易的底层基础,本篇介绍了如何从零搭建云端数据库的并测试。用户还可以根据需要添加并储存更多的数据,例如恐贪指数等。下一篇文章将介绍,如何利用本文中的数据,完成程序化交易。