功能:
通过接口实现股票信息的获取,以及股票之间的对比,包括最终对比图表的生成展示
代码:
import pandas as pd
from pandas_datareader import data
import matplotlib.pyplot as plt
import tushare as ts
import yfinance as yf
#由于雅虎中国已失效于2021.11.01,所以需要通过yfinance插件override使代码重新可用
yf.pdr_override()
#定义分析时间
start_date = '2017-01-01'
end_date = '2018-01-01'
# stockNum=int(input(' How many stocks would you compare?'))
stocklist=[]
# for i in range(stockNum):
# stock = input('Enter Stock Symbol:')
# stocklist.append(stock)
#1
stocklist.append('GOOG')
stocklist.append('AMZN')
#2
# stocklist.append('FB')
# stocklist.append('AAPL')
# stocklist.append('BABA')
# stocklist.append('0700.hk')
#3
# stocklist.append('FB')
# stocklist.append('AAPL')
# stocklist.append('BABA')
print(stocklist)
#收盘价对比
#6雅虎中国已失效2021.11.01
df = data.get_data_yahoo(stocklist,start_date,end_date)['Close']
# df = data.get_data_yahoo(('AMZN',start_date,end_date)
print(df.head())
print(df)
#收盘价对比图
df[stocklist].plot()
#使用不同的标度
df[stocklist].plot(secondary_y = ['FB','BABA'])
plt.title(stocklist)
plt.grid(True)
plt.show()
#定义涨跌幅函数
def change(name,column):
buyPrice = column[0]
curPrice = column[250]
priceChange = (curPrice - buyPrice) / buyPrice
if (priceChange > 0):
print(name,'股票累计上涨幅度 =',priceChange*100,'%')
elif(priceChange < 0):
print(name,'股票累计下跌幅度=',priceChange*100,'%')
else:
print(name,'股票没有变化=',priceChange)
return priceChange
# #谷歌
# googleDf=data.get_data_yahoo('GOOG',start_date,end_date)
# googleclose=googleDf['Close']
# googlechange=change('GOOG',googleclose)
#
#
# #亚马逊
# amzDf=data.get_data_yahoo('AMZN',start_date,end_date)
# amzclose=amzDf['Close']
# amzchange=change('AMZN',amzclose)
#FACEBOOK
fbDf=data.get_data_yahoo('FB',start_date,end_date)
fbclose=fbDf['Close']
fbchange=change('FB',fbclose)
执行后效果如图所示:

