一、前言
炒股一两年,亏的内裤都没了(\laughcry),就当是玩吧。
随着玩性的深入,逐渐对目前的炒股软件失去性趣,感觉是时候建立自己的股票数据库。初衷是可以通过对历史数据的分析,实现自己的一些想法或者说所谓的量化的策略分析。所以,量化第一步呢,就是建立一个自己的股票数据库。
今天,抽空写下这篇小文章,算是对自己最近的总结,同时也可以给各位一个思路,仅供参考。
二、思路
1、数据来源:之前一直想在tushare下载历史数据,不过听说他的数据有缺失或者偏差,因此迟迟没有动手,也一直在寻找合适的数据源。一方面希望能从传统软件中获取数据,不过没找到切口(毕竟不是牛逼的程序猿(\笑)),前几天偶然看到富途牛牛的openquant api接口可以实现数据的下载,赶紧取去网上查,发现他们的github,下载下来,看他们的说明配置一下,就可以连接到他们的数据源了。
2、数据存储:拿到数据源后,就得考虑怎么存储数据了。就我了解到的有四种思路,csv、mysql、mongodb还有h5。一般童鞋都试过csv比较慢,因此第一个排除,mysql和mongodb的区别就是关系的存在与否,如果要关系的话我觉得查找的时候会比较慢,而mongodb是没有关系并且按照索引查找,速度应该比mysql有保障,因此排除mysql。h5数据库听说是很快的,但是我没时间去了解了,所以最后选择了mongodb。接着更重要的问题来了,怎么把三千多只的股票几年的数据存放到本地,调用的时候能方便的快速的实现?进一步说,这个Mongodb的collection要怎么设计的问题。我的想法是:一只股票一个collection,存放它所有日线数据,总共三千多个collection。到时候查找的时候就可以直接取出某只股票的历史日线数据。_id设置成股票代码,后面用日期作为键值,如fig1和fig2所示。这样就可以明白的看到所有股票的collection和日线数据了。
三 、代码实现
1、首先你得有个股票code池子,这个是futuquant里所需要的。这个好像可以直接在futuquant里面下载,不过我是之前在sina里面爬出来的,费了好点功夫。
2、有了股票池子,你就可以直接在futuquant里面的有个sample.py修改接口代码,直接获取数据。大部分shi不用改的,只做稍微的修改,我的修改版如下图。当然修改的时候会有一些坑,比如如果你一次请求的code太多会出错,所以我就用个for循环,部分下载数据。还有,连接code池子可以在另外写个文件,然后import一下,不然直接写在sample里面的话太大了。其他一些小坑,大家看了erro提示应该没什么问题。
3、最后就是写个mongodb的api接口,存储数据了。因为futuquant输出的是dataframe格式数据,所以不能直接写进mongodb中,因此首先要对数据进行处理。
>1 对dataframe格式遍历,取出一行row。
>2 然后对该行的每一列读取数据,付给变量值。
>3 最后连接mongodb保存数据。
>4 查看数据库是否有数据及数据是否正确。大功告成。
四、后记
本文只是初级水平的教程,那些程序猿大牛请轻喷,我也只是分享一些学习历程及思路。
后面还有数据提取及分析,有机会我也会分享出来。
获取数据存储数据还有很多其他方法,欢迎提问题及建议,共同学习共同进步。
版权所有,谢绝转载!