操作環境win10 64位專業版
1、安裝Tushare
https://tushare.pro/document/1?doc_id=7
注意根據新版本要求需要註冊,獲取token,註冊地址
https://tushare.pro/register?reg=302393
2、下載安裝MongoDB,安裝過程可能卡死,不要勾選MongoDB compass,單獨下載安裝即可
https://www.mongodb.com/download-center
運行程序前,需要啓動MongoDB服務,在cmd窗口中運行下列語句,也可以將下邊代碼複製到txt文件中,並修改擴展名爲.bat,每次雙擊文件就行
cd C:\Program Files\MongoDB\Server\4.2\bin #此處路徑爲自己的mongod.exe所在文件夾
mongod.exe --nojournal --dbpath .
看到這一行就說明服務已運行
3、安裝pymongo
pip install pymongo
4、安裝Anaconda(非必須),不過可以省去很多python庫的安裝
https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
5、運行tushare並存儲金融數據,代碼及說明如下
# -*- coding: utf-8 -*-
"""
Created on Tue Sep 17 20:18:41 2019@author: yutian
"""
import tushare as ts
from pymongo import MongoClient
import timeimport json
ts.set_token('XXX') #XXX爲自己的token
pro = ts.pro_api()db_name='tushare_storage'#數據庫名
client=MongoClient()
database=client[db_name]#建立數據庫
#所有股票代碼等
stock_list = pro.stock_basic(exchange='', list_status='L', fields='ts_code')#,symbol,name,area,industry,list_date')sleep_time=0.4
for code in stock_list.ts_code:#
df=pro.daily(ts_code=code, start_date='20190101')#,end_date='20190925')#單隻區間
collection=database[code] #建立以股票名命名的集合
collection.insert_many(json.loads(df.T.to_json()).values()) #存儲到MongoDB數據庫中
time.sleep(sleep_time) #暫停,tushare對積分不足用戶限制每分鐘200次訪問,積分很重要
運行結果在MongoDB compass中查看,如圖所示,建立了名字爲tushare_storage的庫文件,包含了各股票名的集合及指定日期的數據
6、以MovingAverage(滑動平均)方法計算5日,10日,30日均線,並存儲
# -*- coding: utf-8 -*-
"""
Created on Tue Sep 17 20:18:41 2019@author: yutian
"""
import tushare as ts
import pandas as pd
from pymongo import MongoClient
import timeimport json
import numpy as npdef MA(tsPrice,k): #MovingAverage計算
Sma=pd.Series(0.0,index=tsPrice.index)
for i in range(k-1,len(tsPrice)):
Sma[i]=sum(tsPrice[(i-k+1):(i+1)])/k
return(Sma)ts.set_token('XXX) #XXX爲自己的token
pro = ts.pro_api()db_name='tushare_storage'#數據庫名
client=MongoClient()
database=client[db_name]#建立數據庫
#所有股票代碼等
stock_list = pro.stock_basic(exchange='', list_status='L', fields='ts_code')#,symbol,name,area,industry,list_date')sleep_time=0.4
for code in stock_list.ts_code:#
df=pro.daily(ts_code=code, start_date='20190101')#,end_date='20190925')#單隻區間
collection=database[code] #建立以股票名命名的集合
time.sleep(sleep_time) #暫停,tushare對積分不足用戶限制每分鐘200次訪問,積分很重要
if np.size(df,0)<60:
time.sleep(sleep_time)
continue
D5=MA(df.close,5)#5日均線
df['D5']=pd.DataFrame({'D5':D5})
D10=MA(df.close,10)#10日均線
df['D10']=pd.DataFrame({'D10':D10})
D30=MA(df.close,30)#30日均線
df['D30']=pd.DataFrame({'D30':D30})
collection.insert_many(json.loads(df.T.to_json()).values()) #存儲到MongoDB數據庫中
運行結果如圖,增加了D5、D10、D30均線數據
7、總結
使用tushare金融工具,能很方便的下載金融數據,可以和MongoDB等許多數據庫結合實現存儲,用python方便的實現數據處理。