操作环境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方便的实现数据处理。