Dash example simple


In [1]:
# Import required libraries

import dash
import dash_core_components as core
import dash_html_components as html
from dash.dependencies import Input, Output
import quantmod as qm

In [ ]:
# Create layout

# Dash app instantiation
app = dash.Dash("Stock market app")

# External CSS
app.css.append_css({
    'external_url': (
        'https://rawgit.com/chriddyp/0247653a7c52feb4c48437e1c1837f75'
        '/raw/a68333b876edaf62df2efa7bac0e9b3613258851/dash.css'
    )
})

# Create app layout
app.layout = html.Div(
    [
        html.H1('Quantmod Demo | 5-minute App'),
        # Dropdown for stocks
        core.Dropdown(
            id='dropdown',
            options=[
                dict(label='PowerShares QQQ Trust Series 1', value='QQQ'),
                dict(label='SPDR S&P 500 ETF Trust', value='SPY'),
                dict(label='Apple Inc', value='AAPL'),
                dict(label='Goldman Sachs Group Inc', value='GS'),
            ],
            value='SPY',
        ),
        # Dropdown for indicators
        core.Dropdown(
            id='multi',
            options=[
                dict(label='EMA', value='EMA'),
                dict(label='RSI', value='RSI'),
                dict(label='MACD', value='MACD'),
                dict(label='BBANDS', value='BBANDS'),
            ],
            multi=True,
            value=[],
        ),
        # Graph output
        core.Graph(id='output')
    ]
)

In [ ]:
# Setup callbacks

# Graph is modified by 2 inputs
@app.callback(Output('output', 'figure'), [Input('dropdown', 'value'),
                                       Input('multi', 'value')])
def update_graph_from_dropdown(dropdown, multi):
    # Get Quantmod Chart
    ch = qm.get_symbol(dropdown, start='2016/01/01')

    if 'EMA' in multi:
        ch.add_EMA()
    if 'RSI' in multi:
        ch.add_RSI()
    if 'MACD' in multi:
        ch.add_MACD()
    if 'BBANDS' in multi:
        ch.add_BBANDS()

    # Return plot as figure
    return ch.to_figure()

In [ ]:
if __name__ == '__main__':
    app.run_server(debug=True, port=4001)