前言
数据是量化交易的源头,如何高效地管理大量数据是量化交易分析中非常关键的环节。数据库就是最佳的解决方案。
通过API接口获取到股票行情数据之后,我们可以存入到数据库之中,这样下次调用的时候只需要从本地数据库中获取即可。
目前流行的数据库有Oracle、MySQL、MongoDB、Redis、SQLite……关于数据库的选型通常取决于性能、数据完整性以及应用方面的需求。每个数据库都有它的特点和最适合的应用场合。
我的书籍《Python股票量化交易从入门到实践》上推荐的是轻型数据库SQLite,适用于无须多用户访问,数据容量小于2TB,无须海量数据处理的小型应用场景。
如果追求更全面的功能、更强大的性能,特别在并发处理上要求高效的话,MySQL无疑是所有大型数据库中最为流行的一个。
接下来我们就来介绍下如何在本地搭建MySQL数据库
安装MySQL
首先去官网http://www.mysql.com下载MySQL。点击Downloads—>Community,选择MySQL Community Server。
选择对应的安装文件后开始下载。下载完成后,打开安装包,开始安装MySQL。
选择需要的版本:
需要安装下依赖的Visual C++
然后按以下的步骤一步步操作即可。
输入账户和密码:
到此为止,MySQL就成功地安装在你的本地电脑上了。
一个基础的例程
接下来用一个简单的例程使用下MySQL。
使用Python操作MySQL可以安装pymysql这个库。
pip install pymysql
使用pymysql打开数据库连接代码如下,其中host为localhost,port为3306
self.conn = pymysql.connect(host=host, port=self.port, db=self.db, user=self.user, password=self.password)
如果在打开MySQL时出现报错:
RuntimeError: 'cryptography' package is required for sha256_password or caching_sha2_password auth methods
原因缺少了cryptography库,安装一下即可。
pip3 install cryptography -i https://pypi.douban.com/simple
获得一个可以执行SQL语句的光标对象:
self.cursor = self.conn.cursor()
执行SQL语句,比如sql是"SELECT * FROM stock",即查看stock表中全部内容。
self.cursor.execute(sql)
self.conn.commit()
关闭数据库连接如下:
self.conn.close()
如果我们处理的是Dataframe数据的话,那么保存到数据库时可以直接使用to_sql。需要注意的一点是使用to_sql,只能使用sqlalchemy库。代码如下所示:
from sqlalchemy import create_engine
conn = create_engine("mysql+pymysql://root:yuanxiao@127.0.0.1:3306/quanttrader?charset=utf8")
df=ts.get_hist_data('000001')
df.to_sql(name='stock', con=conn, if_exists='append', index=False, index_label=False)
说明
完整代码我们会上传星球《Python量化场景编程技巧与方法》。
关于数据库是否要分表?如何分表?可以关注星球《Python量化场景编程技巧与方法》中的介绍。
《Python量化场景编程技巧和方法》围绕《玩转股票量化交易》中涉及到的一些内容,分享一些偏基础的关于Python编程技巧、Pandas编程技巧、数据库技巧、可视化编程技巧等等。
加入星球《玩转股票量化交易》的会员可以免费加入星球《Python量化场景编程技巧与方法》,微信联系我加入!!
元宵大师的量化交易书籍开售!!
京东、当当、天猫有售!!