From 8d140b58c37d51d62572dee4f33c7a6f16eaeda3 Mon Sep 17 00:00:00 2001 From: "zhangkun9038@dingtalk.com" Date: Sat, 30 Aug 2025 11:25:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=A8=E6=96=B0=E7=9A=84=E7=AD=96=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- freqtrade/templates/freqaiprimer.py | 53 +---------------------------- 1 file changed, 1 insertion(+), 52 deletions(-) diff --git a/freqtrade/templates/freqaiprimer.py b/freqtrade/templates/freqaiprimer.py index fd81f7a5..34d28baf 100644 --- a/freqtrade/templates/freqaiprimer.py +++ b/freqtrade/templates/freqaiprimer.py @@ -1,55 +1,3 @@ -from freqtrade.strategy import IStrategy -from pandas import DataFrame -import pandas_ta as ta -from freqtrade.exchange import timeframe_to_minutes - -class ShortTermMultiTimeframeStrategy(IStrategy): - # 策略参数 - minimal_roi = { - "0": 0.04, # 4% ROI (10 分钟内) - "60": 0.02, # 2% ROI (1 小时) - "180": 0.01, # 1% ROI (3 小时) - "360": 0.0 # 0% ROI (6 小时) - } - - stoploss = -0.015 # 初始止损 -1.5% - trailing_stop = True # 启用追踪止损 - trailing_stop_positive = 0.008 # 价格上涨 0.8% 后开始追踪 - trailing_stop_positive_offset = 0.01 # 追踪止损偏移量 1% - - timeframe = "3m" # 主时间框架为 3 分钟 - can_short = False # 禁用做空 - - # 自定义指标参数 - bb_length = 20 # 布林带周期 - bb_std = 2.0 # 布林带标准差 - rsi_length = 14 # RSI 周期 - rsi_overbought = 70 # RSI 超买阈值 - rsi_oversold = 30 # RSI 超卖阈值 - - def informative_pairs(self): - # 定义辅助时间框架 - pairs = self.dp.current_whitelist() - informative_pairs = [(pair, '15m') for pair in pairs] + [(pair, '1h') for pair in pairs] - return informative_pairs - - def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame: - # 计算 3m 周期的指标 - bb_3m = ta.bbands(dataframe['close'], length=self.bb_length, std=self.bb_std) - dataframe['bb_lower_3m'] = bb_3m[f'BBL_{self.bb_length}_{self.bb_std}'] - dataframe['bb_upper_3m'] = bb_3m[f'BBU_{self.bb_length}_{self.bb_std}'] - dataframe['rsi_3m'] = ta.rsi(dataframe['close'], length=self.rsi_length) - - # 成交量过滤 - dataframe['volume_ma'] = dataframe['volume'].rolling(20).mean() - - # 计算 ATR 用于动态止损 - dataframe['atr'] = ta.atr(dataframe['high'], dataframe['low'], dataframe['close'], length=14) - - # 获取 15m 数据 - df_15m = self.dp.get_pair_dataframe(pair=metadata['pair'], timeframe='15m') - bb_15m = ta.bbands(df_15m['close'], length=self.bb_length, std=self.bb_std) - df_15m['bb_lower_15m'] = bb_15m[f'BBL_{self.bb_length}_{self.bb_std}'] df_15m['bb_upper_15m'] = bb_15m[f'BBU_{self.bb_length}_{self.bb_std}'] df_15m['rsi_15m'] = ta.rsi(df_15m['close'], length=self.rsi_length) @@ -117,3 +65,4 @@ class ShortTermMultiTimeframeStrategy(IStrategy): if atr > 0: return -1.5 * atr / current_rate # 动态止损为 1.5 倍 ATR return self.stoploss # 回退到固定止损 +