stockrsi 85分以上阻止开多

This commit is contained in:
zhangkun9038@dingtalk.com 2025-07-05 15:47:27 +00:00
parent 8c0b6669d8
commit d25a5809d2

View File

@ -190,7 +190,10 @@ class FreqaiPrimer(IStrategy):
dataframe["volume_mean_20"] = dataframe["volume"].rolling(20).mean()
dataframe["volume_std_20"] = dataframe["volume"].rolling(20).std()
dataframe["volume_z_score"] = (dataframe["volume"] - dataframe["volume_mean_20"]) / dataframe["volume_std_20"]
# 计算 STOCHRSI
dataframe['stochrsi_k'], dataframe['stochrsi_d'] = stochrsi(dataframe['close'], length=14, k=3, d=3, fillna=True)
# 计算 MASTCHRIS3 (假设为 STOCHRSI K 的 3 周期 SMA)
dataframe['mastchris3'] = sma(dataframe['stochrsi_k'], length=3)
# 数据清理
for col in ["ema200", "bb_upperband", "bb_middleband", "bb_lowerband", "rsi", "volume_z_score", "&-price_value_divergence", "price_value_divergence"]:
dataframe[col] = dataframe[col].replace([np.inf, -np.inf], 0).ffill().fillna(0)
@ -547,6 +550,14 @@ class FreqaiPrimer(IStrategy):
logger.error(f"[{pair}] Invalid rate value: {rate} (type: {type(rate)}). Skipping trade entry.")
return False
# 获取当前数据
dataframe, _ = self.dp.get_analyzed_dataframe(pair, self.timeframe)
last_candle = dataframe.iloc[-1]
# 检查 STOCHRSI K 和 MASTCHRIS3 是否均 > 85
if last_candle['stochrsi_k'] > 85 and last_candle['mastchris3'] > 85:
return False # 阻止开多
market_trend_score = self.get_market_trend(dataframe=DataFrame, metadata={'pair': pair})
cooldown_period_minutes = self.COOLDOWN_PERIOD_MINUTES.value if market_trend_score > 50 else self.COOLDOWN_PERIOD_MINUTES.value // 2