-
-
Save timkpaine/0f8b4157b09762e4a94960f3798e7a9b to your computer and use it in GitHub Desktop.
''' | |
To run: | |
python -m bokeh serve iex.py | |
''' | |
import io | |
import requests | |
import pandas as pd | |
import pyEX | |
from bokeh.models import ColumnDataSource, HoverTool | |
from bokeh.models.widgets import TextInput, Button | |
from bokeh.plotting import figure, curdoc | |
from bokeh.layouts import row, widgetbox | |
TICKER = "" | |
base = "https://api.iextrading.com/1.0/" | |
data = ColumnDataSource(dict(time=[], display_time=[], price=[])) | |
def get_last_price(symbol): | |
# endpoint = "tops/last" | |
return pd.DataFrame([pyEX.delayedQuote(symbol)]) | |
def update_ticker(): | |
global TICKER | |
TICKER = ticker_textbox.value | |
price_plot.title.text = "IEX Real-Time Price: " + ticker_textbox.value | |
data.data = dict(time=[], display_time=[], price=[]) | |
return | |
def update_price(): | |
new_price = get_last_price(symbol=TICKER) | |
data.stream(dict(time=new_price["delayedPriceTime"], | |
display_time=new_price["processedTime"], | |
price=new_price["delayedPrice"]), 10000) | |
return | |
hover = HoverTool(tooltips=[ | |
("Time", "@display_time"), | |
("IEX Real-Time Price", "@price") | |
]) | |
price_plot = figure(plot_width=800, | |
plot_height=400, | |
x_axis_type='datetime', | |
tools=[hover], | |
title="Real-Time Price Plot") | |
price_plot.line(source=data, x='time', y='price') | |
price_plot.xaxis.axis_label = "Time" | |
price_plot.yaxis.axis_label = "IEX Real-Time Price" | |
price_plot.title.text = "IEX Real Time Price: " + TICKER | |
ticker_textbox = TextInput(placeholder="Ticker") | |
update = Button(label="Update") | |
update.on_click(update_ticker) | |
inputs = widgetbox([ticker_textbox, update], width=200) | |
curdoc().add_root(row(inputs, price_plot, width=1600)) | |
curdoc().title = "Real-Time Price Plot from IEX" | |
curdoc().add_periodic_callback(update_price, 1000) |
Hi Tim,
I have been trying to run your app using both the python shells or Spyder and windows command line, but none of them work. I wonder if you can give me an advice on how to proceed.
In Spyder shell, I run "bokeh serve --show DataStream1.py" and it shows this error:
"bokeh serve --show DataStream1.py File "", line 1 bokeh serve --show DataStream1.py ^ SyntaxError: invalid syntax"
When I run it on the cmd as "bokeh serve --show DataStream1.py", it shows this error:
'bokeh' is not recognized as an internal or external command, operable program or batch file.
When I run it through cmd as "python -m bokeh serve DataStream1.py" it shows a long error ending as follows:
"ImportError: DLL load failed: The specified module could not be found."
Best,
Babak
tried bokeh serve iex.py from cmd and got the error that I didn't have the "PIL" module. I tried a pip install and couldn't find it. Must be referring to Python Imaging Library. There's no version for python 3 yet :/ Update: Never mind I pip installed Pillow instead