#%%#先引入后面可能用到的包(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.valuesnames=df.name.valuesstock=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 timedef 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=1for i in pool.ts_code:print('正在獲取第%d家,股票代碼%s' %(j,i))#接口限制訪問200次/分鐘,加一點微小的延時防止被bantime.sleep(0.301)j += 1df = 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()