diff --git a/freqtrade/templates/freqaiprimer.py b/freqtrade/templates/freqaiprimer.py index f76fa8d4..2a17a19e 100644 --- a/freqtrade/templates/freqaiprimer.py +++ b/freqtrade/templates/freqaiprimer.py @@ -45,6 +45,9 @@ class FreqaiPrimer(IStrategy): # 入场间隔控制:记录每个交易对最近一次入场的时间 # 格式: {pair: datetime} self._last_entry_time = {} + + # 冷启动保护:记录策略启动时间 + self._strategy_start_time = datetime.datetime.now() def strategy_log(self, message: str, level: str = "info") -> None: @@ -604,7 +607,7 @@ class FreqaiPrimer(IStrategy): # 设置出场价格:上浮1.25%(使用乘法避免除零风险) # Freqtrade 会优先使用 exit_price 列作为限价单价格 final_exit_condition = dataframe['exit_long'] == 1 - dataframe.loc[final_exit_condition, 'exit_price'] = dataframe.loc[final_exit_condition, 'close'] * 1.0125 + #dataframe.loc[final_exit_condition, 'exit_price'] = dataframe.loc[final_exit_condition, 'close'] * 1.0125 # 增强调试信息 #self.strategy_log(f"[{metadata['pair']}] 出场条件检查:") @@ -758,7 +761,7 @@ class FreqaiPrimer(IStrategy): # 设置入场价格:下调1.67%(使用乘法避免除零风险) final_condition_updated = dataframe['enter_long'] == 1 - dataframe.loc[final_condition_updated, 'enter_price'] = dataframe.loc[final_condition_updated, 'close'] * 0.9833 + #dataframe.loc[final_condition_updated, 'enter_price'] = dataframe.loc[final_condition_updated, 'close'] * 0.9833 # 增强调试信息 # 确保ema_trend_filter是Series类型才能调用sum() @@ -876,6 +879,17 @@ class FreqaiPrimer(IStrategy): 此处实现剧烈拉升检查和入场间隔控制逻辑 """ self.strategy_log(f"[{pair}] confirm_trade_entry 被调用 - 价格: {rate:.8f}, 时间: {current_time}") + + # 冷启动保护:程序启动后前20分钟内不允许入场 + if hasattr(self, "_strategy_start_time"): + warmup_minutes = 20 + elapsed_minutes = (current_time - self._strategy_start_time).total_seconds() / 60.0 + if elapsed_minutes < warmup_minutes: + self.strategy_log( + f"[{pair}] 策略启动未满 {warmup_minutes} 分钟(已运行 {elapsed_minutes:.1f} 分钟),跳过本次入场信号" + ) + return False + # 默认允许交易 allow_trade = True