feat: add wallet to dataframe conversion
This commit is contained in:
@@ -55,6 +55,7 @@ class BacktestContentTypeIcomplete(TypedDict, total=False):
|
|||||||
backtest_start_time: int
|
backtest_start_time: int
|
||||||
backtest_end_time: int
|
backtest_end_time: int
|
||||||
run_id: str
|
run_id: str
|
||||||
|
wallet_summary: DataFrame
|
||||||
|
|
||||||
|
|
||||||
class BacktestContentType(BacktestContentTypeIcomplete, total=True):
|
class BacktestContentType(BacktestContentTypeIcomplete, total=True):
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ from freqtrade.mixins import LoggingMixin
|
|||||||
from freqtrade.optimize.backtest_caching import get_strategy_run_id
|
from freqtrade.optimize.backtest_caching import get_strategy_run_id
|
||||||
from freqtrade.optimize.bt_progress import BTProgress
|
from freqtrade.optimize.bt_progress import BTProgress
|
||||||
from freqtrade.optimize.optimize_reports import (
|
from freqtrade.optimize.optimize_reports import (
|
||||||
|
convert_bt_wallet_collection,
|
||||||
generate_backtest_stats,
|
generate_backtest_stats,
|
||||||
generate_rejected_signals,
|
generate_rejected_signals,
|
||||||
generate_trade_signal_candles,
|
generate_trade_signal_candles,
|
||||||
@@ -1752,6 +1753,7 @@ class Backtesting:
|
|||||||
"canceled_entry_orders": self.canceled_entry_orders,
|
"canceled_entry_orders": self.canceled_entry_orders,
|
||||||
"replaced_entry_orders": self.replaced_entry_orders,
|
"replaced_entry_orders": self.replaced_entry_orders,
|
||||||
"final_balance": self.wallets.get_total(self.strategy.config["stake_currency"]),
|
"final_balance": self.wallets.get_total(self.strategy.config["stake_currency"]),
|
||||||
|
"wallet_summary": convert_bt_wallet_collection(self.wallet_captures),
|
||||||
}
|
}
|
||||||
|
|
||||||
def backtest_one_strategy(
|
def backtest_one_strategy(
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ from freqtrade.optimize.optimize_reports.bt_output import (
|
|||||||
)
|
)
|
||||||
from freqtrade.optimize.optimize_reports.bt_storage import store_backtest_results
|
from freqtrade.optimize.optimize_reports.bt_storage import store_backtest_results
|
||||||
from freqtrade.optimize.optimize_reports.optimize_reports import (
|
from freqtrade.optimize.optimize_reports.optimize_reports import (
|
||||||
|
convert_bt_wallet_collection,
|
||||||
generate_all_periodic_breakdown_stats,
|
generate_all_periodic_breakdown_stats,
|
||||||
generate_backtest_stats,
|
generate_backtest_stats,
|
||||||
generate_daily_stats,
|
generate_daily_stats,
|
||||||
|
|||||||
@@ -29,6 +29,20 @@ from freqtrade.util import decimals_per_coin, fmt_coin, format_duration, get_dry
|
|||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
def convert_bt_wallet_collection(wallet_captures: list[tuple]) -> DataFrame:
|
||||||
|
"""
|
||||||
|
Convert the wallet capture list to a DataFrame.
|
||||||
|
Assumes the wallet_captures list contains tuples with the following structure:
|
||||||
|
(date, currency, price, balance).
|
||||||
|
"""
|
||||||
|
if len(wallet_captures) == 0:
|
||||||
|
return []
|
||||||
|
return DataFrame(
|
||||||
|
wallet_captures,
|
||||||
|
columns=["date", "currency", "price", "balance"],
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def generate_trade_signal_candles(
|
def generate_trade_signal_candles(
|
||||||
preprocessed_df: dict[str, DataFrame], bt_results: BacktestContentType, date_col: str
|
preprocessed_df: dict[str, DataFrame], bt_results: BacktestContentType, date_col: str
|
||||||
) -> dict[str, DataFrame]:
|
) -> dict[str, DataFrame]:
|
||||||
|
|||||||
Reference in New Issue
Block a user