分段长度用freqai优化

This commit is contained in:
zhangkun9038@dingtalk.com 2025-08-17 00:34:10 +08:00
parent 0f0b2e0b83
commit 32089fbf18

View File

@ -1448,10 +1448,16 @@ class FreqaiPrimer(IStrategy):
predicted_length = int(predictions['trend_segment_length'])
# 确保在有效范围内
predicted_length = max(1, min(5, predicted_length))
logger.info(f"[{pair}] FreqAI预测段长: {predicted_length} (比例: {predicted_length},{predicted_length*3},{predicted_length*5})")
logger.info(f"[{pair}] FreqAI预测段长: {predicted_length} (比例: {predicted_length}:{predicted_length*3}:{predicted_length*5})")
logger.info(f"[{pair}] FreqAI预测详情 - "
f"第一段长度: {predicted_length}, "
f"第二段长度: {predicted_length*3}, "
f"第三段长度: {predicted_length*5}, "
f"总分析周期: {predicted_length + predicted_length*3 + predicted_length*5}")
return predicted_length
else:
logger.warning(f"[{pair}] FreqAI未返回段长预测使用默认段长2")
logger.info(f"[{pair}] 使用默认段长 - 第一段长度: 2, 第二段长度: 6, 第三段长度: 10, 总分析周期: 18")
return 2
except Exception as e:
@ -1573,6 +1579,27 @@ class FreqaiPrimer(IStrategy):
# 设置最优段长
dataframe.loc[dataframe.index[current_idx], "&-trend_segment_length"] = float(best_length)
# 输出具体的最优段长结果
logger.info(f"[{pair}] 最优趋势分段长度计算完成 - "
f"第一段长度: {best_length}, "
f"第二段长度: {best_length*3}, "
f"第三段长度: {best_length*5}, "
f"总长度: {best_length + best_length*3 + best_length*5}, "
f"最佳得分: {best_score:.4f}")
logger.info(f"[{pair}] 最优趋势分段长度计算完成")
# 计算统计信息并输出
segment_lengths = dataframe["&-trend_segment_length"].dropna()
if len(segment_lengths) > 0:
length_counts = segment_lengths.value_counts()
logger.info(f"[{pair}] 趋势分段长度统计:")
for length in sorted(length_counts.index):
count = length_counts[length]
percentage = (count / len(segment_lengths)) * 100
logger.info(f"[{pair}] 段长{int(length)}: {count}次 ({percentage:.1f}%) - 比例 {int(length)}:{int(length*3)}:{int(length*5)}")
avg_length = segment_lengths.mean()
logger.info(f"[{pair}] 平均段长: {avg_length:.2f}")
logger.info(f"[{pair}] 最优趋势分段长度计算完成,共计算 {len(segment_lengths)} 个数据点")
return dataframe