Возникли проблемы при обновлении графика живой свечи с использованием тире - PullRequest
0 голосов
/ 30 декабря 2018

Я нажал на 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 и остальные данные появляются после установки сервера, он не будет запускать остальную часть кода.Любая помощь приветствуется, и если вы думаете, что есть лучший вариант для отображения финансовых данных в реальном времени, я весь слух.Заранее спасибо!

...