一、前言
炒股一兩年,虧的內(nèi)褲都沒了(\laughcry),就當(dāng)是玩吧。
隨著玩性的深入,逐漸對(duì)目前的炒股軟件失去性趣,感覺是時(shí)候建立自己的股票數(shù)據(jù)庫(kù)。初衷是可以通過(guò)對(duì)歷史數(shù)據(jù)的分析,實(shí)現(xiàn)自己的一些想法或者說(shuō)所謂的量化的策略分析。所以,量化第一步呢,就是建立一個(gè)自己的股票數(shù)據(jù)庫(kù)。
今天,抽空寫下這篇小文章,算是對(duì)自己最近的總結(jié),同時(shí)也可以給各位一個(gè)思路,僅供參考。
二、思路
1、數(shù)據(jù)來(lái)源:之前一直想在tushare下載歷史數(shù)據(jù),不過(guò)聽說(shuō)他的數(shù)據(jù)有缺失或者偏差,因此遲遲沒有動(dòng)手,也一直在尋找合適的數(shù)據(jù)源。一方面希望能從傳統(tǒng)軟件中獲取數(shù)據(jù),不過(guò)沒找到切口(畢竟不是牛逼的程序猿(\笑)),前幾天偶然看到富途牛牛的openquant api接口可以實(shí)現(xiàn)數(shù)據(jù)的下載,趕緊取去網(wǎng)上查,發(fā)現(xiàn)他們的github,下載下來(lái),看他們的說(shuō)明配置一下,就可以連接到他們的數(shù)據(jù)源了。
2、數(shù)據(jù)存儲(chǔ):拿到數(shù)據(jù)源后,就得考慮怎么存儲(chǔ)數(shù)據(jù)了。就我了解到的有四種思路,csv、mysql、mongodb還有h5。一般童鞋都試過(guò)csv比較慢,因此第一個(gè)排除,mysql和mongodb的區(qū)別就是關(guān)系的存在與否,如果要關(guān)系的話我覺得查找的時(shí)候會(huì)比較慢,而mongodb是沒有關(guān)系并且按照索引查找,速度應(yīng)該比mysql有保障,因此排除mysql。h5數(shù)據(jù)庫(kù)聽說(shuō)是很快的,但是我沒時(shí)間去了解了,所以最后選擇了mongodb。接著更重要的問(wèn)題來(lái)了,怎么把三千多只的股票幾年的數(shù)據(jù)存放到本地,調(diào)用的時(shí)候能方便的快速的實(shí)現(xiàn)?進(jìn)一步說(shuō),這個(gè)Mongodb的collection要怎么設(shè)計(jì)的問(wèn)題。我的想法是:一只股票一個(gè)collection,存放它所有日線數(shù)據(jù),總共三千多個(gè)collection。到時(shí)候查找的時(shí)候就可以直接取出某只股票的歷史日線數(shù)據(jù)。_id設(shè)置成股票代碼,后面用日期作為鍵值,如fig1和fig2所示。這樣就可以明白的看到所有股票的collection和日線數(shù)據(jù)了。
三 、代碼實(shí)現(xiàn)
1、首先你得有個(gè)股票code池子,這個(gè)是futuquant里所需要的。這個(gè)好像可以直接在futuquant里面下載,不過(guò)我是之前在sina里面爬出來(lái)的,費(fèi)了好點(diǎn)功夫。
2、有了股票池子,你就可以直接在futuquant里面的有個(gè)sample.py修改接口代碼,直接獲取數(shù)據(jù)。大部分shi不用改的,只做稍微的修改,我的修改版如下圖。當(dāng)然修改的時(shí)候會(huì)有一些坑,比如如果你一次請(qǐng)求的code太多會(huì)出錯(cuò),所以我就用個(gè)for循環(huán),部分下載數(shù)據(jù)。還有,連接code池子可以在另外寫個(gè)文件,然后import一下,不然直接寫在sample里面的話太大了。其他一些小坑,大家看了erro提示應(yīng)該沒什么問(wèn)題。
3、最后就是寫個(gè)mongodb的api接口,存儲(chǔ)數(shù)據(jù)了。因?yàn)閒utuquant輸出的是dataframe格式數(shù)據(jù),所以不能直接寫進(jìn)mongodb中,因此首先要對(duì)數(shù)據(jù)進(jìn)行處理。
>1 對(duì)dataframe格式遍歷,取出一行row。
>2 然后對(duì)該行的每一列讀取數(shù)據(jù),付給變量值。
>3 最后連接mongodb保存數(shù)據(jù)。
>4 查看數(shù)據(jù)庫(kù)是否有數(shù)據(jù)及數(shù)據(jù)是否正確。大功告成。
四、后記
本文只是初級(jí)水平的教程,那些程序猿大牛請(qǐng)輕噴,我也只是分享一些學(xué)習(xí)歷程及思路。
后面還有數(shù)據(jù)提取及分析,有機(jī)會(huì)我也會(huì)分享出來(lái)。
獲取數(shù)據(jù)存儲(chǔ)數(shù)據(jù)還有很多其他方法,歡迎提問(wèn)題及建議,共同學(xué)習(xí)共同進(jìn)步。
版權(quán)所有,謝絕轉(zhuǎn)載!