freqai同时优化回归和分类参数

This commit is contained in:
zhangkun9038@dingtalk.com 2025-08-17 02:34:26 +08:00
parent 6dd39b829f
commit 2728881fe3
2 changed files with 42 additions and 9 deletions

View File

@ -480,6 +480,19 @@ class FreqaiPrimer(IStrategy):
k_buy = self.linear_map(market_trend_score, 0, 100, 1.2, 0.8)
k_sell = self.linear_map(market_trend_score, 0, 100, 1.5, 1.0)
# 处理分类模型的预测值
classification_columns = [col for col in dataframe.columns if "&*-optimal_first_length" in col or "optimal_first_length" in col]
if classification_columns:
for col in classification_columns:
if col in dataframe.columns:
# 重命名分类预测列以便后续使用
dataframe["optimal_first_length_pred"] = dataframe[col]
logger.info(f"[{pair}] 找到分类模型预测列: {col}, 重命名为 optimal_first_length_pred")
logger.info(f"[{pair}] 分类预测值统计: {dataframe[col].value_counts().to_dict()}")
break
else:
logger.warning(f"[{pair}] 未找到分类模型预测列,将使用默认值")
self.buy_threshold = labels_mean - k_buy * labels_std
self.sell_threshold = labels_mean + k_sell * labels_std
@ -1347,9 +1360,8 @@ class FreqaiPrimer(IStrategy):
try:
# 使用分类模型预测最优 first_length
if "&*-optimal_first_length" in dataframe.columns:
# 获取最新预测值
predicted_value = dataframe["&*-optimal_first_length"].iloc[-1]
if "optimal_first_length_pred" in dataframe.columns:
predicted_value = dataframe["optimal_first_length_pred"].iloc[-1]
if pd.notna(predicted_value):
optimal_length_class = int(predicted_value)
length_mapping = {0: 2, 1: 4, 2: 6, 3: 8, 4: 10}
@ -1357,14 +1369,10 @@ class FreqaiPrimer(IStrategy):
logger.info(f"[{pair}] ✅ 分类模型预测成功: first_length={first_length} (类别: {optimal_length_class})")
else:
first_length = 2 # 保持默认值为2
logger.warning(f"[{pair}] ⚠️ 分类模型预测为NaN使用默认值: {first_length}")
logger.warning(f"[{pair}] ⚠️ 分类模型预测为NaN使用默认值: {first_length}")
else:
first_length = 2 # 保持默认值为2
logger.warning(f"[{pair}] ❌ 分类模型列不存在,使用默认值: {first_length}")
# 调试信息显示当前dataframe列
ai_columns = [col for col in dataframe.columns if col.startswith('&') or col.startswith('&*')]
logger.info(f"[{pair}] 📊 当前AI预测列: {ai_columns}")
logger.warning(f"[{pair}] ⚠️ 分类模型列不存在,使用默认值: {first_length}")
# 根据 first_length 动态调整其他段长
second_length = first_length * 3

25
test_mixed_models.sh Executable file
View File

@ -0,0 +1,25 @@
#!/bin/bash
# 测试混合模型策略的启动脚本
# 确保使用新的配置文件和模型名称
echo "🚀 启动混合模型策略测试..."
echo "📊 使用模型: freqai_primer_mixed"
echo "📁 配置文件: test_mixed_models_config.json"
# 设置环境变量
export FREQTRADE__STRATEGY_NAME="freqaiprimer"
export FREQTRADE__CONFIG_PATH="/Users/zhangkun/myTestFreqAI/test_mixed_models_config.json"
# 启动策略
python -m freqtrade trade \
--config /Users/zhangkun/myTestFreqAI/test_mixed_models_config.json \
--strategy freqaiprimer \
--log-level INFO \
--freqai-enabled \
--freqaimodel LightGBMClassifier \
--strategy-path /Users/zhangkun/myTestFreqAI/freqtrade/templates \
--db-url sqlite:///user_data/tradesv3.sqlite \
--userdir user_data
echo "✅ 策略启动完成"