基于 Kronos + XGBoost 的智能量化交易系统,支持实时数据采集、特征工程、双模型预测和信号生成。
- Python 3.8+
- Docker & Docker Compose
- 8GB+ 内存推荐
- 支持多核 CPU
# 安装 Python 依赖
pip install -r requirements.txt
# 安装 Kronos 依赖(如果需要)
cd data_layer/Kronos
pip install -r requirements.txt# 复制配置文件
cp run/config.env.example run/config.env
# 编辑配置文件
vim run/config.env# 一键启动
chmod +x run/start.sh
./run/start.sh
# 或手动启动
python main.py# 使用原有启动脚本
admin_layer\run\start_all.bat
# 或使用改进版启动脚本(推荐,修复了前端启动问题)
admin_layer\run\start_all_fixed.bat运行结束后使用 admin_layer\run\stop_all.bat 可安全停止所有Windows端服务(Docker、数据采集、预测、Kronos UI 及 Admin 前后端)。
注意: 如果前端服务无法在 http://localhost:3000 正常访问,请使用
admin_layer\admin_frontend\diagnose-frontend.bat进行诊断和修复。
# 启动后端API (终端1)
cd admin_backend
python start.py
# 启动前端界面 (终端2)
cd admin_frontend
npm install
npm run dev- Kronos Web UI: http://localhost:7070
- 后台管理系统: http://localhost:3000 (前端) + http://localhost:8000 (后端API)
- PgAdmin: http://localhost:8080 (admin@trading.com / admin123)
📖 完整文档索引 - 查看所有文档的分类索引和快速导航 ⭐
- 模型规则文档 - 模型相关规则和指南
- XGBoost训练指南 - 详细的训练流程
- 数据库规则 - 数据库设计规范
- 交易规则 - 交易规则和参数指南
- 系统架构概览 - 整体架构设计
- 训练 vs 信号触发 - 核心架构理解
- Data Layer 状态 - 数据层实现进度与测试情况
- Admin Layer 状态 - 后台管理系统状态与启动说明
cex/
├── main.py # 主程序入口 (完整功能)
├── main_simple.py # 简化版主程序 (数据采集+特征)
├── main_simple_v2.py # 简化版主程序 V2 (测试版本)
├── run_tests.py # 测试运行脚本
├── requirements.txt # Python依赖
├── README.md # 项目说明
├── config-defaults.json # 默认配置
├── scripts/ # 工具脚本
│ ├── fix_imports.py # 导入修复工具
│ ├── fix_all_imports.py # 批量导入修复工具
│ ├── start_simple_v2.bat # Windows启动脚本
│ └── start_simple_v2.sh # Linux启动脚本
├── data_layer/ # 数据层
│ ├── Kronos/ # Kronos 模型
│ ├── adapters/ # 数据源适配器
│ │ ├── binance_adapter.py # Binance WebSocket
│ │ └── cmc_adapter.py # CoinMarketCap API
│ ├── processors/ # 数据处理器
│ │ ├── feature_engineer.py # 特征工程
│ │ └── kline_processor.py # K线处理
│ ├── predictors/ # 预测器
│ │ ├── kronos_predictor.py # Kronos 封装
│ │ ├── xgboost_predictor.py # XGBoost 方向判断
│ │ └── ensemble_predictor.py # 集成预测器
│ ├── interfaces/ # 对外接口
│ │ └── data_interface.py
│ ├── configs/ # 配置文件
│ │ └── data_config.json
│ ├── xgboost/ # XGBoost相关
│ │ ├── training/ # 训练脚本 (13个文件)
│ │ ├── execution/ # 执行脚本 (3个文件)
│ │ └── diagnosis/ # 诊断脚本 (2个文件)
│ └── database_manager.py # 数据库管理
├── strategy_layer/ # 策略层
│ ├── ai-ordering-strategy.md # AI策略文档
│ └── trading_rules.md # 交易规则文档
├── tests/ # 测试文件
│ ├── adapters/ # 适配器测试 (1个文件)
│ ├── system/ # 系统测试 (6个文件)
│ ├── xgboost/ # XGBoost测试 (空目录)
│ └── integration/ # 集成测试 (空目录)
├── utils/ # 工具函数
├── config/ # 配置文件
├── logs/ # 日志文件
├── middleware/ # 中间件
│ ├── docker-compose.yml # PostgreSQL + TimescaleDB
│ ├── init.sql # 数据库初始化
│ └── schemas/ # 数据库表结构
│ ├── klines.sql
│ ├── features.sql
│ ├── predictions.sql
│ └── signals.sql
├── run/ # 启动脚本
│ ├── start.sh # 启动脚本
│ ├── stop.sh # 停止脚本
│ └── config.env # 环境配置
├── config/ # 全局配置
│ └── trading_config.json
├── logs/ # 日志文件
├── models/ # 模型文件
└── main.py # 主程序入口
- Binance WebSocket: 实时K线、深度、成交数据
- CoinMarketCap: 市场深度和情绪数据
- 数据清洗: 异常值检测、缺失值处理
- 数据存储: PostgreSQL + TimescaleDB 时序数据库
- 技术指标: 收益率、ATR、波动率、RSI、MACD
- 微结构指标: 盘口不平衡、点差、深度比率
- 资金流指标: 资金流入、大单比例、VWAP偏差
- 特征归一化: Z-score标准化,动态计算
- 异常检测: IsolationForest + LOF双重检测
- Kronos模型: 预测未来120个5分钟K线价格走势
- XGBoost模型: 基于预测结果和特征判断多空方向
- 集成融合: 智能信号生成,提高预测准确性
- 做多条件: Kronos预测涨幅>1% + XGBoost score>0.7
- 做空条件: Kronos预测跌幅>1% + XGBoost score<-0.7
- 观望条件: 其他情况
- 信号管理: 冷却时间、置信度阈值、风险控制
实时数据 → 特征工程 → 双模型预测 → 信号生成 → 数据库存储
↓ ↓ ↓ ↓ ↓
Binance 技术指标 Kronos预测 智能融合 PostgreSQL
WebSocket 微结构指标 XGBoost判断 信号管理 TimescaleDB
CMC API 资金流指标 集成预测 风险控制 时序存储
编辑 config/trading_config.json:
{
"trading": {
"symbol": "BTC/USDT",
"timeframe": "5m",
"lookback_window": 400,
"prediction_length": 120
},
"signals": {
"long_threshold": 0.7,
"short_threshold": -0.7,
"cooldown_seconds": 60
}
}# 查看实时日志
tail -f logs/*.log
# 查看服务状态
ps aux | grep python
# 查看数据库状态
docker logs trading_timescaledb- 访问 Kronos Web UI: http://localhost:7070
- 选择模型:
kronos-small - 选择设备:
CPU - 加载数据:
XSHG_5min_600977.csv - 开始预测
-- 查看最新预测
SELECT * FROM predictions
WHERE symbol = 'BTC/USDT'
ORDER BY prediction_time DESC
LIMIT 10;
-- 查看交易信号
SELECT * FROM signals
WHERE symbol = 'BTC/USDT'
ORDER BY signal_time DESC
LIMIT 10;
-- 查看特征数据
SELECT * FROM features
WHERE symbol = 'BTC/USDT'
ORDER BY timestamp DESC
LIMIT 10;- 预测准确率: 方向预测正确率
- 预测延迟: 从数据到预测的时间
- 系统资源: CPU、内存、磁盘使用率
- 数据库性能: 查询响应时间、连接数
# 查看错误日志
grep "ERROR" logs/*.log
# 查看预测日志
grep "预测完成" logs/ensemble_predictor.log
# 查看数据采集日志
grep "处理K线数据" logs/binance_adapter.log-- 查看表大小
SELECT schemaname, tablename,
pg_size_pretty(pg_total_relation_size(schemaname||'.'||tablename)) as size
FROM pg_tables
WHERE schemaname = 'public'
ORDER BY pg_total_relation_size(schemaname||'.'||tablename) DESC;
-- 查看预测统计
SELECT model_type,
COUNT(*) as total_predictions,
AVG(confidence) as avg_confidence
FROM predictions
GROUP BY model_type;- 在
data_layer/adapters/创建新的适配器 - 实现标准的数据接口
- 在
main.py中注册适配器 - 更新配置文件
- 在
feature_engineer.py中添加特征计算函数 - 更新特征配置
- 更新数据库表结构
- 测试特征计算正确性
- 在
data_layer/predictors/创建新的预测器 - 实现标准的预测接口
- 在
ensemble_predictor.py中集成 - 更新模型配置
- 数据库连接失败: 检查Docker是否运行,数据库是否启动
- 模型加载失败: 检查模型文件是否存在,依赖是否安装
- 预测准确率低: 检查特征质量,调整模型参数
- 内存不足: 调整批处理大小,清理历史数据
- 前端无法访问: 检查端口3000是否被占用,使用诊断工具 admin_layer\admin_frontend\diagnose-frontend.bat 进行修复
# 启用详细日志
export LOG_LEVEL=DEBUG
python main.py
# 单独测试组件
python data_layer/adapters/binance_adapter.py
python data_layer/predictors/ensemble_predictor.py- 调整数据库连接池大小
- 优化特征计算算法
- 使用更快的模型推理
- 调整数据保留策略
- 预测延迟: < 1秒
- 预测准确率: > 70%
- 系统吞吐量: 1000+ 预测/小时
- 数据延迟: < 100ms
- 存储效率: 压缩比 > 80%
- 查询性能: < 10ms
- 内存使用: < 4GB
- CPU使用: < 50%
- 磁盘使用: < 10GB
- Fork 项目
- 创建功能分支
- 提交更改
- 推送到分支
- 创建 Pull Request
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
如有问题或建议,请:
- 查看项目文档
- 提交 Issue
- 联系开发团队
注意: 本系统仅用于学习和研究目的,不构成投资建议。使用前请充分了解风险。