/
maxminaev
/
trading-bot
Обзор
Документация
Войти
/
maxminaev
/
trading-bot
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
visualization.py
46 строк
2 KB
Max
Improved backtester class and Visualization
21 мар 2025, 16:42
21 мар 2025, 16:42
0e6b83d
Код
Авторство
О чём код?
import matplotlib.pyplot as plt import matplotlib.patches as mpatches import seaborn as sns class Visualization: @staticmethod def plot_ma_strategy(df, buy_signals, sell_signals, filename=None): fig, ax = plt.subplots(figsize=(12, 6)) sns.set_style("whitegrid") #set style of plot sns.lineplot(x=df["Date"], y=df["Close"], color='blue', label="Close Price") sns.lineplot(x=df["Date"], y=df["Short_MA"], color='green', label="Short MA (10)") sns.lineplot(x=df["Date"], y=df["Long_MA"], color='red', label="Long MA (50)") if "Portfolio_Value" in df.columns: sns.lineplot(x=df["Date"], y=df["Portfolio_Value"], color='black', label="Portfolio Value") # Plot Buy signals (Green Dots) plt.scatter(buy_signals["Date"], buy_signals["Close"], color="green", marker="^", label="Buy Signal", s=100) # Plot Sell signals (Red Dots) plt.scatter(sell_signals["Date"], sell_signals["Close"], color="red", marker="v", label="Sell Signal", s=100) # Manually create legend handles for buy/sell signals buy_patch = mpatches.Patch(color="green", label="Buy Signal") sell_patch = mpatches.Patch(color="red", label="Sell Signal") plt.xlabel("Date") plt.ylabel("Stock Price") plt.legend(handles=[ax.lines[0], ax.lines[1], ax.lines[2], buy_patch, sell_patch]) plt.title("Stock Prices") if filename: plt.savefig(filename, dpi=300) plt.show() @staticmethod def plot_backtesting_results(df): plt.figure(figsize=(12, 6)) sns.lineplot(x=df["Date"], y=df["Close"], label="Stock Price", color="blue") sns.lineplot(x=df["Date"], y=df["Portfolio_Value"], label="Strategy Value", color="green") plt.title("Backtesting Results") plt.xlabel("Date") plt.ylabel("Value ($)") plt.legend() plt.show()