From 986bc63e54f9c6953a6bb2064e0fa892eff01339 Mon Sep 17 00:00:00 2001 From: robcaulk Date: Tue, 21 Feb 2023 21:23:58 +0100 Subject: [PATCH] raise OperationalException if latest historical data candle is older than earliest dataprovider candle --- freqtrade/freqai/data_drawer.py | 34 +++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/freqtrade/freqai/data_drawer.py b/freqtrade/freqai/data_drawer.py index 1317ba6d3..883b9d94b 100644 --- a/freqtrade/freqai/data_drawer.py +++ b/freqtrade/freqai/data_drawer.py @@ -627,12 +627,12 @@ class FreqaiDataDrawer: for pair in dk.all_pairs: for tf in feat_params.get("include_timeframes"): - + hist_df = history_data[pair][tf] # check if newest candle is already appended df_dp = strategy.dp.get_pair_dataframe(pair, tf) if len(df_dp.index) == 0: continue - if str(history_data[pair][tf].iloc[-1]["date"]) == str( + if str(hist_df.iloc[-1]["date"]) == str( df_dp.iloc[-1:]["date"].iloc[-1] ): continue @@ -640,28 +640,30 @@ class FreqaiDataDrawer: try: index = ( df_dp.loc[ - df_dp["date"] == history_data[pair][tf].iloc[-1]["date"] + df_dp["date"] == hist_df.iloc[-1]["date"] ].index[0] + 1 ) except IndexError: - if history_data[pair][tf].iloc[-1]['date'] < df_dp['date'].iloc[0]: - index = 0 + if hist_df.iloc[-1]['date'] < df_dp['date'].iloc[0]: + raise OperationalException("In memory historical data is older than " + f"oldest DataProvider candle for {pair} on " + f"timeframe {tf}") else: index = -1 - logger.warning( - f"No common dates in historical data and dataprovider for {pair}. " - f"Appending dataprovider to historical data (full? {not bool(index)})" - "but please be aware that there is likely a gap in the historical " - "data.\n" - f"Historical data ends at {history_data[pair][tf].iloc[-1]['date']} " - f"while dataprovider starts at {df_dp['date'].iloc[0]} and" - f"ends at {df_dp['date'].iloc[0]}." - ) + logger.warning( + f"No common dates in historical data and dataprovider for {pair}. " + f"Appending latest dataprovider candle to historical data " + "but please be aware that there is likely a gap in the historical " + "data. \n" + f"Historical data ends at {hist_df.iloc[-1]['date']} " + f"while dataprovider starts at {df_dp['date'].iloc[0]} and" + f"ends at {df_dp['date'].iloc[0]}." + ) - history_data[pair][tf] = pd.concat( + hist_df = pd.concat( [ - history_data[pair][tf], + hist_df, df_dp.iloc[index:], ], ignore_index=True,