From 96b76ffcc0cd9db394c0eea0018be76e50b577e6 Mon Sep 17 00:00:00 2001 From: "zhangkun9038@dingtalk.com" Date: Mon, 28 Apr 2025 16:09:50 +0800 Subject: [PATCH] up3 --- freqtrade/templates/FreqaiExampleStrategy.py | 37 +------------------- 1 file changed, 1 insertion(+), 36 deletions(-) diff --git a/freqtrade/templates/FreqaiExampleStrategy.py b/freqtrade/templates/FreqaiExampleStrategy.py index bc7b997..4eec097 100644 --- a/freqtrade/templates/FreqaiExampleStrategy.py +++ b/freqtrade/templates/FreqaiExampleStrategy.py @@ -121,42 +121,7 @@ class FreqaiExampleStrategy(IStrategy): dataframe.fillna(0, inplace=True) return dataframe -def set_freqai_targets(self, dataframe: DataFrame, metadata: dict, **kwargs) -> DataFrame: - logger.info(f"设置 FreqAI 目标,交易对:{metadata['pair']}") - if "close" not in dataframe.columns: - logger.error("数据框缺少必要的 'close' 列") - raise ValueError("数据框缺少必要的 'close' 列") - - try: - label_period = self.freqai_info["feature_parameters"]["label_period_candles"] - - # 确保目标变量是二维数组 - if dataframe["up_or_down"].ndim == 1: - dataframe["up_or_down"] = dataframe["up_or_down"].values.reshape(-1, 1) - - # 生成 %-volatility 特征 - dataframe["%-volatility"] = dataframe["close"].pct_change().rolling(20).std() - - # 确保 &-buy_rsi 列的值计算正确 - dataframe["&-buy_rsi"] = ta.RSI(dataframe, timeperiod=14) - - # 数据清理 - for col in ["&-buy_rsi", "up_or_down", "%-volatility"]: - # 使用直接操作避免链式赋值 - dataframe[col] = dataframe[col].replace([np.inf, -np.inf], np.nan) - dataframe[col] = dataframe[col].ffill() # 替代 fillna(method='ffill') - dataframe[col] = dataframe[col].fillna(dataframe[col].mean()) # 使用均值填充 NaN 值 - if dataframe[col].isna().any(): - logger.warning(f"目标列 {col} 仍包含 NaN,填充为默认值") - - except Exception as e: - logger.error(f"创建 FreqAI 目标失败:{str(e)}") - raise - - # Log the shape of the target variable for debugging - logger.info(f"目标列形状:{dataframe['up_or_down'].shape}") - logger.info(f"目标列预览:\n{dataframe[['up_or_down', '&-buy_rsi']].head().to_string()}") - return dataframe + def set_freqai_targets(self, dataframe: DataFrame, metadata: dict, **kwargs) -> DataFrame: logger.info(f"设置 FreqAI 目标,交易对:{metadata['pair']}") if "close" not in dataframe.columns: logger.error("数据框缺少必要的 'close' 列")