myTestFreqAI/check_strategy_syntax.py
zhangkun9038@dingtalk.com 509c947aa6 freqai 优化3个参数
2025-08-30 16:19:01 +08:00

65 lines
2.1 KiB
Python

import sys
import os
import ast
# 策略文件路径
strategy_file = 'freqtrade/templates/freqaiprimer.py'
try:
# 读取文件内容
with open(strategy_file, 'r', encoding='utf-8') as f:
content = f.read()
# 检查Python语法
ast.parse(content)
print(f"{strategy_file} 语法检查通过")
# 检查FreqAI相关配置
if 'freqai_info' in content:
print("✅ 包含FreqAI配置")
else:
print("❌ 未找到FreqAI配置")
if 'enabled=True' in content or 'enabled = True' in content:
print("✅ FreqAI配置为启用状态")
else:
print("❌ FreqAI配置为禁用状态")
# 检查关键方法
required_methods = ['populate_indicators', 'set_freqai_targets', 'feature_engineering_expand_basic']
for method in required_methods:
if f'def {method}' in content:
print(f"✅ 找到方法: {method}")
else:
print(f"❌ 未找到方法: {method}")
# 检查预测列处理逻辑
if 'FreqAI预测列缺失' in content:
print("✅ 包含预测列缺失处理逻辑")
else:
print("❌ 未找到预测列缺失处理逻辑")
# 检查是否定义了我们需要的目标列
target_columns = ['&-rsi_oversold', '&-rsi_overbought', '&-h1_rapid_rise_threshold']
for col in target_columns:
if col in content:
print(f"✅ 找到目标列: {col}")
else:
print(f"❌ 未找到目标列: {col}")
print("\n检查完成。语法检查通过意味着文件的Python语法没有问题。")
print("实际运行FreqAI还需要安装所有依赖并正确配置Freqtrade。")
except SyntaxError as e:
print(f"❌ 语法错误: {e}")
print(f"错误位置: 行 {e.lineno}, 列 {e.offset}")
# 显示错误行周围的代码
lines = content.split('\n')
start_line = max(0, e.lineno - 2)
end_line = min(len(lines), e.lineno + 2)
for i in range(start_line, end_line):
prefix = '> ' if i == e.lineno - 1 else ' '
print(f"{i+1:4d}{prefix}{lines[i]}")
except Exception as e:
print(f"❌ 检查失败: {e}")