From e2e7a1acf32821d9cfd674363218bf92b18973b6 Mon Sep 17 00:00:00 2001 From: "zhangkun9038@dingtalk.com" Date: Mon, 23 Jun 2025 18:33:15 +0800 Subject: [PATCH] =?UTF-8?q?k=5Fsell=E5=92=8Ck=5Fbuy=E6=94=B9=E6=88=90?= =?UTF-8?q?=E7=94=A8=E7=BA=BF=E6=80=A7=E5=87=BD=E6=95=B0=E6=98=A0=E5=B0=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- freqtrade/templates/freqaiprimer.py | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/freqtrade/templates/freqaiprimer.py b/freqtrade/templates/freqaiprimer.py index c6b4f0f6..463f6930 100644 --- a/freqtrade/templates/freqaiprimer.py +++ b/freqtrade/templates/freqaiprimer.py @@ -95,6 +95,10 @@ class FreqaiPrimer(IStrategy): "live_retrain_candles": 100, } + @staticmethod + def linear_map(value, from_min, from_max, to_min, to_max): + return (value - from_min) / (from_max - from_min) * (to_max - to_min) + to_min + def __init__(self, config: dict, *args, **kwargs): super().__init__(config, *args, **kwargs) logger.setLevel(logging.DEBUG) @@ -242,22 +246,10 @@ class FreqaiPrimer(IStrategy): labels_std = 0.01 logger.warning(f"[{pair}] labels_std 计算异常,使用默认值 0.01") - # 根据市场趋势动态调整买卖阈值 - market_trend = self.get_market_trend() - k_buy = 1.0 - k_sell = 1.2 - if market_trend == 'bull': - k_buy = 0.8 # 放宽买入阈值 - k_sell = 1.0 # 收紧卖出阈值 - elif market_trend == 'bear': - k_buy = 1.2 # 收紧买入阈值 - k_sell = 1.5 # 放宽卖出阈值 - else: - k_buy = 1.0 - k_sell = 1.2 - - if labels_mean > 0.015: - k_sell += 0.5 + # 根据市场趋势得分动态调整买卖阈值 + market_trend_score = self.get_market_trend() + k_buy = FreqaiPrimer.linear_map(market_trend_score, 0, 100, 1.2, 0.8) + k_sell = FreqaiPrimer.linear_map(market_trend_score, 0, 100, 1.5, 1.0) self.buy_threshold = labels_mean - k_buy * labels_std self.sell_threshold = labels_mean + k_sell * labels_std