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

4.3 KiB
Raw Blame History

数据库存储和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服务

# 方法1: 使用启动脚本
python start_web.py

# 方法2: 直接运行
cd web
python app.py

访问地址

页面功能

1. 首页 (/)

  • 策略统计概览
  • 最新交易信号列表
  • 最近回踩提醒

2. 交易信号页面 (/signals)

  • 详细的信号列表
  • 支持策略和时间范围筛选
  • 分页显示

3. 回踩监控页面 (/pullbacks)

  • 回踩提醒记录
  • 风险等级分类
  • 统计图表

API接口

  • GET /api/signals - 获取信号数据
  • GET /api/stats - 获取策略统计
  • GET /api/pullbacks - 获取回踩提醒

🔧 使用方法

1. 策略扫描自动存储

当运行K线形态策略扫描时结果会自动存储到数据库

from src.strategy.kline_pattern_strategy import KLinePatternStrategy

# 初始化策略(会自动创建数据库连接)
strategy = KLinePatternStrategy(data_fetcher, notification_manager, config)

# 执行市场扫描(结果自动存储到数据库)
results = strategy.scan_market()

2. 手动数据库操作

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. 多策略支持

系统支持多个策略的数据分别存储:

# 创建新策略
strategy_id = db_manager.create_or_update_strategy(
    strategy_name="新策略名称",
    strategy_type="strategy_type",
    description="策略描述",
    config={"param1": "value1"}
)

📊 数据库维护

清理旧数据

# 清理90天前的数据
db_manager.cleanup_old_data(days_to_keep=90)

备份数据库

# 复制数据库文件进行备份
cp data/trading.db data/trading_backup_$(date +%Y%m%d).db

🎨 Web界面特性

  • 响应式设计: 支持桌面和移动设备
  • 实时更新: 数据自动刷新
  • 交互式表格: 支持排序、筛选
  • 美观界面: 使用Bootstrap框架
  • 数据导出: 支持CSV格式导出

🚀 性能优化

  • 缓存机制: 股票名称缓存,避免重复请求
  • 分页显示: 大数据量分页加载
  • 索引优化: 数据库关键字段建立索引
  • 批量操作: 信号批量保存,提高性能

🔍 故障排除

常见问题

  1. 数据库文件权限问题

    # 检查data目录权限
    ls -la data/
    # 如果需要,修改权限
    chmod 755 data/
    chmod 644 data/trading.db
    
  2. Web界面无法访问

    • 检查Flask是否已安装: pip install flask
    • 确认端口5000是否被占用
    • 查看控制台错误信息
  3. 数据库连接失败

    • 确认data目录存在且可写
    • 检查SQLite库是否正常工作

日志查看

# 查看应用日志
tail -f logs/trading.log

# 查看Web服务日志
# 直接在启动Web服务的终端查看

📈 未来扩展

  • 支持更多数据库后端MySQL, PostgreSQL
  • 添加用户认证和权限管理
  • 实现策略回测结果存储
  • 添加图表可视化功能
  • 支持策略参数在线调整
  • 实现数据导入导出功能