diff --git a/crypto/gogo2/main.py b/crypto/gogo2/main.py index da21f5c..cd2e3db 100644 --- a/crypto/gogo2/main.py +++ b/crypto/gogo2/main.py @@ -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('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}, " f"Win Rate={win_rate:.1f}%, Trades={len(env.trades)}, " 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 # Main trading loop + step_counter = 0 + while True: # Wait for the next candle (1 minute) await asyncio.sleep(5) # Check every 5 seconds @@ -2190,6 +2195,19 @@ async def live_trading(agent, env, exchange, demo=True): if trade_analysis: 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") + + # 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: logger.info("Live trading stopped by user")