context charts added again
This commit is contained in:
parent
c96e2223ee
commit
cb3ec0602c
116
realtime.py
116
realtime.py
@ -1661,7 +1661,7 @@ class RealTimeChart:
|
||||
interval = interval_data.get('interval', 1)
|
||||
logger.debug(f"Updating chart with interval {interval}")
|
||||
|
||||
# Get candlesticks data
|
||||
# Get candlesticks data for the selected interval
|
||||
try:
|
||||
df = self.tick_storage.get_candles(interval_seconds=interval)
|
||||
if df.empty and self.ohlcv_cache[f'{interval}s' if interval < 60 else '1m'] is not None:
|
||||
@ -1670,15 +1670,56 @@ class RealTimeChart:
|
||||
logger.error(f"Error getting candles: {str(e)}")
|
||||
df = pd.DataFrame()
|
||||
|
||||
# Create basic layout
|
||||
# Get data for other timeframes (1m, 1h, 1d)
|
||||
df_1m = None
|
||||
df_1h = None
|
||||
df_1d = None
|
||||
|
||||
try:
|
||||
# Get 1m candles
|
||||
if self.ohlcv_cache['1m'] is not None and not self.ohlcv_cache['1m'].empty:
|
||||
df_1m = self.ohlcv_cache['1m'].copy()
|
||||
else:
|
||||
df_1m = self.tick_storage.get_candles(interval_seconds=60)
|
||||
|
||||
# Get 1h candles
|
||||
if self.ohlcv_cache['1h'] is not None and not self.ohlcv_cache['1h'].empty:
|
||||
df_1h = self.ohlcv_cache['1h'].copy()
|
||||
else:
|
||||
df_1h = self.tick_storage.get_candles(interval_seconds=3600)
|
||||
|
||||
# Get 1d candles
|
||||
if self.ohlcv_cache['1d'] is not None and not self.ohlcv_cache['1d'].empty:
|
||||
df_1d = self.ohlcv_cache['1d'].copy()
|
||||
else:
|
||||
df_1d = self.tick_storage.get_candles(interval_seconds=86400)
|
||||
|
||||
# Limit the number of candles to display
|
||||
if df_1m is not None and not df_1m.empty:
|
||||
df_1m = df_1m.tail(100)
|
||||
if df_1h is not None and not df_1h.empty:
|
||||
df_1h = df_1h.tail(48) # Last 2 days
|
||||
if df_1d is not None and not df_1d.empty:
|
||||
df_1d = df_1d.tail(30) # Last month
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Error getting additional timeframes: {str(e)}")
|
||||
|
||||
# Create layout with 5 rows (main chart, volume, 1m, 1h, 1d)
|
||||
fig = make_subplots(
|
||||
rows=2, cols=1,
|
||||
vertical_spacing=0.08,
|
||||
subplot_titles=(f'{self.symbol} Price ({interval}s)', 'Volume'),
|
||||
row_heights=[0.8, 0.2]
|
||||
rows=5, cols=1,
|
||||
vertical_spacing=0.03,
|
||||
subplot_titles=(
|
||||
f'{self.symbol} Price ({interval}s)',
|
||||
'Volume',
|
||||
'1-Minute Chart',
|
||||
'1-Hour Chart',
|
||||
'1-Day Chart'
|
||||
),
|
||||
row_heights=[0.4, 0.15, 0.15, 0.15, 0.15]
|
||||
)
|
||||
|
||||
# Add candlestick chart
|
||||
# Add candlestick chart for main timeframe
|
||||
if not df.empty and 'open' in df.columns:
|
||||
# Candlestick chart
|
||||
fig.add_trace(
|
||||
@ -1717,6 +1758,54 @@ class RealTimeChart:
|
||||
row=2, col=1
|
||||
)
|
||||
|
||||
# Add 1m chart
|
||||
if df_1m is not None and not df_1m.empty and 'open' in df_1m.columns:
|
||||
fig.add_trace(
|
||||
go.Candlestick(
|
||||
x=df_1m.index,
|
||||
open=df_1m['open'],
|
||||
high=df_1m['high'],
|
||||
low=df_1m['low'],
|
||||
close=df_1m['close'],
|
||||
name='1m',
|
||||
showlegend=False
|
||||
),
|
||||
row=3, col=1
|
||||
)
|
||||
fig.update_xaxes(title_text="", row=3, col=1)
|
||||
|
||||
# Add 1h chart
|
||||
if df_1h is not None and not df_1h.empty and 'open' in df_1h.columns:
|
||||
fig.add_trace(
|
||||
go.Candlestick(
|
||||
x=df_1h.index,
|
||||
open=df_1h['open'],
|
||||
high=df_1h['high'],
|
||||
low=df_1h['low'],
|
||||
close=df_1h['close'],
|
||||
name='1h',
|
||||
showlegend=False
|
||||
),
|
||||
row=4, col=1
|
||||
)
|
||||
fig.update_xaxes(title_text="", row=4, col=1)
|
||||
|
||||
# Add 1d chart
|
||||
if df_1d is not None and not df_1d.empty and 'open' in df_1d.columns:
|
||||
fig.add_trace(
|
||||
go.Candlestick(
|
||||
x=df_1d.index,
|
||||
open=df_1d['open'],
|
||||
high=df_1d['high'],
|
||||
low=df_1d['low'],
|
||||
close=df_1d['close'],
|
||||
name='1d',
|
||||
showlegend=False
|
||||
),
|
||||
row=5, col=1
|
||||
)
|
||||
fig.update_xaxes(title_text="", row=5, col=1)
|
||||
|
||||
# Add trading info annotation if available
|
||||
if hasattr(self, 'current_signal') and self.current_signal:
|
||||
signal_color = "#33DD33" if self.current_signal == "BUY" else "#FF4444" if self.current_signal == "SELL" else "#BBBBBB"
|
||||
@ -1750,16 +1839,25 @@ class RealTimeChart:
|
||||
title_text=f"{self.symbol} Real-Time Data",
|
||||
title_x=0.5,
|
||||
xaxis_rangeslider_visible=False,
|
||||
height=700,
|
||||
height=1000, # Increased height to accommodate all charts
|
||||
template='plotly_dark',
|
||||
paper_bgcolor='rgba(0,0,0,0)',
|
||||
plot_bgcolor='rgba(25,25,50,1)'
|
||||
)
|
||||
|
||||
# Update axes styling
|
||||
# Update axes styling for all subplots
|
||||
fig.update_xaxes(showgrid=True, gridwidth=1, gridcolor='rgba(128,128,128,0.2)')
|
||||
fig.update_yaxes(showgrid=True, gridwidth=1, gridcolor='rgba(128,128,128,0.2)')
|
||||
|
||||
# Hide rangesliders for all candlestick charts
|
||||
fig.update_layout(
|
||||
xaxis_rangeslider_visible=False,
|
||||
xaxis2_rangeslider_visible=False,
|
||||
xaxis3_rangeslider_visible=False,
|
||||
xaxis4_rangeslider_visible=False,
|
||||
xaxis5_rangeslider_visible=False
|
||||
)
|
||||
|
||||
return fig
|
||||
|
||||
except Exception as e:
|
||||
|
Loading…
x
Reference in New Issue
Block a user