(feat) market activity improvements

This commit is contained in:
drupman
2023-09-15 23:49:10 -03:00
parent 6293cc92ad
commit 08d9e53a71

View File

@@ -293,9 +293,8 @@ if selected_db is not None:
value=round(sell_trades_amount * avg_sell_price, 2))
st.plotly_chart(pnl_over_time(strategy_data_filtered.trade_fill), use_container_width=True)
st.divider()
st.subheader("🕯️ Candlestick")
if strategy_data_filtered.market_data is not None:
st.subheader("💱 Market activity")
if "Error" not in selected_db.status["market_data"] and strategy_data_filtered.market_data is not None:
with st.expander("Market activity", expanded=True):
col1, col2, col3 = st.columns([1, 1, 2])
with col1:
@@ -303,26 +302,35 @@ if selected_db is not None:
with col2:
rows_per_page = st.number_input("Candles per Page", value=100, min_value=1, max_value=5000)
with col3:
total_rows = len(strategy_data_filtered.get_market_data_resampled(interval=f"{intervals[interval]}S"))
total_rows = len(
strategy_data_filtered.get_market_data_resampled(interval=f"{intervals[interval]}S"))
total_pages = math.ceil(total_rows / rows_per_page)
if total_pages > 1:
selected_page = st.select_slider("Select page", list(range(total_pages)), key="page_slider")
selected_page = st.select_slider("Select page", list(range(total_pages)), total_pages - 1,
key="page_slider")
else:
selected_page = 0
start_idx = selected_page * rows_per_page
end_idx = start_idx + rows_per_page
candles_df = strategy_data_filtered.get_market_data_resampled(interval=f"{intervals[interval]}S").iloc[
start_idx:end_idx]
start_time_page = candles_df.index.min()
end_time_page = candles_df.index.max()
page_data_filtered = single_market_strategy_data.get_filtered_strategy_data(start_time_page, end_time_page)
cg = CandlesGraph(candles_df, show_volume=False, extra_rows=2)
cg.add_buy_trades(page_data_filtered.buys)
cg.add_sell_trades(page_data_filtered.sells)
cg.add_pnl(page_data_filtered, row=2)
cg.add_base_inventory_change(page_data_filtered, row=3)
fig = cg.figure()
st.plotly_chart(fig, use_container_width=True)
start_idx = selected_page * rows_per_page
end_idx = start_idx + rows_per_page
candles_df = strategy_data_filtered.get_market_data_resampled(
interval=f"{intervals[interval]}S").iloc[
start_idx:end_idx]
start_time_page = candles_df.index.min()
end_time_page = candles_df.index.max()
page_data_filtered = single_market_strategy_data.get_filtered_strategy_data(start_time_page,
end_time_page)
col1, col2 = st.columns([5.5, 1.5])
with col1:
cg = CandlesGraph(candles_df, show_volume=False, extra_rows=2)
cg.add_buy_trades(page_data_filtered.buys)
cg.add_sell_trades(page_data_filtered.sells)
cg.add_pnl(page_data_filtered, row=2)
cg.add_base_inventory_change(page_data_filtered, row=3)
fig = cg.figure()
st.plotly_chart(fig, use_container_width=True)
with col2:
st.plotly_chart(intraday_performance(page_data_filtered.trade_fill), use_container_width=True)
st.plotly_chart(top_n_trades(page_data_filtered.trade_fill.net_realized_pnl), use_container_width=True)
else:
st.warning("Market data is not available so the candles graph is not going to be rendered. "
"Make sure that you are using the latest version of Hummingbot and market data recorder activated.")