protections config
This commit is contained in:
parent
a85cfda5c8
commit
0207db2da5
@ -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": {
|
||||
|
||||
@ -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 的趋势检测
|
||||
|
||||
@ -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个保护处理器
|
||||
```
|
||||
freqtrade.plugins.protectionmanager - INFO - Loaded 3 protection handlers
|
||||
```
|
||||
|
||||
## 故障排除
|
||||
如果看到错误:
|
||||
```
|
||||
Configuration error: DEPRECATED: Setting 'protections' in the configuration is deprecated
|
||||
```
|
||||
**解决方案**:确保已从配置文件中移除`protections`配置,并在策略文件中添加`@property def protections`方法。
|
||||
Loading…
x
Reference in New Issue
Block a user