def PlotData(code, start, end, list): start_date = _wxdate2pydate(start) end_date = _wxdate2pydate(end) print (code) print (start_date) print (end_date) quotes = _quotes_historical_yahoo(code, start_date, end_date) fields = ['date','open','close','high','low','volume'] list1 = [] for i in range(0,len(quotes)): x = date.fromordinal(int(quotes[i][0])) y = datetime.strftime(x,'%Y-%m-%d') list1.append(y) print (list1) quotesdf = pd.DataFrame(quotes, index = list1, columns = fields) quotesdf = quotesdf.drop(['date'], axis = 1) quotesdftemp = pd.DataFrame() print (quotesdftemp) for i in range(0,len(list)): quotesdftemp[list[i]] = quotesdf[list[i]] print ("ready to plot") quotesdftemp.plot(marker='o') plt.show()
def get_hist_dow_jones_index(option_code, start_date, end_date): DJIA_Index = _quotes_historical_yahoo(option_code, start_date, end_date, asobject=True, adjusted=True) return DJIA_Index
def PlotData(code, start, end, list): start_date = _wxdate2pydate(start) end_date = _wxdate2pydate(end) print code print start_date print end_date quotes = _quotes_historical_yahoo(code, start_date, end_date) fields = ['date', 'open', 'close', 'high', 'low', 'volume'] list1 = [] for i in range(0, len(quotes)): x = date.fromordinal(int(quotes[i][0])) y = datetime.strftime(x, '%Y-%m-%d') list1.append(y) print list1 quotesdf = pd.DataFrame(quotes, index=list1, columns=fields) quotesdf = quotesdf.drop(['date'], axis=1) quotesdftemp = pd.DataFrame() print quotesdftemp for i in range(0, len(list)): quotesdftemp[list[i]] = quotesdf[list[i]] print "ready to plot" quotesdftemp.plot(marker='o')
# -*- coding: utf-8 -*- # @version : Python3.6 # @Time : 2017/4/26 14:48 # @Author : Jianyang-Hu # @contact : [email protected] # @File : finance_histogram_0426.py # @Software: PyCharm #股价分布直方图 from matplotlib.finance import _quotes_historical_yahoo import sys from datetime import date import matplotlib.pyplot as plt import numpy as np from numpy import * today = date.today() start = (today.year - 1, today.month, today.day) symbol = 'DISH' if len(sys.argv) == 2: symbol = sys.argv[1] quotes = _quotes_historical_yahoo(symbol, start, today) quotes = np.array(quotes) close = quotes.T[4] #提取出收盘价数据,T是转置 plt.hist(close, np.sqrt(len(close))) plt.show() #报错TypeError: 'numpy.float64' object cannot be interpreted as an integer
from matplotlib.finance import _quotes_historical_yahoo import numpy as np import matplotlib.pyplot as plt from scipy import fftpack from scipy import signal from matplotlib.dates import DateFormatter from matplotlib.dates import DayLocator from matplotlib.dates import MonthLocator from scipy import optimize #模拟正弦波 start = (2010, 7, 25) end = (2011, 7, 25) quotes = _quotes_historical_yahoo("QQQ", start, end) quotes = np.array(quotes) dates = quotes.T[0] qqq = quotes.T[4] y = signal.detrend(qqq) alldays = DayLocator() months = MonthLocator() month_formatter = DateFormatter("%b %Y") fig = plt.figure() fig.subplots_adjust(hspace=.3) ax = fig.add_subplot(211)
for x in range(0, 10): if countryname[x] == 'UK' or countryname[x] == 'USA': Income = quandl.get( dataset_income[x]) #gets the income data for company x Balance = quandl.get( dataset_balance[x]) #gets the balance data for company x Values = quandl.get( dataset_values[x]) #gets the values data for company x datelist = Income.index.tolist() #list of dates for PE if Income['EPS exc. extra'].iloc[-1] - Income['EPS exc. extra'].iloc[ -2] > -5 and Income['Revenue'].iloc[-1] - Income[ 'Revenue'].iloc[-2] > -5 and Values['Price:Earnings'].iloc[ -1] < 50 and Values['Price:Book'].iloc[-1] < 20: r = _quotes_historical_yahoo(ticker[x], begdate, enddate, asobject=True, adjusted=True) G = pd.Series(r.aclose, r.date) #start moving average g_mva = pd.rolling_mean(G, 20) #continue moving average sdate = date(2016, 1, 4) #first day for moving average filter edate = date(2016, 4, 1) #last day for moving average filter tdate = date(2016, 9, 20) if g_mva.ix[edate] - g_mva.ix[sdate] > -50: d.append({ 'Company name': companyname[x], 'cTicker': ticker[x], 'Country': countryname[x],
# -*- coding: utf-8 -*- # 按相邻两天的收盘价涨跌规律对2014年第3季度(7月-9月)构成道 琼斯工业指数的30只股票聚类 # Filename: kmeansDJI.py from matplotlib.finance import _quotes_historical_yahoo from pylab import * from scipy.cluster.vq import * import numpy as np from datetime import date today = date.today() start = (today.year - 2, today.month + 6, today.day - 13) end = (today.year - 2, today.month + 8, today.day + 16) listDji = ['AXP', 'BA', 'CAT', 'CSCO', 'VZ', 'WMT', 'XOM'] rowNum = len(listDji) colNum = len(_quotes_historical_yahoo(listDji[0], start, end)) quotes = [[0 for col in range(64)] for row in range(rowNum)] listTemp = [[0 for col in range(64)] for row in range(rowNum)] for i in range(rowNum): quotes[i] = _quotes_historical_yahoo(listDji[i], start, end) for j in range(colNum-1): listTemp[i][j] = np.sign(np.diff( quotes[i], axis=0))[j][2] # 1 if the latter is larger than former, otherwise the result is -1 # print quotes[0] # print listTemp[0][0] # print listTemp[0] # print len(np.sign(np.diff(quotes[i], axis=0))) data = vstack(listTemp)
# -*- coding: utf-8 -*- from matplotlib.finance import _quotes_historical_yahoo import pandas as pd from datetime import date from datetime import datetime today = date.today() start = datetime(2014, 1, 1) end = datetime(2014, 12, 31) quotesMS14 = _quotes_historical_yahoo('MSFT', start, end) attributes = ['date', 'open', 'close', 'high', 'low', 'volume'] quotesdfMS14 = pd.DataFrame(quotesMS14, columns=attributes) # 为这部分数据将索引列更换为日期,并删除掉原先的date列,日期格式是2015年1月30日,显示为 ‘15/01/30’ list1 = [] for i in range(0, len(quotesMS14)): x = date.fromordinal(int(quotesMS14[i][0])) y = date.strftime(x, '%y/%m/%d') list1.append(y) quotesdfMS14.index = list1 quotesdfMS14 = quotesdfMS14.drop(['date'], axis=1) # 加上月份列 list1 = [] for i in range(0, len(quotesdfMS14)): list1.append(int(quotesdfMS14.index[i][3:5])) quotesdfMS14['month'] = list1 # print quotesdfMS14 # 绘制在2014年整年内(即1月1日至12月31日)微软股票每个月开盘平均价格的走势。
#! /usr/bin/python # coding=utf-8 # FileName: *.py # purpose: # Author:Wang Yan # CreationDate:20160909 #a股的可以用 TuShare from matplotlib.finance import _quotes_historical_yahoo #from datetime import date import datetime import pandas as pd import numpy as np today=datetime.date.today() start=(today.year-1,today.month,today.day) quotes=_quotes_historical_yahoo('BIDU',start,today) datelist=[] for i in range(0,len(quotes)): dateNormal=datetime.date.fromordinal(int(quotes[i][0])) dateFormat=datetime.datetime.strftime(dateNormal,'%Y%m%d') datelist.append(dateFormat) fields=['date','open','close','high','low','volume'] quoteDf1=pd.DataFrame(quotes,columns=fields,index=range(1,len(quotes)+1)) quoteDf2=pd.DataFrame(quotes,columns=fields,index=datelist) quoteDf2=quoteDf2.drop(['date'],axis=1) #print(quoteDf2['open']) #print(df) print(quoteDf2) print(quoteDf2.index) print(quoteDf2.columns)
# @File : trend_0426.py # @Software: PyCharm from matplotlib.finance import _quotes_historical_yahoo from datetime import date import numpy as np from scipy import signal import matplotlib.pyplot as plt from matplotlib.dates import DateFormatter from matplotlib.dates import DayLocator from matplotlib.dates import MonthLocator #获取QQQ的收盘价和对应的日期数据 today = date.today() start = (today.year - 1, today.month, today.day) quotes = _quotes_historical_yahoo("QQQ", start, today) quotes = np.array(quotes) dates = quotes.T[0] qqq = quotes.T[4] #去除信号中的线性趋势 y = signal.detrend(qqq) #创建月定位器和日定位器 alldays = DayLocator() months = MonthLocator() #创建一个日期格式化器以格式化x轴上的日期。该格式化器将创建一个字符串,包含简写的月份和年份 month_formatter = DateFormatter("%b %Y") fig = plt.figure()
from matplotlib.finance import _quotes_historical_yahoo import sys from datetime import date import matplotlib.pyplot as plt import numpy as np today=date.today(); start=(today.year-1,today.month,today.day); symbol='DISH'; if len(sys.argv)==2: symbol=sys.argv[1]; quotes=_quotes_historical_yahoo(symbol,start,today); quotes=np.array(quotes); close=quotes.T[4]; volume=quotes.T[5]; ret=np.diff(close)/close[:-1]; volchange=np.diff(volume)/volume[:-1]; fig=plt.figure(); ax=fig.add_subplot(111); ax.scatter(ret.volchange,c=ret*100,s=volchange*100,alpha=0.5); ax.grid(True); plt.show();
# -*- coding: utf-8 -*- from matplotlib.finance import _quotes_historical_yahoo from datetime import date from datetime import datetime import pandas as pd today = date.today() start = (today.year - 1, today.month, today.day) quotes = _quotes_historical_yahoo('AXP', start, today) # print quotes fields = ['date', 'open', 'close', 'high', 'low', 'volume'] list1 = [] for i in range(0, len(quotes)): x = date.fromordinal(int(quotes[i][0])) y = datetime.strftime(x, '%Y-%m-%d') list1.append(y) quotesdf = pd.DataFrame(quotes, index=list1, columns=fields) quotesdf = quotesdf.drop(['date'], axis=1) print quotesdf
# -*- coding: utf-8 -*- # from matplotlib.finance import quotes_historical_yahoo # matplotlib 1.5版本中函数变为 quotes_historical_yahoo_ohlc 或 _quotes_historical_yahoo from matplotlib.finance import _quotes_historical_yahoo from datetime import date from datetime import datetime import pandas as pd today = date.today() start = (today.year - 1, today.month, today.day) quotes = _quotes_historical_yahoo('AXP', start, today) # print quotes fields = ['date', 'open', 'close', 'high', 'low', 'volume'] list1 = [] for i in range(0, len(quotes)): x = date.fromordinal(int(quotes[i][0])) y = datetime.strftime(x, '%Y-%m-%d') list1.append(y) quotesdf = pd.DataFrame(quotes, index=list1, columns=fields) quotesdf = quotesdf.drop(['date'], axis=1) quotesdf.close.plot() # quotesdf = pd.DataFrame(quotes, index=range(1, len(quotes) + 1), columns=fields) print quotesdf
#%% from pylab import figure, show #from matplotlib.finance import quotes_historical_yahoo from matplotlib.finance import _quotes_historical_yahoo from matplotlib.dates import YearLocator, MonthLocator, DateFormatter import datetime # get quotes date1 = datetime.date(2016, 1, 1) date2 = datetime.date(2017, 2, 27) quotes = _quotes_historical_yahoo('MSFT', date1, date2) if len(quotes) == 0: import sys sys.exit() # get dates and opens dates = [q[0] for q in quotes] opens = [q[1] for q in quotes] fig = figure() ax = fig.add_subplot(111) ax.plot_date(dates, opens, '-') # format the ticks daysFmt = DateFormatter('%Y-%m-%d') ax.xaxis.set_major_formatter(daysFmt) ax.autoscale_view() # format the coords message box def price(x): return '$%1.2f' % x
# -*- coding: utf-8 -*- from matplotlib.finance import _quotes_historical_yahoo import pandas as pd from datetime import date from datetime import datetime today = date.today() start = datetime(2014, 1, 1) end = datetime(2014, 12, 31) quotesMS14 = _quotes_historical_yahoo('MSFT', start, end) attributes = ['date', 'open', 'close', 'high', 'low', 'volume'] quotesdfMS14 = pd.DataFrame(quotesMS14, columns=attributes) # 为这部分数据将索引列更换为日期,并删除掉原先的date列,日期格式是2015年1月30日,显示为 ‘15/01/30’ list1 = [] for i in range(0, len(quotesMS14)): x = date.fromordinal(int(quotesMS14[i][0])) y = date.strftime(x, '%y/%m/%d') list1.append(y) quotesdfMS14.index = list1 quotesdfMS14 = quotesdfMS14.drop(['date'], axis=1) # 加上月份列 list1 = [] for i in range(0, len(quotesdfMS14)): list1.append(int(quotesdfMS14.index[i][3:5])) quotesdfMS14['month'] = list1 # print quotesdfMS14 # 绘制在2014年整年内(即1月1日至12月31日)微软股票每个月开盘平均价格的走势。
# -*- coding: utf-8 -*- from matplotlib.finance import _quotes_historical_yahoo from datetime import date import pandas as pd today = date.today() start = (today.year - 1, today.month, today.day) quotes = _quotes_historical_yahoo('IBM', start, today) df = pd.DataFrame(quotes) df.to_csv('stockIBM.csv') result = pd.read_csv('stockIBM.csv') print result
def get_hist_dow_jones_index(option_code,start_date,end_date): DJIA_Index = _quotes_historical_yahoo(option_code, start_date, end_date,asobject=True, adjusted=True) return DJIA_Index
# 链接:http://www.zhihu.com/question/27328283/answer/42741166 # 来源:知乎 # 著作权归作者所有,转载请联系作者获得授权。 # 美股适合此API,A股适合tushare 来获取 from pylab import figure, show from matplotlib.finance import _quotes_historical_yahoo from matplotlib.dates import YearLocator, MonthLocator, DateFormatter import datetime date1 = datetime.date(2012, 1, 1) date2 = datetime.date.today() daysFmt = DateFormatter('%m-%d-%Y') quotes = _quotes_historical_yahoo('BIDU', date1, date2) if len(quotes) == 0: raise SystemExit dates = [q[0] for q in quotes] opens = [q[1] for q in quotes] fig = figure() ax = fig.add_subplot(111) ax.plot_date(dates, opens, '-') # format the ticks ax.xaxis.set_major_formatter(daysFmt) ax.autoscale_view()
from pylab import figure, show from matplotlib.finance import _quotes_historical_yahoo from matplotlib.dates import YearLocator, MonthLocator, DateFormatter import datetime date1 = datetime.date( 2012, 1, 1 ) date2 = datetime.date( 2012, 11, 11 ) daysFmt = DateFormatter('%m-%d-%Y') quotes = _quotes_historical_yahoo('MSFT', date1, date2) if len(quotes) == 0: raise SystemExit #d,open,close,high,low,volumn dates = [q[0] for q in quotes] opens = [q[1] for q in quotes] fig = figure() ax = fig.add_subplot(111) ax.plot_date(dates, opens, '-') # format the ticks ax.xaxis.set_major_formatter(daysFmt) ax.autoscale_view() # format the coords message box def price(x): return '$%1.2f'%x ax.fmt_xdata = DateFormatter('%Y-%m-%d') ax.fmt_ydata = price ax.grid(True)
# -*- coding: utf-8 -*- from matplotlib.finance import _quotes_historical_yahoo from datetime import date import pandas as pd # 使得获取到的数据是从两年前的今天到现在的微软公司的股票历史数据(关于微软的公司代号,可以在该页面http://finance.yahoo.com/q/cp?s=^DJI 中找到) today = date.today() start = (today.year - 2, today.month, today.day) quotes = _quotes_historical_yahoo('MSFT', start, today) # 为微软的quotes数据添加属性名: attributes = ['date', 'open', 'close', 'high', 'low', 'volume'] quotesdf = pd.DataFrame(quotes, columns=attributes) # 为这部分数据将索引列更换为日期,并删除掉原先的date列,日期格式是2015年1月30日,显示为 ‘15/01/30’ list1 = [] for i in range(0, len(quotes)): x = date.fromordinal(int(quotes[i][0])) y = date.strftime(x, '%y/%m/%d') list1.append(y) quotesdf.index = list1 quotesdf = quotesdf.drop(['date'], axis=1) # 获取2014年1月30日到2月10日这期间微软更换CEO阶段股票的开盘价和收盘价 quotesdf.ix['14/01/30':'14/02/10', ['open', 'close']] # 查询在2014年下半年(即6月1日至12月31日)微软股票收盘价大于49美元的记录 quotesdf['14/06/01':'14/12/31'][quotesdf.close > 49] # 查询在2014年整年内(即1月1日至12月31日)微软股票收盘价最高的5天数据 print quotesdf['14/01/01':'14/12/31'].sort('close', ascending=False)[0:5]