可以在回测日志中清楚地看到 EMA20 仰角是否超过阈值的状态

This commit is contained in:
zhangkun9038@dingtalk.com 2026-02-10 21:49:56 +08:00
parent 1ce2c95f94
commit d1b3ac3ae2

View File

@ -21,7 +21,7 @@ UTC_PLUS_8 = timezone(timedelta(hours=8))
class FreqaiPrimer(IStrategy):
# 策略参数 - 使用custom_roi替代minimal_roi字典
loglevel = "warning"
minimal_roi = {}
minimal_roi = {}self.add_position_callback.value
# 启用自定义ROI回调函数
use_custom_roi = True
@ -500,6 +500,8 @@ class FreqaiPrimer(IStrategy):
def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
# ========== 新增ML目标变量数据新鲜度监控 ==========
# 检查FreqAI模型预测数据的新鲜度确保使用最新的预测结果
# 注意ML预测数据通常比普通量化数据滞后一个timeframe约3分钟
# 这是FreqAI的正常工作机制不影响策略有效性
try:
# 获取FreqAI分析过的数据帧
analyzed_df, _ = self.dp.get_analyzed_dataframe(metadata['pair'], self.timeframe)
@ -1513,6 +1515,16 @@ class FreqaiPrimer(IStrategy):
ema_trend_filter_1h_recent = ema_trend_filter_1h.iloc[-5:].tolist()
ema_trend_filter_1h_visual = ''.join(['' if x else '' for x in ema_trend_filter_1h_recent])
self.strategy_log(f" - [{ema_trend_filter_1h_visual}]#1hEMA趋势过滤(宽松版)【用于业务逻辑】")
# EMA20仰角状态可视化
if 'ema20_slope_normalized' in df.columns:
# 获取最近5个EMA20斜率值
ema20_slope_values = df['ema20_slope_normalized'].iloc[-5:]
# 检查是否超过阈值
ema20_slope_threshold = self.ema20_slope_threshold.value
ema20_slope_above_threshold = ema20_slope_values > ema20_slope_threshold
ema20_slope_visual = ''.join(['' if x else '' for x in ema20_slope_above_threshold])
self.strategy_log(f" - [{ema20_slope_visual}]#EMA20仰角>阈值(越绿越大)【用于趋势强度】")
# ========== 诊断统计结束 ==========