量化杂谈之基础篇系列文章:
基础篇1:https://bbs.pinggu.org/thread-4145710-1-1.html
基础篇2:https://bbs.pinggu.org/thread-4154818-1-1.html
基础篇3:https://bbs.pinggu.org/thread-4164534-1-1.html
基础篇4:https://bbs.pinggu.org/thread-4172585-1-1.html
基础篇5:https://bbs.pinggu.org/thread-4191475-1-1.html
本讲中,我们来谈一谈回测中数据的存储和管理。实现这一功能离不开数据库的帮助,在这里采用Mysql数据库向大家演示如何在数据库中创建表、并且如何把从数据源获取的数据存储到数据库的表中。
在Mysql数据库中创建数据表
首先需要在Mysql中先创建一个数据库test,并在该数据库中建一张表his_daily_adj_bars来存储各种交易品种的历史日数据,这些日数据经过了除权的处理,因此可以在回测中直接使用。
在该表中,id是一个自增的主键,code是交易品种的代码作为外键;bar_date是bar的日期,格式是yyyy-mm-dd;created_date是数据新增的日期,而last_updated_date则是最后修改数据的日期,其格式是yyyy-mm-dd hh:mm:ss。在Mysql中的建表语句如下所示。
获取数据并将数据存储到Mysql数据库
将获取的数据插入到Mysql数据库中需要以下几个步骤:
获取的数据来源于tushare包,我们可以采用下面的方法来获取某只交易品种在一段时间的bars。在获取bars数据之后,需对数据进行处理使其与数据库的表结构一致。
连接数据库的方法是使用connect('ip','username','password','db_name'),如果数据库连接失败会打印出一条消息提示。
将获取的数据插入到数据库最重要的是构造执行insert操作的sql语句字符串。该字符串中主要含三个参数,一个是插入表的字段名组成的cols_str,一个是插入的表名,另一个则是由多个%s组成format_str。为了获取表的字段,我们需要自定义一个获取一张数据表所有字段的方法。在进行插入操作的时候,还需做数据库的事务管理,如果插入发生错误那么将进行回滚操作。
完成了以上几步后,即可选取测试数据进行测试。
在Mysql中进行query,可以发现相应的行情数据已经储存在了数据库当中。最后需要补充的是,pandas也提供了to_sql的方法实现将pandas数据结构的数据导入数据库的功能,大家可以查阅文档学习。
关于本次讲解全部代码,可以关注我的微信公众号,以后会有更多关于量化的原创文章哦!。
我的微信公众号:会掘金的小鹿(NuggetsRoad)
是时候关注一波了!