一、前言
炒股一兩年拣技,虧的內(nèi)褲都沒了(\laughcry),就當是玩吧。
隨著玩性的深入偏序,逐漸對目前的炒股軟件失去性趣键耕,感覺是時候建立自己的股票數(shù)據(jù)庫咧叭。初衷是可以通過對歷史數(shù)據(jù)的分析葱跋,實現(xiàn)自己的一些想法或者說所謂的量化的策略分析。所以崔步,量化第一步呢稳吮,就是建立一個自己的股票數(shù)據(jù)庫。
今天井濒,抽空寫下這篇小文章灶似,算是對自己最近的總結(jié),同時也可以給各位一個思路瑞你,僅供參考酪惭。
二、思路
1者甲、數(shù)據(jù)來源:之前一直想在tushare下載歷史數(shù)據(jù)春感,不過聽說他的數(shù)據(jù)有缺失或者偏差,因此遲遲沒有動手,也一直在尋找合適的數(shù)據(jù)源鲫懒。一方面希望能從傳統(tǒng)軟件中獲取數(shù)據(jù)嫩实,不過沒找到切口(畢竟不是牛逼的程序猿(\笑)),前幾天偶然看到富途牛牛的openquant api接口可以實現(xiàn)數(shù)據(jù)的下載窥岩,趕緊取去網(wǎng)上查甲献,發(fā)現(xiàn)他們的github,下載下來谦秧,看他們的說明配置一下竟纳,就可以連接到他們的數(shù)據(jù)源了撵溃。
2疚鲤、數(shù)據(jù)存儲:拿到數(shù)據(jù)源后,就得考慮怎么存儲數(shù)據(jù)了缘挑。就我了解到的有四種思路集歇,csv、mysql语淘、mongodb還有h5诲宇。一般童鞋都試過csv比較慢,因此第一個排除惶翻,mysql和mongodb的區(qū)別就是關(guān)系的存在與否姑蓝,如果要關(guān)系的話我覺得查找的時候會比較慢,而mongodb是沒有關(guān)系并且按照索引查找吕粗,速度應(yīng)該比mysql有保障纺荧,因此排除mysql。h5數(shù)據(jù)庫聽說是很快的颅筋,但是我沒時間去了解了宙暇,所以最后選擇了mongodb。接著更重要的問題來了议泵,怎么把三千多只的股票幾年的數(shù)據(jù)存放到本地占贫,調(diào)用的時候能方便的快速的實現(xiàn)?進一步說先口,這個Mongodb的collection要怎么設(shè)計的問題型奥。我的想法是:一只股票一個collection,存放它所有日線數(shù)據(jù)碉京,總共三千多個collection厢汹。到時候查找的時候就可以直接取出某只股票的歷史日線數(shù)據(jù)。_id設(shè)置成股票代碼收夸,后面用日期作為鍵值坑匠,如fig1和fig2所示。這樣就可以明白的看到所有股票的collection和日線數(shù)據(jù)了卧惜。
三 厘灼、代碼實現(xiàn)
1夹纫、首先你得有個股票code池子,這個是futuquant里所需要的设凹。這個好像可以直接在futuquant里面下載舰讹,不過我是之前在sina里面爬出來的,費了好點功夫闪朱。
2月匣、有了股票池子,你就可以直接在futuquant里面的有個sample.py修改接口代碼奋姿,直接獲取數(shù)據(jù)锄开。大部分shi不用改的,只做稍微的修改称诗,我的修改版如下圖萍悴。當然修改的時候會有一些坑,比如如果你一次請求的code太多會出錯寓免,所以我就用個for循環(huán)癣诱,部分下載數(shù)據(jù)。還有袜香,連接code池子可以在另外寫個文件撕予,然后import一下,不然直接寫在sample里面的話太大了蜈首。其他一些小坑实抡,大家看了erro提示應(yīng)該沒什么問題。
3疾就、最后就是寫個mongodb的api接口澜术,存儲數(shù)據(jù)了。因為futuquant輸出的是dataframe格式數(shù)據(jù)猬腰,所以不能直接寫進mongodb中鸟废,因此首先要對數(shù)據(jù)進行處理。
>1 對dataframe格式遍歷姑荷,取出一行row盒延。
>2 然后對該行的每一列讀取數(shù)據(jù),付給變量值鼠冕。
>3 最后連接mongodb保存數(shù)據(jù)添寺。
>4 查看數(shù)據(jù)庫是否有數(shù)據(jù)及數(shù)據(jù)是否正確。大功告成懈费。
四计露、后記
本文只是初級水平的教程,那些程序猿大牛請輕噴,我也只是分享一些學(xué)習(xí)歷程及思路票罐。
后面還有數(shù)據(jù)提取及分析叉趣,有機會我也會分享出來。
獲取數(shù)據(jù)存儲數(shù)據(jù)還有很多其他方法该押,歡迎提問題及建議疗杉,共同學(xué)習(xí)共同進步。
版權(quán)所有蚕礼,謝絕轉(zhuǎn)載烟具!