From d25a5809d26c9e4acc9ec73ec55a29e993704069 Mon Sep 17 00:00:00 2001 From: "zhangkun9038@dingtalk.com" Date: Sat, 5 Jul 2025 15:47:27 +0000 Subject: [PATCH] =?UTF-8?q?stockrsi=2085=E5=88=86=E4=BB=A5=E4=B8=8A?= =?UTF-8?q?=E9=98=BB=E6=AD=A2=E5=BC=80=E5=A4=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- freqtrade/templates/freqaiprimer.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/freqtrade/templates/freqaiprimer.py b/freqtrade/templates/freqaiprimer.py index c5bc98b3..77a6b5fc 100644 --- a/freqtrade/templates/freqaiprimer.py +++ b/freqtrade/templates/freqaiprimer.py @@ -190,7 +190,10 @@ class FreqaiPrimer(IStrategy): dataframe["volume_mean_20"] = dataframe["volume"].rolling(20).mean() dataframe["volume_std_20"] = dataframe["volume"].rolling(20).std() dataframe["volume_z_score"] = (dataframe["volume"] - dataframe["volume_mean_20"]) / dataframe["volume_std_20"] - + # 计算 STOCHRSI + dataframe['stochrsi_k'], dataframe['stochrsi_d'] = stochrsi(dataframe['close'], length=14, k=3, d=3, fillna=True) + # 计算 MASTCHRIS3 (假设为 STOCHRSI K 的 3 周期 SMA) + dataframe['mastchris3'] = sma(dataframe['stochrsi_k'], length=3) # 数据清理 for col in ["ema200", "bb_upperband", "bb_middleband", "bb_lowerband", "rsi", "volume_z_score", "&-price_value_divergence", "price_value_divergence"]: dataframe[col] = dataframe[col].replace([np.inf, -np.inf], 0).ffill().fillna(0) @@ -547,6 +550,14 @@ class FreqaiPrimer(IStrategy): logger.error(f"[{pair}] Invalid rate value: {rate} (type: {type(rate)}). Skipping trade entry.") return False + # 获取当前数据 + dataframe, _ = self.dp.get_analyzed_dataframe(pair, self.timeframe) + last_candle = dataframe.iloc[-1] + + # 检查 STOCHRSI K 和 MASTCHRIS3 是否均 > 85 + if last_candle['stochrsi_k'] > 85 and last_candle['mastchris3'] > 85: + return False # 阻止开多 + market_trend_score = self.get_market_trend(dataframe=DataFrame, metadata={'pair': pair}) cooldown_period_minutes = self.COOLDOWN_PERIOD_MINUTES.value if market_trend_score > 50 else self.COOLDOWN_PERIOD_MINUTES.value // 2