show chart

This commit is contained in:
Dobromir Popov 2025-03-17 02:02:05 +02:00
parent 0b6bb000d2
commit 485c61cf8c

View File

@ -1883,6 +1883,9 @@ async def train_agent(agent, env, num_episodes=1000, max_steps_per_episode=1000)
agent.writer.add_scalar('PredictionLoss', prediction_loss, episode) agent.writer.add_scalar('PredictionLoss', prediction_loss, episode)
agent.writer.add_scalar('PredictionAccuracy', prediction_accuracy, episode) agent.writer.add_scalar('PredictionAccuracy', prediction_accuracy, episode)
# Add final chart for this episode
agent.add_chart_to_tensorboard(env, (episode + 1) * max_steps_per_episode)
logger.info(f"Episode {episode}: Reward={episode_reward:.2f}, Balance=${env.balance:.2f}, " logger.info(f"Episode {episode}: Reward={episode_reward:.2f}, Balance=${env.balance:.2f}, "
f"Win Rate={win_rate:.1f}%, Trades={len(env.trades)}, " f"Win Rate={win_rate:.1f}%, Trades={len(env.trades)}, "
f"Episode PnL=${env.episode_pnl:.2f}, Total PnL=${env.total_pnl:.2f}, " f"Episode PnL=${env.episode_pnl:.2f}, Total PnL=${env.total_pnl:.2f}, "
@ -2149,6 +2152,8 @@ async def live_trading(agent, env, exchange, demo=True):
return return
# Main trading loop # Main trading loop
step_counter = 0
while True: while True:
# Wait for the next candle (1 minute) # Wait for the next candle (1 minute)
await asyncio.sleep(5) # Check every 5 seconds await asyncio.sleep(5) # Check every 5 seconds
@ -2190,6 +2195,19 @@ async def live_trading(agent, env, exchange, demo=True):
if trade_analysis: if trade_analysis:
logger.info(f"Recent Performance: Win Rate={trade_analysis.get('uptrend_win_rate', 0):.1f}% in uptrends, " logger.info(f"Recent Performance: Win Rate={trade_analysis.get('uptrend_win_rate', 0):.1f}% in uptrends, "
f"{trade_analysis.get('downtrend_win_rate', 0):.1f}% in downtrends") f"{trade_analysis.get('downtrend_win_rate', 0):.1f}% in downtrends")
# Add chart to TensorBoard periodically
step_counter += 1
if step_counter % 10 == 0: # Update chart every 10 steps
agent.add_chart_to_tensorboard(env, step_counter)
# Also log current PnL and balance
agent.writer.add_scalar('Live/Balance', env.balance, step_counter)
agent.writer.add_scalar('Live/TotalPnL', env.total_pnl, step_counter)
agent.writer.add_scalar('Live/WinRate',
(env.win_count / (env.win_count + env.loss_count) * 100)
if (env.win_count + env.loss_count) > 0 else 0,
step_counter)
except KeyboardInterrupt: except KeyboardInterrupt:
logger.info("Live trading stopped by user") logger.info("Live trading stopped by user")