全部版块 我的主页
论坛 金融投资论坛 六区 金融学(理论版) 量化投资
4137 4
2016-02-20

量化杂谈之基础篇系列文章:

基础篇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数据库中需要以下几个步骤:

  • 从数据源获取数据

  • 连接数据库

  • 做insert操作



获取的数据来源于tushare包,我们可以采用下面的方法来获取某只交易品种在一段时间的bars。在获取bars数据之后,需对数据进行处理使其与数据库的表结构一致。


复制代码

连接数据库的方法是使用connect('ip','username','password','db_name'),如果数据库连接失败会打印出一条消息提示。

复制代码

将获取的数据插入到数据库最重要的是构造执行insert操作的sql语句字符串。该字符串中主要含三个参数,一个是插入表的字段名组成的cols_str,一个是插入的表名,另一个则是由多个%s组成format_str。为了获取表的字段,我们需要自定义一个获取一张数据表所有字段的方法。在进行插入操作的时候,还需做数据库的事务管理,如果插入发生错误那么将进行回滚操作。

复制代码


完成了以上几步后,即可选取测试数据进行测试。

复制代码

在Mysql中进行query,可以发现相应的行情数据已经储存在了数据库当中。最后需要补充的是,pandas也提供了to_sql的方法实现将pandas数据结构的数据导入数据库的功能,大家可以查阅文档学习。


关于本次讲解全部代码,可以关注我的微信公众号,以后会有更多关于量化的原创文章哦!。
我的微信公众号:会掘金的小鹿(NuggetsRoad)
是时候关注一波了!


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2016-2-24 13:34:13
谢谢分享
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-2-25 23:57:18
谢谢!您所做的很有意义!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-2-26 10:58:02
支持一下!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2018-2-11 17:33:32
支持一下!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群