# visualization/plotting.py import matplotlib.pyplot as plt import matplotlib.animation as animation import time from IPython.display import clear_output #to clear output each time we plot def plot_live_data(candles, trade_history): clear_output(wait=True) # Clear previous plot # Extract data for plotting times = [candle['timestamp'] for candle in candles] close_prices = [candle['close'] for candle in candles] # Create the figure and axes fig, ax = plt.subplots(figsize=(12, 6)) ax.plot(times, close_prices, label="Close Price", color='blue') # Plot trade signals buy_times = [trade['time'] * 1000 for trade in trade_history if trade['type'] == 'buy'] buy_prices = [trade['price'] for trade in trade_history if trade['type'] == 'buy'] sell_times = [trade['time'] * 1000 for trade in trade_history if trade['type'] == 'sell'] sell_prices = [trade['price'] for trade in trade_history if trade['type'] == 'sell'] ax.scatter(buy_times, buy_prices, color='green', marker='^', label='Buy') ax.scatter(sell_times, sell_prices, color='red', marker='v', label='Sell') # Format the plot ax.set_xlabel('Time') ax.set_ylabel('Price') ax.set_title('Live Trading Data with Signals') ax.legend() ax.grid(True) plt.tight_layout() plt.show()