From 81672da57ba043ed9789a8f94fbfea6aceee84da Mon Sep 17 00:00:00 2001 From: froggleston Date: Sat, 2 Sep 2023 12:44:23 +0100 Subject: [PATCH 1/3] Fix nulls in indicator list output and add expectancy ratio per entry tag in analysis group 0 output --- freqtrade/data/entryexitanalysis.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/freqtrade/data/entryexitanalysis.py b/freqtrade/data/entryexitanalysis.py index db3a7d3a4..c72def0ac 100644 --- a/freqtrade/data/entryexitanalysis.py +++ b/freqtrade/data/entryexitanalysis.py @@ -119,8 +119,15 @@ def _do_group_table_output(bigdf, glist, csv_path: Path, to_csv=False, ): new['avg_win'] = (new['profit_abs_wins'] / new.iloc[:, 1]).fillna(0) new['avg_loss'] = (new['profit_abs_loss'] / new.iloc[:, 2]).fillna(0) - new.columns = ['total_num_buys', 'wins', 'losses', 'profit_abs_wins', 'profit_abs_loss', - 'profit_tot', 'wl_ratio_pct', 'avg_win', 'avg_loss'] + new['exp_ratio'] = ( + ( + (1 + (new['avg_win'] / abs(new['avg_loss']))) * (new['wl_ratio_pct']/100) + ) - 1).fillna(0) + + new.columns = ['total_num_buys', 'wins', 'losses', + 'profit_abs_wins', 'profit_abs_loss', + 'profit_tot', 'wl_ratio_pct', + 'avg_win', 'avg_loss', 'exp_ratio'] sortcols = ['total_num_buys'] @@ -204,6 +211,7 @@ def prepare_results(analysed_trades, stratname, timerange=None): res_df = pd.DataFrame() for pair, trades in analysed_trades[stratname].items(): + trades.dropna(subset['close_date'], inplace=True) res_df = pd.concat([res_df, trades], ignore_index=True) res_df = _select_rows_within_dates(res_df, timerange) From 250e00e6c7ef1fafa91c469622fe7f459a40eeb3 Mon Sep 17 00:00:00 2001 From: froggleston Date: Sat, 2 Sep 2023 12:52:05 +0100 Subject: [PATCH 2/3] Fix dropna subset --- freqtrade/data/entryexitanalysis.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/data/entryexitanalysis.py b/freqtrade/data/entryexitanalysis.py index c72def0ac..fff051f1c 100644 --- a/freqtrade/data/entryexitanalysis.py +++ b/freqtrade/data/entryexitanalysis.py @@ -211,7 +211,7 @@ def prepare_results(analysed_trades, stratname, timerange=None): res_df = pd.DataFrame() for pair, trades in analysed_trades[stratname].items(): - trades.dropna(subset['close_date'], inplace=True) + trades.dropna(subset=['close_date'], inplace=True) res_df = pd.concat([res_df, trades], ignore_index=True) res_df = _select_rows_within_dates(res_df, timerange) From 925e18368a8eb0f36f50d08dc15af22fb78c66a0 Mon Sep 17 00:00:00 2001 From: froggleston Date: Sat, 2 Sep 2023 15:05:34 +0100 Subject: [PATCH 3/3] Fix linting a.k.a. Maybe one day, flake8 will like me --- freqtrade/data/entryexitanalysis.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/freqtrade/data/entryexitanalysis.py b/freqtrade/data/entryexitanalysis.py index fff051f1c..ac5893585 100644 --- a/freqtrade/data/entryexitanalysis.py +++ b/freqtrade/data/entryexitanalysis.py @@ -121,7 +121,7 @@ def _do_group_table_output(bigdf, glist, csv_path: Path, to_csv=False, ): new['exp_ratio'] = ( ( - (1 + (new['avg_win'] / abs(new['avg_loss']))) * (new['wl_ratio_pct']/100) + (1 + (new['avg_win'] / abs(new['avg_loss']))) * (new['wl_ratio_pct'] / 100) ) - 1).fillna(0) new.columns = ['total_num_buys', 'wins', 'losses',