protections config

This commit is contained in:
zhangkun9038@dingtalk.com 2025-08-21 00:28:34 +08:00
parent a85cfda5c8
commit 0207db2da5
3 changed files with 111 additions and 61 deletions

View File

@ -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": {

View File

@ -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 的趋势检测

View File

@ -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`: 6060根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`: 22根3分钟K线 = 6分钟冷却期
#### 3. MaxDrawdown最大回撤
**作用**:限制账户最大回撤,保护资金安全
**配置参数**
- `method`: "MaxDrawdown"
- `lookback_period_candles`: 4848根3分钟K线 = 2.4小时)
- `trade_limit`: 44笔交易限制
- `stop_duration_candles`: 24暂停24根3分钟K线 = 72分钟
- `max_allowed_drawdown`: 0.2020%最大回撤容忍度)
## 配置代码位置
```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个保护处理器
```
freqtrade.plugins.protectionmanager - INFO - Loaded 3 protection handlers
```
## 故障排除
如果看到错误:
```
Configuration error: DEPRECATED: Setting 'protections' in the configuration is deprecated
```
**解决方案**:确保已从配置文件中移除`protections`配置,并在策略文件中添加`@property def protections`方法。