trading.ai/README_DATABASE.md
2025-09-18 20:45:01 +08:00

188 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 数据库存储和Web展示功能
## 功能概述
本系统现已支持将策略筛选结果按策略分组存储到SQLite数据库并提供Web界面进行可视化展示。
## 🗄️ 数据库设计
### 主要表结构
1. **strategies** - 策略表
- 存储不同的交易策略信息
- 支持策略配置参数的JSON存储
2. **scan_sessions** - 扫描会话表
- 记录每次市场扫描的信息
- 关联策略ID记录扫描统计数据
3. **stock_signals** - 股票信号表
- 存储具体的股票筛选信号
- 包含完整的K线数据和技术指标
4. **pullback_alerts** - 回踩监控表
- 存储回踩提醒信息
- 关联原始信号,记录回踩详情
### 数据库文件位置
- 数据库文件: `data/trading.db`
- 建表脚本: `src/database/schema.sql`
## 🌐 Web展示功能
### 启动Web服务
```bash
# 方法1: 使用启动脚本
python start_web.py
# 方法2: 直接运行
cd web
python app.py
```
### 访问地址
- 首页: http://localhost:8080
- 交易信号: http://localhost:8080/signals
- 回踩监控: http://localhost:8080/pullbacks
### 页面功能
#### 1. 首页 (/)
- 策略统计概览
- 最新交易信号列表
- 最近回踩提醒
#### 2. 交易信号页面 (/signals)
- 详细的信号列表
- 支持策略和时间范围筛选
- 分页显示
#### 3. 回踩监控页面 (/pullbacks)
- 回踩提醒记录
- 风险等级分类
- 统计图表
### API接口
- `GET /api/signals` - 获取信号数据
- `GET /api/stats` - 获取策略统计
- `GET /api/pullbacks` - 获取回踩提醒
## 🔧 使用方法
### 1. 策略扫描自动存储
当运行K线形态策略扫描时结果会自动存储到数据库
```python
from src.strategy.kline_pattern_strategy import KLinePatternStrategy
# 初始化策略(会自动创建数据库连接)
strategy = KLinePatternStrategy(data_fetcher, notification_manager, config)
# 执行市场扫描(结果自动存储到数据库)
results = strategy.scan_market()
```
### 2. 手动数据库操作
```python
from src.database.database_manager import DatabaseManager
# 初始化数据库管理器
db_manager = DatabaseManager()
# 获取最新信号
signals = db_manager.get_latest_signals(limit=50)
# 获取策略统计
stats = db_manager.get_strategy_stats()
# 按日期范围查询
from datetime import date, timedelta
start_date = date.today() - timedelta(days=7)
recent_signals = db_manager.get_signals_by_date_range(start_date)
```
### 3. 多策略支持
系统支持多个策略的数据分别存储:
```python
# 创建新策略
strategy_id = db_manager.create_or_update_strategy(
strategy_name="新策略名称",
strategy_type="strategy_type",
description="策略描述",
config={"param1": "value1"}
)
```
## 📊 数据库维护
### 清理旧数据
```python
# 清理90天前的数据
db_manager.cleanup_old_data(days_to_keep=90)
```
### 备份数据库
```bash
# 复制数据库文件进行备份
cp data/trading.db data/trading_backup_$(date +%Y%m%d).db
```
## 🎨 Web界面特性
- **响应式设计**: 支持桌面和移动设备
- **实时更新**: 数据自动刷新
- **交互式表格**: 支持排序、筛选
- **美观界面**: 使用Bootstrap框架
- **数据导出**: 支持CSV格式导出
## 🚀 性能优化
- **缓存机制**: 股票名称缓存,避免重复请求
- **分页显示**: 大数据量分页加载
- **索引优化**: 数据库关键字段建立索引
- **批量操作**: 信号批量保存,提高性能
## 🔍 故障排除
### 常见问题
1. **数据库文件权限问题**
```bash
# 检查data目录权限
ls -la data/
# 如果需要,修改权限
chmod 755 data/
chmod 644 data/trading.db
```
2. **Web界面无法访问**
- 检查Flask是否已安装: `pip install flask`
- 确认端口5000是否被占用
- 查看控制台错误信息
3. **数据库连接失败**
- 确认data目录存在且可写
- 检查SQLite库是否正常工作
### 日志查看
```bash
# 查看应用日志
tail -f logs/trading.log
# 查看Web服务日志
# 直接在启动Web服务的终端查看
```
## 📈 未来扩展
- [ ] 支持更多数据库后端MySQL, PostgreSQL
- [ ] 添加用户认证和权限管理
- [ ] 实现策略回测结果存储
- [ ] 添加图表可视化功能
- [ ] 支持策略参数在线调整
- [ ] 实现数据导入导出功能