diff --git a/config_examples/freqaiprimer.json b/config_examples/freqaiprimer.json index 4a950bb1..4db242e9 100644 --- a/config_examples/freqaiprimer.json +++ b/config_examples/freqaiprimer.json @@ -66,27 +66,6 @@ "method": "StaticPairList" } ], - "protections": [ - { - "method": "StoplossGuard", - "lookback_period_candles": 60, - "trade_limit": 2, - "stop_duration_candles": 60, - "required_profit": 0.0, - "only_per_pair": true - }, - { - "method": "CooldownPeriod", - "stop_duration_candles": 2 - }, - { - "method": "MaxDrawdown", - "lookback_period_candles": 48, - "trade_limit": 4, - "stop_duration_candles": 24, - "max_allowed_drawdown": 0.20 - } - ], "freqai": { "enabled": true, "data_kitchen": { diff --git a/freqtrade/templates/freqaiprimer.py b/freqtrade/templates/freqaiprimer.py index b5341da7..5da2a98d 100644 --- a/freqtrade/templates/freqaiprimer.py +++ b/freqtrade/templates/freqaiprimer.py @@ -1776,6 +1776,33 @@ class FreqaiPrimer(IStrategy): # 注意:由于使用延迟初始化,无需关闭持久化的Redis连接 + @property + def protections(self): + """ + 保护机制配置 + 基于最新Freqtrade规范,保护机制应定义在策略文件中而非配置文件 + """ + return [ + { + "method": "StoplossGuard", + "lookback_period_candles": 60, # 3小时回看期(60根3分钟K线) + "trade_limit": 2, # 最多2笔止损交易 + "stop_duration_candles": 60, # 暂停180分钟(60根3分钟K线) + "only_per_pair": True # 仅针对单个币对 + }, + { + "method": "CooldownPeriod", + "stop_duration_candles": 2 # 6分钟冷却期(2根3分钟K线) + }, + { + "method": "MaxDrawdown", + "lookback_period_candles": 48, # 2.4小时回看期 + "trade_limit": 4, # 4笔交易限制 + "stop_duration_candles": 24, # 72分钟暂停(24根3分钟K线) + "max_allowed_drawdown": 0.20 # 20%最大回撤容忍度 + } + ] + def detect_trend_status(self, dataframe: DataFrame, metadata: dict) -> str: """ 基于分类模型优化 first_length 的趋势检测 diff --git a/protection_config_guide.md b/protection_config_guide.md index 9f41bdb6..115c0664 100644 --- a/protection_config_guide.md +++ b/protection_config_guide.md @@ -1,53 +1,97 @@ -# Freqtrade保护机制配置指南 +# Freqtrade 保护机制配置指南(2024年更新版) -## 已添加的保护机制 +## 概述 +本指南说明如何在Freqtrade 2024年最新版本中正确配置保护机制,以防止连续亏损和情绪化交易。 -### 1. StoplossGuard(止损保护) -- **作用**: 当单个币对在3小时内发生2笔止损交易时,暂停该币对交易 -- **配置**: - - `lookback_period_candles`: 60 (回看60根3分钟K线 = 3小时) - - `trade_limit`: 2 (允许最多2笔止损交易) - - `stop_duration_candles`: 60 (暂停60根3分钟K线 = 180分钟) - - `only_per_pair`: true (仅针对单个币对,不影响其他币对交易) +## ⚠️ 重要更新 +**从2024年开始,保护机制配置方式已变更**: +- ❌ **弃用**:在配置文件中设置`protections`属性 +- ✅ **新方式**:在策略文件中使用`@property def protections`方法定义 -### 2. CooldownPeriod(冷却期) -- **作用**: 每笔交易后强制等待一段时间,防止过度频繁交易 -- **配置**: - - `stop_duration_candles`: 2 (每笔交易后冷却2根3分钟K线 = 6分钟) - - **保持**: ✅ 6分钟冷却期合理,无需调整 +## 当前配置方式 -### 3. MaxDrawdown(最大回撤保护) -- **作用**: 当账户回撤超过阈值时,停止所有交易 -- **配置**: - - `lookback_period_candles`: 48 (回看48根3分钟K线 = 144分钟) - - `trade_limit`: 4 (允许最多4笔亏损交易) - - `max_allowed_drawdown`: 0.20 (最大允许回撤20% - 从15%上调) - - `stop_duration_candles`: 24 (暂停24根3分钟K线 = 72分钟) +### 配置位置 +保护机制现在需要在策略文件(`freqaiprimer.py`)中通过`@property def protections`方法定义。 -## 保护机制工作原理 +### 已添加的保护机制 -1. **实时监控**: 系统会实时监控所有交易活动 -2. **条件触发**: 当满足保护条件时,自动触发相应的保护措施 -3. **日志记录**: 所有保护触发事件都会记录在日志中 -4. **自动恢复**: 保护期结束后自动恢复交易 +#### 1. StoplossGuard(止损保护) +**作用**:防止在短时间内出现过多止损交易 +**配置参数**: +- `method`: "StoplossGuard" +- `lookback_period_candles`: 60(60根3分钟K线 = 3小时) +- `trade_limit`: 2(最多2笔止损交易) +- `stop_duration_candles`: 60(暂停60根3分钟K线 = 180分钟) +- `only_per_pair`: true(仅针对单个币对) + +#### 2. CooldownPeriod(冷却期) +**作用**:防止过度频繁交易 +**配置参数**: +- `method`: "CooldownPeriod" +- `stop_duration_candles`: 2(2根3分钟K线 = 6分钟冷却期) + +#### 3. MaxDrawdown(最大回撤) +**作用**:限制账户最大回撤,保护资金安全 +**配置参数**: +- `method`: "MaxDrawdown" +- `lookback_period_candles`: 48(48根3分钟K线 = 2.4小时) +- `trade_limit`: 4(4笔交易限制) +- `stop_duration_candles`: 24(暂停24根3分钟K线 = 72分钟) +- `max_allowed_drawdown`: 0.20(20%最大回撤容忍度) + +## 配置代码位置 +```python +# 在策略类中添加以下代码 +@property +def protections(self): + return [ + { + "method": "StoplossGuard", + "lookback_period_candles": 60, + "trade_limit": 2, + "stop_duration_candles": 60, + "only_per_pair": True + }, + { + "method": "CooldownPeriod", + "stop_duration_candles": 2 + }, + { + "method": "MaxDrawdown", + "lookback_period_candles": 48, + "trade_limit": 4, + "stop_duration_candles": 24, + "max_allowed_drawdown": 0.20 + } + ] +``` + +## 工作原理 +1. **StoplossGuard**: 在3小时内,如果单个币对出现2笔或更多止损交易,将暂停该币对交易180分钟 +2. **CooldownPeriod**: 每笔交易完成后,强制等待6分钟才能进行下一笔交易 +3. **MaxDrawdown**: 在2.4小时内,如果账户回撤达到20%,将暂停所有交易72分钟 + +## 迁移步骤 +1. ✅ **配置文件**:已从`freqaiprimer.json`中移除`protections`配置 +2. ✅ **策略文件**:已在`freqaiprimer.py`中添加`@property def protections`方法 +3. ✅ **参数优化**:根据3分钟K线交易特点调整时间参数 ## 预期效果 - -- 减少连续亏损的风险 +- 减少连续亏损风险 - 防止情绪化交易 - 保护账户资金安全 -- 提供更稳定的交易体验 - -## 调优建议 - -如果发现保护过于严格或宽松,可以调整以下参数: -- 减少`trade_limit`值使保护更严格 -- 增加`stop_duration_candles`延长保护时间 -- 调整`max_allowed_drawdown`改变回撤容忍度 +- 维持合理的交易频率 +- 避免配置文件弃用错误 ## 验证方法 - -启动后观察日志,应该能看到类似: +启动策略后,查看日志应显示: ``` -freqtrade.plugins.protectionmanager - 已加载3个保护处理器 -``` \ No newline at end of file +freqtrade.plugins.protectionmanager - INFO - Loaded 3 protection handlers +``` + +## 故障排除 +如果看到错误: +``` +Configuration error: DEPRECATED: Setting 'protections' in the configuration is deprecated +``` +**解决方案**:确保已从配置文件中移除`protections`配置,并在策略文件中添加`@property def protections`方法。 \ No newline at end of file