Create app.py
Browse files
app.py
ADDED
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
import ccxt
|
3 |
+
import pandas as pd
|
4 |
+
import plotly.graph_objects as go
|
5 |
+
from datetime import datetime, timedelta
|
6 |
+
import time
|
7 |
+
|
8 |
+
# Инициализация биржи
|
9 |
+
exchange = ccxt.binance()
|
10 |
+
|
11 |
+
def get_realtime_data(symbol='BTC/USDT', timeframe='1m'):
|
12 |
+
candles = exchange.fetch_ohlcv(symbol, timeframe)
|
13 |
+
df = pd.DataFrame(candles, columns=['timestamp', 'open', 'high', 'low', 'close', 'volume'])
|
14 |
+
df['timestamp'] = pd.to_datetime(df['timestamp'], unit='ms')
|
15 |
+
return df
|
16 |
+
|
17 |
+
def update_chart():
|
18 |
+
data = get_realtime_data()
|
19 |
+
fig = go.Figure(data=[go.Candlestick(x=data['timestamp'],
|
20 |
+
open=data['open'],
|
21 |
+
high=data['high'],
|
22 |
+
low=data['low'],
|
23 |
+
close=data['close'])])
|
24 |
+
fig.update_layout(title='BTC/USDT Real-Time Candlestick Chart', yaxis_title='Price')
|
25 |
+
return fig
|
26 |
+
|
27 |
+
# Настройка страницы Streamlit
|
28 |
+
st.set_page_config(page_title="Crypto Real-Time Chart", page_icon=":chart_with_upwards_trend:")
|
29 |
+
|
30 |
+
st.title('Crypto Real-Time Candlestick Chart')
|
31 |
+
|
32 |
+
# Создание пустого места для графика
|
33 |
+
chart_placeholder = st.empty()
|
34 |
+
|
35 |
+
# Флаг для остановки обновления
|
36 |
+
running = True
|
37 |
+
|
38 |
+
while running:
|
39 |
+
try:
|
40 |
+
chart = update_chart()
|
41 |
+
chart_placeholder.plotly_chart(chart)
|
42 |
+
time.sleep(60) # Обновляем каждую минуту
|
43 |
+
except Exception as e:
|
44 |
+
st.error(f"An error occurred: {e}")
|
45 |
+
running = False
|
46 |
+
|
47 |
+
# Если вы хотите добавить кнопку для остановки/запуска обновления, это можно сделать так:
|
48 |
+
# if st.button('Stop/Start'):
|
49 |
+
# running = not running
|