def home(): errors = [] if request.method == "GET": return render_template('enter_stock.html') else: symbol = request.form['symbol'] api_url = 'https://www.quandl.com/api/v1/datasets/WIKI/%s.json?api_key=8L5MpAx2n-9x-tTp5jw4' %symbol session = requests.Session() session.mount('http://', requests.adapters.HTTPAdapter(max_retries=3)) raw_data = session.get(api_url) #r = requests.get(api_url) data = raw_data.json() df = pd.DataFrame(data['data']) df.columns = data['column_names'] def datetime(x): return np.array(x, dtype=np.datetime64) p1 = figure(x_axis_type = "datetime") p1.title = "Data from Quandl WIKI set" p1.grid.grid_line_alpha=0.3 p1.xaxis.axis_label = 'Date' p1.yaxis.axis_label = 'Price' #p1.line(datetime(df['Date']), df['Open'], color='#A6CEE3', legend='open') if 'open' in request.form: p1.line(datetime(df['Date']), df['Open'], color='red', legend='open') if 'adjopen' in request.form: p1.line(datetime(df['Date']), df['Adj. Open'], color='green', legend='adj. open') if 'close' in request.form: p1.line(datetime(df['Date']), df['Close'], color='blue', legend='close') if 'adjclose' in request.form: p1.line(datetime(df['Date']), df['Adj. Close'], color='black', legend='adj. close') script, div = components(p1) return render_template('graph.html', symbol=symbol, script=script, div=div)
def graph(): app.vars['ticker'] = request.form['ticker'] # Pass the ticker to the Quandl URL to get the raw data. Use the key obtained from the Quandl website api_url = 'https://www.quandl.com/api/v1/datasets/WIKI/{}.json?api_key=XFqCpJrHuCwSuEs8h94z'.format(app.vars['ticker']) session = requests.Session() session.mount('http://', requests.adapters.HTTPAdapter(max_retries=3)) raw_data = session.get(api_url) # Get the raw json data a = raw_data.json() # Save the stocks data in pandas dataframe df = pandas.DataFrame(a['data'], columns=a['column_names']) # Convert data to datetime format df['Date'] = pandas.to_datetime(df['Date']) p = figure(title='Stock price variation for {}'.format(app.vars['ticker']), x_axis_label='date', x_axis_type='datetime') # Add a line to the figure corresponding to the type of data selected if request.form.get('Close'): p.line(x=df['Date'].values, y=df['Close'].values,line_width=2, legend='Close') if request.form.get('Adj. Close'): p.line(x=df['Date'].values, y=df['Adj. Close'].values,line_width=2, line_color="green", legend='Adj. Close') if request.form.get('Open'): p.line(x=df['Date'].values, y=df['Open'].values,line_width=2, line_color="red", legend='Open') if request.form.get('Adj. Open'): p.line(x=df['Date'].values, y=df['Adj. Open'].values,line_width=2, line_color="purple", legend='Adj. Open') # Use bokeh's components function to get the plot data (script) and the <div> tag (div) for the figure to be built script, div = components(p) return render_template('stocks.html', script=script, div=div)
def create_plot(stock,types_list): # Load data: api_url = 'https://www.quandl.com/api/v1/datasets/WIKI/%s.json?api_key=N_mE5xwVmBJ4hfvDMbsP' % stock session = requests.Session() session.mount('http://', requests.adapters.HTTPAdapter(max_retries=3)) raw_data = session.get(api_url) # Clean data: json_string = json.dumps(raw_data.json(), sort_keys=True) obj = json.loads(json_string) index_dates = pd.to_datetime(pd.Series(np.array(obj['data'])[:,0]),format="%Y-%m-%d") df = pd.DataFrame(np.array(obj['data'])[:,1:],dtype=float,columns=obj['column_names'][1:],index=index_dates) #print(df) # Create the plot: plot = figure(title='Data from Quandle WIKI set', x_axis_label='date', x_axis_type='datetime', y_axis_label='stock value') colors = ["red","blue","black","magenta"] i=0 for sel in types_list: plot.line(df.index,df[sel],color=colors[i],alpha=1., muted_color=colors[i], muted_alpha=0.2,legend=sel) i+=1 plot.legend.location = "top_left" plot.legend.click_policy="mute" return plot
def requests_retry_session(retries=5, backoff_factor=0.5, status_forcelist=(500, 502, 504), session=None): """Request retry session. :params retries: The total number of retry attempts to make. :params backoff_factor: Sleep between failed requests. {backoff factor} * (2 ** ({number of total retries} - 1)) :params status_forcelist: The HTTP response codes to retry on.. :params session: Session to use. """ session = session or requests.Session() retry = Retry( total=retries, read=retries, connect=retries, backoff_factor=backoff_factor, status_forcelist=status_forcelist, ) adapter = HTTPAdapter(max_retries=retry) session.mount('http://', adapter) session.mount('https://', adapter) return session
def get_data(ticker): api_url = 'https://www.quandl.com/api/v1/datasets/WIKI/%s.json?api_key=%s' % ( ticker, api_key) session = requests.Session() session.mount('http://', requests.adapters.HTTPAdapter(max_retries=3)) raw_data = session.get(api_url) data = raw_data.json() df = pd.DataFrame(data['data'], columns=data['column_names']) df['Date'] = pd.to_datetime(df['Date']) return df
def graph(): # if request.method == 'POST': app.vars['ticker'] = request.form['ticker'] ################################################################# ## IMPORTANT: Replace the section in api_url for <YOUR_API_KEY> with your own API Key. ################################################################# api_url = 'https://www.quandl.com/api/v1/datasets/WIKI/%s.json?api_key=<YOUR_API_KEY>' % app.vars[ 'ticker'] session = requests.Session() session.mount('http://', requests.adapters.HTTPAdapter(max_retries=3)) raw_data = session.get(api_url) # grab the data from API data = raw_data.json() # converts data to pandas DataFrame df = pandas.DataFrame(data['data'], columns=data['column_names']) df['Date'] = pandas.to_datetime(df['Date']) # Bokeh Plot Set up p = figure(title='Stock prices for %s' % app.vars['ticker'], x_axis_label='date', x_axis_type='datetime') # Bokeh Plot Boxes Ticked if request.form.get('Close'): p.line(x=df['Date'].values, y=df['Close'].values, line_width=2, legend='Close') if request.form.get('Adj. Close'): p.line(x=df['Date'].values, y=df['Adj. Close'].values, line_width=2, line_color="green", legend='Adj. Close') if request.form.get('Open'): p.line(x=df['Date'].values, y=df['Open'].values, line_width=2, line_color="red", legend='Open') if request.form.get('Adj. Open'): p.line(x=df['Date'].values, y=df['Adj. Open'].values, line_width=2, line_color="purple", legend='Adj. Open') script, div = components(p) return render_template('graph.html', script=script, div=div)
def graph(): stockName = request.form.get('ticker') closingPrice = request.form.get('closingPrice') adjClosingPrice = request.form.get('adjClosingPrice') openingPrice = request.form.get('openingPrice') adjOpeningPrice = request.form.get('adjOpeningPrice') URL = 'https://www.quandl.com/api/v1/datasets/WIKI/' + stockName + '.json?api_key=gVz7XbzeecyxHdkCn8yB' session = requests.Session() session.mount('http://', requests.adapters.HTTPAdapter(max_retries=3)) rawData = session.get(URL) rawDataJson = rawData.json() df = pandas.DataFrame(rawDataJson['data'], columns=rawDataJson['column_names']) df['Date'] = pandas.to_datetime(df['Date']) p = figure(title='Stock prices for ' + stockName, x_axis_label='date', x_axis_type='datetime') if closingPrice: p.line(x=df['Date'].values, y=df['Close'].values, line_width=2, line_color="black", legend='Close') if adjClosingPrice: p.line(x=df['Date'].values, y=df['Adj. Close'].values, line_width=2, line_color="green", legend='Adj. Close') if openingPrice: p.line(x=df['Date'].values, y=df['Open'].values, line_width=2, line_color="red", legend='Open') if adjOpeningPrice: p.line(x=df['Date'].values, y=df['Adj. Open'].values, line_width=2, line_color="purple", legend='Adj. Open') script, div = components(p) return render_template('graph.html', script=script, div=div)
def graph(): # if request.method == 'POST': # app.vars['ticker'] = request.form['ticker'] app.vars['start'] = request.form['start'] app.vars['end'] = request.form['end'] print(request.form['start']) print(request.form['end']) if (app.vars['start'] < '2010-01-01') or ( app.vars['end'] > '2018-08-01') or (app.vars['start'] > app.vars['end']): return render_template('error.html') else: # api_url = 'https://www.quandl.com/api/v1/datasets/WIKI/%s.json?api_key=gVz7XbzeecyxHdkCn8yB' % app.vars['ticker'] api_url = 'https://www.quandl.com/api/v3/datasets/ZILLOW/C25709_ZRISFRR.json?api_key=QT-coVZNkYPJCs6R9Tkj&start_date=%s&end_date=%s' % ( app.vars['start'], app.vars['end']) print(api_url) # api_url = 'https://www.quandl.com/api/v3/datasets/ZILLOW/C25709_ZRISFRR.json?api_key=QT-coVZNkYPJCs6R9Tkj&start_date=2010-11-01&end_date=2013-11-30' session = requests.Session() session.mount('http://', requests.adapters.HTTPAdapter(max_retries=3)) raw_data = session.get(api_url) a = raw_data.json() a1 = a['dataset'] df = pandas.DataFrame(a1['data'], columns=a1['column_names']) df['Date'] = pandas.to_datetime(df['Date']) p = figure(title='Home Value Index', x_axis_label='date', x_axis_type='datetime') # if request.form.get('Close'): # p.line(x=df['Date'].values, y=df['Close'].values,line_width=2, legend='Close') # if request.form.get('Adj. Close'): # p.line(x=df['Date'].values, y=df['Adj. Close'].values,line_width=2, line_color="green", legend='Adj. Close') # if request.form.get('Open'): # p.line(x=df['Date'].values, y=df['Open'].values,line_width=2, line_color="red", legend='Open') # if request.form.get('Adj. Open'): # p.line(x=df['Date'].values, y=df['Adj. Open'].values,line_width=2, line_color="purple", legend='Adj. Open') p.line(x=df['Date'].values, y=df['Value'].values, line_width=2, legend='Close') script, div = components(p) return render_template('graph.html', script=script, div=div)
def graph(): # if request.method == 'POST': app.vars['ticker'] = request.form['ticker'] api_url = 'https://www.quandl.com/api/v3/datasets/WIKI/%s/data.json?api_key=n36teYQNRWq1xmudWvm3' % app.vars[ 'ticker'] session = requests.Session() session.mount('http://', requests.adapters.HTTPAdapter(max_retries=3)) raw_data = session.get(api_url) a = raw_data.json() df = pandas.DataFrame(a['dataset_data']['data'], columns=a['dataset_data']['column_names']) df = df[['Date', 'Open', 'Adj. Open', 'Close', 'Adj. Close']] p = figure(title='Stock prices for %s' % app.vars['ticker'], x_axis_label='date', x_axis_type='datetime') if request.form.get('open'): p.line(x=df['Date'].values, y=df['Open'].values, line_width=2, line_color="red", legend_label='Open') if request.form.get('adj_open'): p.line(x=df['Date'].values, y=df['Adj. Open'].values, line_width=2, line_color="purple", legend_label='Adj. Open') if request.form.get('close'): p.line(x=df['Date'].values, y=df['Close'].values, line_width=2, line_color="blue", legend_label='Close') if request.form.get('adj_close'): p.line(x=df['Date'].values, y=df['Adj. Close'].values, line_width=2, line_color="green", legend_label='Adj. Close') script, div = components(p) return render_template('graph.html', script=script, div=div)
def graph(): app.vars['ticker'] = request.form['ticker'] api_url = 'https://www.quandl.com/api/v1/datasets/WIKI/%s.json?api_key=gVz7XbzeecyxHdkCn8yB' % app.vars[ 'ticker'] session = requests.Session() session.mount('http://', requests.adapters.HTTPAdapter(max_retries=3)) rawData = session.get(api_url) rawDataJason = rawData.json() df = pandas.DataFrame(rawDataJason['data'], columns=rawDataJason['column_names']) df['Date'] = pandas.to_datetime(df['Date']) p = figure(title='Stock prices for %s' % app.vars['ticker'], x_axis_label='date', x_axis_type='datetime') if request.form.get('Close'): p.line(x=df['Date'].values, y=df['Close'].values, line_width=2, legend='Close') if request.form.get('Adj. Close'): p.line(x=df['Date'].values, y=df['Adj. Close'].values, line_width=2, line_color="green", legend='Adj. Close') if request.form.get('Open'): p.line(x=df['Date'].values, y=df['Open'].values, line_width=2, line_color="red", legend='Open') if request.form.get('Adj. Open'): p.line(x=df['Date'].values, y=df['Adj. Open'].values, line_width=2, line_color="purple", legend='Adj. Open') script, div = components(p) return render_template('graph.html', script=script, div=div)
def graph(): if request.method == 'POST': app.vars['ticker'] = request.form['ticker'] app.vars['startdate'] = request.form['startdate'] app.vars['enddate'] = request.form['enddate'] print(app.vars['startdate'], app.vars['enddate']) #api_url = 'https://www.quandl.com/api/v3/datasets/NSE/%s.json?api_key=ENTER API KEY' % app.vars['ticker'] api_url = 'https://www.quandl.com/api/v3/datasets/NSE/%s.json?column_index=5&api_key=ENTER API KEY&start_date=%s&end_date=%s' % ( app.vars['ticker'], app.vars['startdate'], app.vars['enddate']) #api_url = 'https://www.quandl.com/api/v3/datasets/NSE/%s.json?api_key=ENTER API KEY&start_date=%s&end_date=%s' % (app.vars['ticker'], app.vars['startdate'], app.vars['enddate']) session = requests.Session() session.mount('http://', requests.adapters.HTTPAdapter(max_retries=3)) raw_data = session.get(api_url) print(type(raw_data)) a = raw_data.json() print(a) df = pandas.DataFrame(a['dataset']['data']) print(df) x1 = df[0].astype('datetime64[D]') x2 = df[1] print(x1) print(x2) #output_file("line.html") p = figure(title='Stock prices for %s' % app.vars['ticker'], x_axis_label='Date', x_axis_type='datetime', y_axis_label='Close', plot_width=400, plot_height=400) p.line(x1, x2, legend='Price Movement', line_width=2, color='red') show(p) resources = INLINE.render() script, div = components(p) return render_template('graph.html', script=script, div=div, resources=resources)
def graph(): app.vars['ticker'] = request.form['ticker'] #quandl.ApiConfig.api_key = "-kWt3pxKqsM8kzTKA-AY" ## Old Way api_url = 'https://www.quandl.com/api/v1/datasets/WIKI/%s.json?api_key=-kWt3pxKqsM8kzTKA-AY' % app.vars['ticker'] session = requests.Session() session.mount('http://', requests.adapters.HTTPAdapter(max_retries=3)) raw_data = session.get(api_url) a = raw_data.json() ## New Way #df = quandl.get("WIKI/%s" %app.vars['ticker'], rows=20) df = pandas.DataFrame(a['data'], columns=a['column_names']) df['Date'] = pandas.to_datetime(df['Date']) df = df.head(30) p = figure(title='The Stock prices for %s over the most recent 30 days' % app.vars['ticker'], x_axis_label='date', x_axis_type='datetime') if request.form.get('Close'): p.line(x=df['Date'].values, y=df['Close'].values,line_width=2, line_color= "purple",legend='Closing Price') #if request.form.get('Adj. Close'): #p.circle(x=df['Date'].values, y=df['Adj. Close'].values,line_width=2, line_color="red", legend='Adj. Close') #if request.form.get('Open'): #p.line(x=df['Date'].values, y=df['Open'].values,line_width=2, line_color="black", legend='Open') #if request.form.get('Adj. Open'): #p.circle(x=df['Date'].values, y=df['Adj. Open'].values,line_width=2, line_color="brown", legend='Adj. Open') script, div = components(p) return render_template('plot.html', script=script, div=div)
def graph(): if request.method == 'GET': return render_template('graph.html') else: ticker = request.form['ticker'] start_date = request.form['start_date'] end_date = request.form['end_date'] form_open = '' adj_open = '' high = '' adj_high = '' low = '' adj_low = '' close = '' adj_close = '' api_url = '''https://www.quandl.com/api/v3/datasets/WIKI/%s/data.json?api_key=XxmSiACUars8yTcqLQhX&start_date=%s&end_date=%s''' % ( ticker, start_date, end_date) session = requests.Session() session.mount('https://', requests.adapters.HTTPAdapter(max_retries=3)) raw_data = session.get(api_url) raw_data = raw_data.json() ticker_df = pandas.DataFrame( raw_data['dataset_data']['data'], columns=raw_data['dataset_data']['column_names']) ticker_df['Date'] = pandas.to_datetime(ticker_df['Date']) plot = figure(title='Data from Quandle for %s' % ticker, x_axis_label='date', x_axis_type='datetime') if request.form.get('open'): plot.line(x=ticker_df['Date'].values, y=ticker_df['Open'].values, line_width=2, line_color=Category20[20][0], legend='Open') form_open = 'checked' if request.form.get('adj_open'): plot.line(x=ticker_df['Date'].values, y=ticker_df['Adj. Open'].values, line_width=2, line_color=Category20[20][1], legend='Adj. Open') adj_open = 'checked' if request.form.get('high'): plot.line(x=ticker_df['Date'].values, y=ticker_df['High'].values, line_width=2, line_color=Category20[20][2], legend='High') high = 'checked' if request.form.get('adj_high'): plot.line(x=ticker_df['Date'].values, y=ticker_df['Adj. High'].values, line_width=2, line_color=Category20[20][3], legend='Adj. High') adj_high = 'checked' if request.form.get('low'): plot.line(x=ticker_df['Date'].values, y=ticker_df['Low'].values, line_width=2, line_color=Category20[20][4], legend='Low') low = 'checked' if request.form.get('adj_low'): plot.line(x=ticker_df['Date'].values, y=ticker_df['Adj. Low'].values, line_width=2, line_color=Category20[20][5], legend='Adj. Low') adj_low = 'checked' if request.form.get('close'): plot.line(x=ticker_df['Date'].values, y=ticker_df['Close'].values, line_width=2, line_color=Category20[20][10], legend='Close') close = 'checked' if request.form.get('adj_close'): plot.line(x=ticker_df['Date'].values, y=ticker_df['Adj. Close'].values, line_width=2, line_color=Category20[20][11], legend='Adj. Close') adj_close = 'checked' script, div = components(plot) return render_template('graph.html', ticker=ticker, end=end_date, start=start_date, script=script, div=div, form_open=form_open, adj_open=adj_open, high=high, adj_high=adj_high, low=low, adj_low=adj_low, close=close, adj_close=adj_close)