方案a+B

This commit is contained in:
zhangkun9038@dingtalk.com 2026-01-09 00:54:29 +08:00
parent 311463ba72
commit b5f9f07665
2 changed files with 90 additions and 4 deletions

View File

@ -0,0 +1,64 @@
✅ A+B组合方案收紧版实施完成
【双重过滤机制】
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📍 第一层过滤方案A收紧版- 入场信号生成阶段
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
位置populate_entry_trend() 方法
触发条件market_state == 'strong_bear'
收紧的趋势反转要求(从宽松的"三选一"改为严格的"必须MACD上穿+其他"
✓ 必须条件MACD上穿信号线
✓ 附加条件(满足其一):
- RSI >= 30从25提高到30
- 布林位置 >= 0.2从0提高到0.2,需回到布林带中下部)
逻辑trend_reversal = MACD上穿 AND (RSI回升 OR 价格企稳)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📍 第二层过滤方案B收紧版- ML审核官阶段
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
位置confirm_trade_entry() 方法
触发条件market_state == 'strong_bear' AND macd_cross == 'down'
ML阈值调整大幅收紧
- 原阈值增加:+0.10 → +0.13
- 最终阈值0.95 → 0.98
- 要求ML概率必须 >= 0.98 才能入场
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🎯 预期效果
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. 大幅减少强熊市中的入场数量
2. 只有同时满足以下条件才能入场:
✓ 通过方案AMACD已上穿 + (RSI>=30 或 价格回到布林带20%以上)
✓ 通过方案BML概率 >= 0.98(极高置信度)
3. 避免在下跌趋势中"接飞刀"
4. 提高入场成功率
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 与之前版本的对比
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
版本 方案A条件 方案B阈值 效果
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
原始版本 无过滤 0.85 基准
方案A(宽松) 三选一(OR) 0.85 +0.012%
方案B(宽松) 无过滤 0.95 +0.01%
A+B组合(收紧) MACD必须+二选一(AND+OR) 0.98 待测试
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🚀 下一步
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
运行回测验证效果:
freqtrade backtesting --config config.json --strategy FreqaiPrimer --timerange=20251201-20260108
建议commit信息
git commit -m "实施A+B组合方案收紧版双重过滤机制应对强熊市"

View File

@ -654,6 +654,27 @@ class FreqaiPrimer(IStrategy):
)
final_condition = condition_count >= self.min_condition_count.value
# ========== 方案A收紧版强熊市中增加严格的趋势反转确认 ==========
# 针对6小时中短线策略避免在下跌趋势中"抄底抄在半山腰"
strong_bear_mask = (dataframe['market_state'] == 'strong_bear')
if strong_bear_mask.any():
# 计算布林位置(价格在布林带中的相对位置)
bb_position = (dataframe['close'] - dataframe['bb_lower_1h']) / \
(dataframe['bb_upper_1h'] - dataframe['bb_lower_1h'] + 1e-8)
# 收紧的趋势反转信号必须MACD上穿 + (RSI回升或价格企稳)
macd_reversal = (dataframe['macd_1h'] > dataframe['macd_signal_1h'])
rsi_recovery = (dataframe['rsi_1h'] >= 30) # 从25提高到30
price_stable = (bb_position >= 0.2) # 从0提高到0.2(需回到布林带中下部)
# 必须MACD上穿 AND (RSI回升 OR 价格企稳)
trend_reversal = macd_reversal & (rsi_recovery | price_stable)
# 在强熊市中,必须有趋势反转信号才能入场
final_condition = final_condition & (~strong_bear_mask | trend_reversal)
# ========== 方案A结束 ==========
# 设置入场信号
dataframe.loc[final_condition, 'enter_long'] = 1
@ -940,16 +961,17 @@ class FreqaiPrimer(IStrategy):
# 确保概率在 [0, 1] 范围内(分类器输出可能有浮点误差)
entry_prob = max(0.0, min(1.0, entry_prob))
# ========== 方案B:强熊市+MACD下降时提高ML阈值 ==========
# ========== 方案B(收紧版):强熊市+MACD下降时大幅提高ML阈值 ==========
# 根据市场状态动态获取入场阈值
entry_threshold = self.get_ml_threshold_by_market_state(market_state, 'entry')
# 如果处于强熊市且MACD下降额外提高阈值
# 如果处于强熊市且MACD下降大幅提高阈值
if market_state == 'strong_bear' and macd_cross == 'down':
original_threshold = entry_threshold
entry_threshold = min(0.95, entry_threshold + 0.10) # 从0.85提高到0.95
# 从+0.10收紧到+0.13阈值从0.95提高到0.98
entry_threshold = min(0.98, entry_threshold + 0.13)
self.strategy_log(
f"[{pair}] 强熊市+MACD下降提高ML阈值: "
f"[{pair}] 强熊市+MACD下降大幅提高ML阈值: "
f"{original_threshold:.2f} -> {entry_threshold:.2f}"
)
# ========== 方案B结束 ==========