新增趋势跟踪入场逻辑, 保持原有超卖反弹入场逻辑
This commit is contained in:
parent
424069fc69
commit
2220b04ea4
@ -1081,12 +1081,32 @@ class FreqaiPrimer(IStrategy):
|
||||
(volume_spike | bb_width_condition).astype(int) + # 成交量或布林带宽度满足其一即可
|
||||
trend_confirmation.astype(int)
|
||||
)
|
||||
# 新增:价格必须低于15分钟EMA20的条件
|
||||
price_below_ema20_15m = dataframe['close'] < dataframe['ema_20_15m']
|
||||
|
||||
# 最终条件:基本条件 + EMA趋势过滤 + 价格低于15分钟EMA20(方案2:宽松版)
|
||||
# 条件1:超卖反弹入场(原逻辑)
|
||||
# 要求:基本条件满足 + EMA趋势过滤 + 价格低于15分钟EMA20
|
||||
price_below_ema20_15m = dataframe['close'] < dataframe['ema_20_15m']
|
||||
basic_condition = condition_count >= self.min_condition_count.value
|
||||
final_condition = basic_condition & ema_trend_filter & price_below_ema20_15m
|
||||
pullback_entry = basic_condition & ema_trend_filter & price_below_ema20_15m
|
||||
|
||||
# 条件2:趋势跟踪入场(新增逻辑)
|
||||
# 不要求价格低于EMA20,而是要求:
|
||||
# - EMA趋势过滤满足
|
||||
# - MACD上升趋势
|
||||
# - 趋势确认(3m或15m趋势向上)
|
||||
# - 价格高于15分钟EMA20(表明处于上涨趋势)
|
||||
price_above_ema20_15m = dataframe['close'] >= dataframe['ema_20_15m']
|
||||
# 趋势跟踪需要的条件数量较少,因为已经在明显上涨趋势中
|
||||
trend_condition_count = (
|
||||
macd_condition_1h.astype(int) +
|
||||
trend_confirmation.astype(int) +
|
||||
(volume_spike | bb_width_condition).astype(int)
|
||||
)
|
||||
# 趋势跟踪只需要满足2个条件即可,降低门槛
|
||||
trend_basic_condition = trend_condition_count >= 2
|
||||
trend_following_entry = trend_basic_condition & ema_trend_filter & price_above_ema20_15m
|
||||
|
||||
# 最终条件:超卖反弹入场 或 趋势跟踪入场
|
||||
final_condition = pullback_entry | trend_following_entry
|
||||
|
||||
# 设置入场信号
|
||||
dataframe.loc[final_condition, 'enter_long'] = 1
|
||||
@ -1166,10 +1186,12 @@ class FreqaiPrimer(IStrategy):
|
||||
self.strategy_log(f" - MACD 上升趋势: {macd_condition_1h.sum()} 次")
|
||||
self.strategy_log(f" - 成交量或布林带宽度: {(volume_spike | bb_width_condition).sum()} 次")
|
||||
self.strategy_log(f" - 价格低于15分钟EMA20: {price_below_ema20_15m.sum()} 次")
|
||||
self.strategy_log(f" - 价格高于15分钟EMA20: {price_above_ema20_15m.sum()} 次")
|
||||
self.strategy_log(f" - 趋势确认: {trend_confirmation.sum()} 次")
|
||||
self.strategy_log(f" - EMA趋势过滤(在上方或20根K线内穿越): {ema_trend_count} 次")
|
||||
self.strategy_log(f" - 基本条件满足: {basic_condition_count} 次")
|
||||
self.strategy_log(f" - 最终条件(基本+EMA过滤): {final_condition_count} 次")
|
||||
self.strategy_log(f" - 超卖反弹入场信号: {pullback_entry.sum()} 次")
|
||||
self.strategy_log(f" - 趋势跟踪入场信号: {trend_following_entry.sum()} 次")
|
||||
self.strategy_log(f" - 最终入场信号(总计): {final_condition.sum()} 次")
|
||||
|
||||
# ========== 新增:最近5个时间点的条件满足状况可视化 ==========
|
||||
# 显示最近5个时间点的条件满足情况(更直观)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user