From cb032be17648d0ee47f96ae4080432bdd58f90fb Mon Sep 17 00:00:00 2001 From: "zhangkun9038@dingtalk.com" Date: Fri, 23 May 2025 00:38:03 +0000 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E5=85=A5=E4=BA=86=E5=9C=A8a117548d02?= =?UTF-8?q?=E4=B8=AD=E6=8B=A5=E6=9C=89=E7=9A=84ai=E8=BE=85=E5=8A=A9?= =?UTF-8?q?=E6=8C=87=E6=A0=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- freqtrade/templates/freqaiprimer.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/freqtrade/templates/freqaiprimer.py b/freqtrade/templates/freqaiprimer.py index 35dbd6f0..3c33af14 100644 --- a/freqtrade/templates/freqaiprimer.py +++ b/freqtrade/templates/freqaiprimer.py @@ -51,6 +51,7 @@ class FreqaiPrimer(IStrategy): } def feature_engineering_expand_all(self, dataframe: DataFrame, period: int, metadata: dict, **kwargs) -> DataFrame: + # 保留原有指标 dataframe["%-rsi-period"] = ta.RSI(dataframe, timeperiod=period) dataframe["%-sma-period"] = ta.SMA(dataframe, timeperiod=period) dataframe["%-ema-period"] = ta.EMA(dataframe, timeperiod=period) @@ -61,8 +62,24 @@ class FreqaiPrimer(IStrategy): dataframe["bb_upperband-period"] = upperband dataframe["bb_middleband-period"] = middleband dataframe["%-bb_width-period"] = (dataframe["bb_upperband-period"] - dataframe["bb_lowerband-period"]) / dataframe["bb_middleband-period"] - dataframe["%-roc-period"] = ta.ROC(dataframe, timeperiod=period) + + # 添加策略 B 的指标 + dataframe["%-mfi-period"] = ta.MFI(dataframe, timeperiod=period) # 资金流指标 + dataframe["%-adx-period"] = ta.ADX(dataframe, timeperiod=period) # 趋势强度 + dataframe["%-tema-period"] = ta.TEMA(dataframe, timeperiod=period) # TEMA 指标 + dataframe["%-relative_volume-period"] = dataframe["volume"] / dataframe["volume"].rolling(period).mean() # 相对成交量 + dataframe["%-close-bb_lower-period"] = dataframe["close"] / dataframe["bb_lowerband-period"] # 收盘价/布林带下轨 + + # 数据清理 + columns_to_clean = [ + "%-rsi-period", "%-mfi-period", "%-sma-period", "%-ema-period", "%-adx-period", + "bb_lowerband-period", "bb_middleband-period", "bb_upperband-period", + "%-bb_width-period", "%-roc-period", "%-relative_volume-period", "%-close-bb_lower-period", "%-tema-period" + ] + for col in columns_to_clean: + dataframe[col] = dataframe[col].replace([np.inf, -np.inf], 0).ffill().fillna(0) + return dataframe def set_freqai_targets(self, dataframe: DataFrame, metadata: dict, **kwargs) -> DataFrame: