重构趋势判断逻辑
This commit is contained in:
parent
27648a3eb5
commit
59a9990d27
@ -638,15 +638,52 @@ class FreqaiPrimer(IStrategy):
|
||||
(dataframe['open'] < dataframe['close'].shift(1))
|
||||
)
|
||||
|
||||
# 计算各时间框架的趋势状态(牛/熊)
|
||||
# 3m时间框架:ema50下穿ema200为熊,上穿为牛
|
||||
dataframe['trend_3m'] = np.where(dataframe['ema_50_3m'] > dataframe['ema_200_3m'], 1, 0)
|
||||
# 计算各时间框架的趋势状态(牛/熊)- 增强版V2:优先价格动量
|
||||
# 原问题:EMA滞后严重,导致下跌市场仍判断为牛市
|
||||
# 新方案:以价格实际涨跌为主,EMA为辅
|
||||
|
||||
# 15m时间框架:ema50下穿ema200为熊,上穿为牛
|
||||
dataframe['trend_15m'] = np.where(dataframe['ema_50_15m'] > dataframe['ema_200_15m'], 1, 0)
|
||||
# === 3m时间框架趋势判断(价格动量主导)===
|
||||
# 条件1:价格动量(最近20根K线 = 1小时)- 主要指标
|
||||
price_momentum_3m = dataframe['close'].pct_change(20)
|
||||
momentum_bullish_3m = (price_momentum_3m > 0).astype(int)
|
||||
# 条件2:EMA50 > EMA200(长期趋势)- 辅助指标
|
||||
ema_trend_3m = (dataframe['ema_50_3m'] > dataframe['ema_200_3m']).astype(int)
|
||||
# 综合判断:价格动量权重0.7 + EMA趋势权重0.3(价格优先)
|
||||
dataframe['trend_3m'] = (momentum_bullish_3m * 0.7 + ema_trend_3m * 0.3).clip(0, 1)
|
||||
|
||||
# 1h时间框架:ema50下穿ema200为熊,上穿为牛
|
||||
dataframe['trend_1h_ema'] = np.where(dataframe['ema_50_1h'] > dataframe['ema_200_1h'], 1, 0)
|
||||
# === 15m时间框架趋势判断(价格动量主导)===
|
||||
# 条件1:价格动量(最近12根K线 = 3小时)
|
||||
price_momentum_15m = dataframe['close'].pct_change(12)
|
||||
momentum_bullish_15m = (price_momentum_15m > 0).astype(int)
|
||||
# 条件2:EMA50 > EMA200
|
||||
ema_trend_15m = (dataframe['ema_50_15m'] > dataframe['ema_200_15m']).astype(int)
|
||||
# 综合判断:价格动量0.7 + EMA0.3
|
||||
dataframe['trend_15m'] = (momentum_bullish_15m * 0.7 + ema_trend_15m * 0.3).clip(0, 1)
|
||||
|
||||
# === 1h时间框架趋势判断(多周期价格动量)⭐核心 ===
|
||||
# 条件1:长期价格动量(最近24根K线 = 1天)- 核心指标
|
||||
price_momentum_1h_long = dataframe['close'].pct_change(24)
|
||||
momentum_long_bullish = (price_momentum_1h_long > 0).astype(int)
|
||||
|
||||
# 条件2:中期价格动量(最近12根K线 = 12小时)
|
||||
price_momentum_1h_mid = dataframe['close'].pct_change(12)
|
||||
momentum_mid_bullish = (price_momentum_1h_mid > 0).astype(int)
|
||||
|
||||
# 条件3:短期价格动量(最近5根K线 = 5小时)
|
||||
price_momentum_1h_short = dataframe['close'].pct_change(5)
|
||||
momentum_short_bullish = (price_momentum_1h_short > 0).astype(int)
|
||||
|
||||
# 条件4:EMA趋势(辅助)
|
||||
ema_trend_1h = (dataframe['ema_50_1h'] > dataframe['ema_200_1h']).astype(int)
|
||||
|
||||
# 综合判断:长期动量0.35 + 中期动量0.30 + 短期动量0.25 + EMA0.10
|
||||
# 价格动量合计90%,EMA仅10%(大幅降低EMA权重)
|
||||
dataframe['trend_1h_ema'] = (
|
||||
momentum_long_bullish * 0.35 +
|
||||
momentum_mid_bullish * 0.30 +
|
||||
momentum_short_bullish * 0.25 +
|
||||
ema_trend_1h * 0.10
|
||||
).clip(0, 1)
|
||||
|
||||
# 计算熊牛得分(0-100)
|
||||
# 权重:3m熊牛权重10,15m熊牛权重35,1h熊牛权重65
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user