Trying to create a stock chart with Go and Dash. This code works fine just using plotly and go.
My code:
app = dash.Dash(__name__)
trace1 = go.Ohlc(
open=df['Open'],
high=df['High'],
low=df['Low'],
close=df['Close'],
xaxis='x',
yaxis='y',
name='Ohlc'
)
trace2 = go.Scatter(
y=df['Main'],
xaxis='x2',
yaxis='y2',
name='Main',
line=dict(
color='black',
width=5
),
)
trace3 = go.Scatter(
y=df['Turbo'],
xaxis='x2',
yaxis='y2',
name='Turbo',
line=dict(
color='blue',
width=3
),
)
trace4 = go.Bar(
y=df['Main'],
xaxis='x2',
yaxis='y2',
name='Hist',
marker = dict(
color=['green'
if (df['Main'].values[i]) > 0 and
(df['Main'].values[i-1]) > 0 and
(df['Main'].values[i-2]) > 0 and
(df['Main'].values[i-3]) > 0 and
(df['Main'].values[i-4]) > 0 and
(df['Main'].values[i-5]) > 0
else 'red'
if (df['Main'].values[i]) < 0 and
(df['Main'].values[i-1]) < 0 and
(df['Main'].values[i-2]) < 0 and
(df['Main'].values[i-3]) < 0 and
(df['Main'].values[i-4]) < 0 and
(df['Main'].values[i-5]) < 0
else 'grey'
for i, value in enumerate(df['Main'].values)
]
)
)
trace5 = go.Bar(x=df['Time'],
y=df['Volume'],
xaxis='x3',
yaxis='y3',
name='Volume',
marker = dict(color=[
'green'
if (value - df['Open'].values[i]) >= 0
else 'red'
for i, value in enumerate(df['Close'].values)
]
)
)
data = [trace1, trace2, trace3, trace4, trace5]
layout = go.Layout (
title='ES',
font = dict(family='Droid Sans Mono'),
margin = dict(
l=10,
r=10,
b=5,
t=10
),
xaxis = dict(
domain=[0, 1],
rangeslider=dict(visible=False)
),
yaxis = dict(
domain = [.55, 1]
),
xaxis2 = dict(
domain = [0, 1],
anchor = 'y2'
),
yaxis2 = dict(
domain = [.20, .50],
anchor = 'x2'
),
xaxis3 = dict(
domain = [0, 1],
anchor = 'y3'
),
yaxis3 = dict(
domain = [.10, .20],
anchor = 'x3'
)
)
fig = go.Figure(data=data, layout=layout)
app.Layout = html.Div([
dcc.Graph(fig)
])
if __name__ == '__main__':
app.run_server(debug=False) # (using Jupyter Notebook)
When trying to wrap in Dash, I get this error:
* Running on http://127.0.0.1:8050/ (Press CTRL+C to quit)
[2019-02-12 10:04:47,390] ERROR in app: Exception on / [GET]
Traceback (most recent call last):
File "C:\Users\jeff\Anaconda3\lib\site-packages\flask\app.py", line 1982, in wsgi_app
response = self.full_dispatch_request()
File "C:\Users\jeff\Anaconda3\lib\site-packages\flask\app.py", line 1607, in full_dispatch_request
self.try_trigger_before_first_request_functions()
File "C:\Users\jeff\Anaconda3\lib\site-packages\flask\app.py", line 1654, in try_trigger_before_first_request_functions
func()
File "C:\Users\jeff\Anaconda3\lib\site-packages\dash\dash.py", line 987, in _setup_server
self._validate_layout()
File "C:\Users\jeff\Anaconda3\lib\site-packages\dash\dash.py", line 964, in _validate_layout
''
dash.exceptions.NoLayoutException: The layout was `None` at the time that `run_server` was called. Make sure to set the `layout` attribute of your application before running the server.
127.0.0.1 - - [12/Feb/2019 10:04:47] "GET / HTTP/1.1" 500 -
[2019-02-12 10:04:47,465] ERROR in app: Exception on /favicon.ico [GET]
Traceback (most recent call last):
File "C:\Users\jeff\Anaconda3\lib\site-packages\flask\app.py", line 1982, in wsgi_app
response = self.full_dispatch_request()
File "C:\Users\jeff\Anaconda3\lib\site-packages\flask\app.py", line 1607, in full_dispatch_request
self.try_trigger_before_first_request_functions()
File "C:\Users\jeff\Anaconda3\lib\site-packages\flask\app.py", line 1654, in try_trigger_before_first_request_functions
func()
File "C:\Users\jeff\Anaconda3\lib\site-packages\dash\dash.py", line 987, in _setup_server
self._validate_layout()
File "C:\Users\jeff\Anaconda3\lib\site-packages\dash\dash.py", line 964, in _validate_layout
''
dash.exceptions.NoLayoutException: The layout was `None` at the time that `run_server` was called. Make sure to set the `layout` attribute of your application before running the server.
127.0.0.1 - - [12/Feb/2019 10:04:47] "GET /favicon.ico HTTP/1.1" 500 -