Я нажал на API для актуальных обновлений для крипто-финансовых данных, и я хочу, чтобы мой график обновлялся каждый раз, когда из API поступает новое извлечение (30 секунд).
Это встроено в функцию “тик », который тикает, когда он попадает в API.У меня был ряд проблем, когда я пытался это исправить, но в настоящее время он настроит график, построит 1 свечную диаграмму в кадре данных, затем не запустит остальную часть кода Python и допустит еще одну «галочку».Я полагаю, что из-за того, что я был ботом в бесконечном цикле, я не могу настроить свой сервер черточки.
def main(argv):
app = dash.Dash(__name__)
app.layout = html.Div(
html.Div(className='container-fluid', children=
[
html.Div(className='row',
children=html.Div(dcc.Graph(id='live-graph', animate=True), className='col s12 m12 l12')),
dcc.Interval(
id='graph-update',
interval=30000
)
]),
)
app.run_server(debug=True)
chart = BotChart("poloniex", "USDT_BTC", 10, False)
strategy = BotStrategy()
candlesticks = []
developingCandlestick = BotCandlestick()
while True:
try:
developingCandlestick.tick(chart.getCurrentPrice())
except urllib.error.URLError:
time.sleep(int(30))
developingCandlestick.tick(chart.getCurrentPrice())
if (developingCandlestick.isClosed()):
candlesticks.append(developingCandlestick)
strategy.tick(developingCandlestick)
developingCandlestick = BotCandlestick()
Lclose, Lhigh, Llow, LOpen, Ldates = developingCandlestick.returnLists()
print(Lclose)
stock_df = pd.DataFrame({'Date': Ldates,
'Open': LOpen,
'High': Lhigh,
'Low': Llow,
'Close': Lclose,
})
@app.callback(
Output('live-graph', 'figure'),
events=[Event('graph-update', 'interval')]
)
def graph_update():
data = {
'data': [{'close': stock_df.Close,
'decreasing': {'line': {'color': '#808080'}},
'high': stock_df.High,
'increasing': {'line': {'color': '#17BECF'}},
'low': stock_df.Low,
'name': 'Trace 1',
'open': stock_df.Open,
'showlegend': True,
'type': 'candlestick',
'uid': '59f45c30-fa3a-459e-bc6d-f4643f4ed55e',
'x': stock_df.Date,
'yaxis': 'y2'}],
'layout': {'legend': {'bgcolor': '#F5F6F9', 'font': {'color': '#4D5663'}},
'margin': {'b': 30, 'l': 30, 'r': 30, 't': 30},
'paper_bgcolor': '#F5F6F9',
'plot_bgcolor': '#F5F6F9',
'showlegend': True,
'titlefont': {'color': '#4D5663'},
'xaxis': {'anchor': 'y2',
'gridcolor': '#E1E5ED',
'rangeselector': {'bgcolor': 'rgba(150, 200, 250, 1)',
'buttons': [{'count': 1,
'label': '1m',
'step': 'month',
'stepmode': 'backward'},
{'count': 1,
'label': '1y',
'step': 'year',
'stepmode': 'backward'}],
'font': {'size': 13},
'visible': False,
'x': 0,
'y': 0.9},
'rangeslider': {'visible': False},
'showgrid': True,
'tickfont': {'color': '#4D5663'},
'title': '',
'titlefont': {'color': '#4D5663'},
'zerolinecolor': '#E1E5ED'},
'yaxis': {'gridcolor': '#E1E5ED',
'showgrid': True,
'showticklabels': False,
'tickfont': {'color': '#4D5663'},
'title': '',
'titlefont': {'color': '#4D5663'},
'zerolinecolor': '#E1E5ED'}}
}
return data
app.run_server(Debug=True)
time.sleep(int(30))
if __name__ == "__main__":
main(sys.argv[1:])
Я хочу настроить и обновлять сервер каждые 30 секунд, это ожидаемый результат.В настоящее время он настроит сервер, и поскольку API и остальные данные появляются после установки сервера, он не будет запускать остальную часть кода.Любая помощь приветствуется, и если вы думаете, что есть лучший вариант для отображения финансовых данных в реальном времени, я весь слух.Заранее спасибо!