#%%
#先引入后面可能用到的包(package)
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()
%matplotlib inline
#正常显示画图时出现的中文和负号
from pylab import mpl
mpl.rcParams['font.sans-serif']=['SimHei']
mpl.rcParams['axes.unicode_minus']=False
#使用tushare获取交易数据
#设置token
import tushare as ts
token=''
ts.set_token(token)
pro=ts.pro_api(token)
#pro=ts.pro_api(token)
index={'上证综指': '000001.SH','深证成指': '399001.SZ',
'沪深300': '000300.SH','创业板指': '399006.SZ',
'上证50': '000016.SH','中证500': '000905.SH',
'中小板指': '399005.SZ','上证180': '000010.SH'}
#获取当前交易的股票代码和名称
def get_code():
df = pro.stock_basic(exchange='', list_status='L')
codes=df.ts_code.values
names=df.name.values
stock=dict(zip(names,codes))
#合并指数和个股成一个字典
stocks=dict(stock,**index)
return stocks
#获取行情数据
def get_data(stock,start='20151009',end=''):
#如果代码在字典index里,则取的是指数数据
code=get_code()[stock]
if code in index.values():
df=ts.pro_bar(ts_code=code,asset='I',start_date=start, end_date=end)
#否则取的是个股数据
else:
df=ts.pro_bar(ts_code=code, adj='qfq',start_date=start, end_date=end)
#将交易日期设置为索引值
df.index=pd.to_datetime(df.trade_date)
df=df.sort_index()
return df
import tushare as ts
import pandas as pd
import time
def maintask():
pro = ts.pro_api()
#获取基础信息数据,包括股票代码,名称,上市日期,退市日期等
pool = pro.stock_basic(exchange='',
list_status = 'L',
adj = 'qfq',
fields = 'ts_code,symbol,name,area,industry,fullname,list_date,market,exchange,is_hs')
#print(pool.head())
print('获得上市股票总数:',len(pool)-1)
j=1
for i in pool.ts_code:
print('正在获取第%d家,股票代码%s' %(j,i))
#接口限制访问200次/分钟,加一点微小的延时防止被ban
time.sleep(0.301)
j += 1
df = pro.daily(ts_code=i,
start_date = startdate,
end_date = enddate,
fields = 'ts_code,trade_date,open,high,low,close,pre_close,change,pct_chg,vol,amount')
#print(df.head())
writer = pd.ExcelWriter(i + '.xlsx')
df.to_excel(writer,sheet_name= i + '',index=False)
if __name__== '__main__':
#设置起始日期
startdate='19980101'
enddate='20200224'
#主程序
maintask()