das-plotly подключение данных напрямую
Всем привет) немного играясь с даш, я наткнулся на такую вещь. Из вопроса ранее (https://ru.stackoverflow.com/questions/1293151/dashplotly-обновление-графика-в-режиме-реального-времени) вытекает одна проблема : обновляемых данных настолько много в базе, что даш начинает тупить... Решил подключить данные напрямую, однако из получаемого кортежа информация не обновляется (объекты не обновляются). Хотя через обычный принт данные выходят. Немогу понять что я не так сделал..
Вот код :
import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output
import plotly.graph_objs as go
from datetime import datetime
import MetaTrader5 as mt5
mt5.initialize()
app = dash.Dash(__name__)
points = 0
def test():
global points
points += 1
def get_value(n_intervals):
tick = mt5.symbol_info_tick('EURUSD')
return tick
def serve_layout():
return html.Div(
children=[
html.H4(children='Доска'),
html.Div(id='my-id', children='''EURUSD'''),
dcc.Graph(id='example-graph', animate=True, responsive=True),
dcc.Interval(
id='interval-component',
interval=3 * 1000,
n_intervals=0,
),
],
)
app.layout = serve_layout
@app.callback(
Output('example-graph','figure'),
[Input('interval-component', 'n_intervals')])
def update_graph(n_intervals):
tick = get_value(n_intervals)
test()
return \
{
'data': [
{'x': tick.time_msc, 'y': tick.bid, 'type': 'line', 'name': 'BID'},
{'x': tick.time_msc, 'y': tick.ask, 'type': 'line', 'name': 'ASK'},
],
'layout': go.Layout(xaxis=tuple(range=[min(tick.time_msc),max(tick.time_msc)]),yaxis=dict(range=[min(tick.bid),max(tick.bid)]),)
}
if __name__ == '__main__':
app.run_server(debug=True)
Может кто подскажет где ошибка или какое-то другое решение ) Всем замечательного и продуктивного лета)