From 295b7b6982747f6e89cadbee9033155affdf8772 Mon Sep 17 00:00:00 2001 From: "zhangkun9038@dingtalk.com" Date: Sat, 30 Aug 2025 08:28:25 +0800 Subject: [PATCH] =?UTF-8?q?=E5=89=A7=E7=83=88=E6=8B=89=E5=8D=87=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=E5=99=A8=E9=80=BB=E8=BE=91=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- freqtrade/templates/freqaiprimer.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/freqtrade/templates/freqaiprimer.py b/freqtrade/templates/freqaiprimer.py index 6469356c..57c0100b 100644 --- a/freqtrade/templates/freqaiprimer.py +++ b/freqtrade/templates/freqaiprimer.py @@ -750,24 +750,23 @@ class FreqaiPrimer(IStrategy): # 剧烈拉升检测参数 H1_RAPID_RISE_LOOKBACK = 200 # 检查最近200根K线 H1_RAPID_RISE_THRESHOLD = 5 # 价格拉升阈值(百分比) - H1_MAX_CANDLES = 2 # 最多连续检查的K线数量 - H1_UNSTABLE_REGION_THRESHOLD = 60 # 不稳定区域阈值(百分比,超过60%认为是中上部分) + H1_MAX_CANDLES = 3 # 最多连续检查的K线数量修改为3 def detect_h1_rapid_rise(self, dataframe: DataFrame, metadata: dict) -> tuple[bool, float]: """ - 检测最近K线中是否发生了剧烈拉升情况 + 检测最近K线中是否发生了剧烈拉升情况(200根1h k线范围内,最多3个周期内抬升至少5%) 参数: dataframe: 当前时间框架的数据 metadata: 币对元数据 返回: - tuple: (是否发生剧烈拉升, 当前价格在最近价格范围中的百分比) + tuple[bool, float]: (是否处于不稳固区域(布尔值), 当前价格在最近价格范围中的百分比(浮点数)) """ pair = metadata.get('pair', 'Unknown') try: - # 使用当前时间框架的数据,而不仅仅是1小时框架 + # 获取数据 current_timeframe_data = dataframe.copy() if len(current_timeframe_data) < self.H1_RAPID_RISE_LOOKBACK: @@ -781,7 +780,7 @@ class FreqaiPrimer(IStrategy): rapid_rise_detected = False max_cumulative_change = 0 - # 检查最多连续2根K线内的累计涨幅 + # 检查最多连续3根K线内的累计涨幅 for i in range(1, len(recent_data)): # 计算从i-n到i的累计涨幅 for n in range(1, self.H1_MAX_CANDLES + 1): @@ -795,6 +794,7 @@ class FreqaiPrimer(IStrategy): if cumulative_change >= self.H1_RAPID_RISE_THRESHOLD: rapid_rise_detected = True + logger.info(f"[{pair}] 检测到剧烈拉升: 从{i-n}到{i}根K线,累计涨幅{cumulative_change:.2f}% >= {self.H1_RAPID_RISE_THRESHOLD}%") break if rapid_rise_detected: break @@ -811,10 +811,11 @@ class FreqaiPrimer(IStrategy): else: price_position_pct = 0.0 - # 判断当前是否处于不稳固区域(剧烈拉升后价格处于中上部分) - is_unstable_region = rapid_rise_detected and (price_position_pct >= self.H1_UNSTABLE_REGION_THRESHOLD) + # 判断当前是否处于不稳固区域(检测到剧烈拉升后,直接判定为不稳固区域) + # 只要检测到剧烈拉升(3根K线内涨幅≥5%),就判定为不稳固区域,阻止入场 + is_unstable_region = rapid_rise_detected - logger.info(f"[{pair}] 剧烈拉升检测 - 最大{self.H1_MAX_CANDLES}根K线累计涨幅: {max_cumulative_change:.2f}%, 阈值: {self.H1_RAPID_RISE_THRESHOLD}%, 不稳固区域: {is_unstable_region}") + logger.info(f"[{pair}] 剧烈拉升检测 - 最大{self.H1_MAX_CANDLES}根K线累计涨幅: {max_cumulative_change:.2f}%, 阈值: {self.H1_RAPID_RISE_THRESHOLD}%, 价格位置: {price_position_pct:.2f}%, 不稳固区域: {is_unstable_region}") return is_unstable_region, price_position_pct