188 lines
4.3 KiB
Markdown
188 lines
4.3 KiB
Markdown
# 数据库存储和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)
|
||
- [ ] 添加用户认证和权限管理
|
||
- [ ] 实现策略回测结果存储
|
||
- [ ] 添加图表可视化功能
|
||
- [ ] 支持策略参数在线调整
|
||
- [ ] 实现数据导入导出功能 |