Skip to content

reevlee/quant-system-31gp

Repository files navigation

31GP量化交易系统 v1.0

🚀 现代化、用户友好的中国A股量化交易系统

📦 架构升级: 新CLI模块化设计,采用 quant_system/ 模块化架构

✨ 新特性

  • 🎯 用户友好的CLI界面 - 一键命令操作
  • 🔐 安全配置管理 - Token和敏感信息分离存储
  • 💾 智能缓存系统 - 提升性能和响应速度
  • 🌈 彩色日志输出 - 直观的状态提示
  • 📊 现代化Web界面 - 响应式设计,支持移动端
  • 📈 模拟交易系统 - 真实交易成本和持仓管理
  • 🛡️ 完善的错误处理 - 详细的错误提示和解决方案

📦 v1.0 版本说明

发布日期: 2024-12 重大更新: 架构全面重构,首个正式发布版本

核心改进

🏗️ 架构现代化

  • 模块化设计: 从分散脚本迁移到 quant_system/ 统一架构
  • 清晰分层: core/(核心服务)、data/(数据管理)、backtest/(回测引擎)、trading/(模拟交易)、web/(Web 界面)
  • 代码复用: 消除重复代码,提升可维护性

🎯 用户体验提升

  • 统一 CLI: quant-system 命令替代 10+ 个独立脚本
  • 配置管理: 标准化配置文件 ~/.31gp_config.json
  • 彩色日志: 直观的状态提示和错误信息
  • 详细帮助: 每个命令提供 --help 说明

💰 模拟交易系统(新增)

  • 真实成本: 手续费(0.03%)、滑点(0.01%)、最低手续费(5元)
  • 订单管理: 市价单、限价单、状态跟踪
  • 持仓跟踪: 实时 P/L、成本分析、浮动盈亏
  • 数据持久化: SQLite 存储历史记录
  • Web 可视化: 权益曲线、持仓明细、成交记录

⚡ 性能优化

  • 智能缓存: 本地文件缓存 + Redis 支持
  • 并行处理: 异步数据获取(--parallel 参数)
  • 批量操作: 一次更新数千只股票
  • 指数退避: 自动处理 SQLite 写锁冲突

📊 策略扩展

  • 新增策略: RSI(相对强弱指标)、MACD(趋势跟踪)
  • 参数灵活: 支持 -p key=value 自定义配置
  • 风险指标: 夏普比率、Calmar 比率、Sortino 比率

🌐 Web 界面增强

  • 响应式设计: 支持移动端访问
  • 模拟交易页: 在线配置、实时结果展示
  • 交互图表: ECharts 驱动的 K 线图和技术指标
  • 数据管理: 批量更新、状态监控

迁移指南

旧版清理

已删除以下过时内容:

  • 备份目录: backtest_backup/, data_backup/, scheduler_backup/, webapp_backup/
  • 迁移脚本: check_migration.py
  • 旧版文档: CLAUDE.md

命令映射

旧脚本 新命令
python data/getData.py 000001.SZ quant-system data fetch 000001.SZ
python backtest/backtest2easy_lite.py quant-system backtest run 000001.SZ
python webapp/app.py quant-system web
python scheduler/auto_tasks.py quant-system data update

兼容性

  • ✓ 数据库结构向后兼容(qtdb_pro.db
  • ✓ 配置文件自动迁移
  • ✓ 旧脚本仍可运行(显示废弃警告)

已知限制

  • SQLite 并发写入限制(建议并发数 ≤ 5)
  • 模拟交易未考虑涨跌停限制
  • 暂不支持期货、期权等衍生品

下一步计划

  • 实时模拟交易(接入实时行情)
  • 策略优化器(参数自动调优)
  • 组合管理(多资产配置)
  • 券商 API 集成(实盘对接)

📈 模拟交易

核心特性

  • 📊 真实成本计算 - 手续费、滑点、最低手续费
  • 💰 资金管理 - 现金约束、仓位管理
  • 📈 持仓跟踪 - 实时P/L、成本分析
  • 🔄 订单系统 - 市价单、限价单、状态跟踪
  • 💾 数据持久化 - SQLite存储历史记录
  • 📱 Web界面 - 可视化结果展示

快速示例

# 基础模拟交易
quant-system trading sim 000001.SZ --strategy double_ma

# 自定义参数
quant-system trading sim 600519.SH \
  --strategy rsi \
  --capital 200000 \
  -p window=14 \
  -p overbought=75

# Web界面模拟
quant-system web
# 访问 http://127.0.0.1:5000/trading/sim

支持策略

  • 技术指标策略: 双均线、突破、动量、均值回归、RSI、MACD
  • 全策略支持: 所有回测策略均可用于模拟交易
  • 参数自定义: 支持策略参数的个性化配置

详细文档: docs/trading_simulator.md

🚀 快速开始

1. 安装系统

# 克隆项目
git clone https://github.com/31gp/quant-system.git
cd quant-system

# 安装依赖
pip install -e .

# 首次配置
quant-system init

2. 基础使用

# 获取股票数据
quant-system data fetch 000001.SZ --start-date 20240101

# 运行回测
quant-system backtest run 000001.SZ --strategy double_ma

# 运行模拟交易(推荐)
quant-system trading sim 000001.SZ --strategy double_ma --capital 100000

# 启动Web界面
quant-system web --port 8080

3. 高级功能

# 批量更新所有股票数据
quant-system data update --parallel 10 --days 365

# 自定义参数回测
quant-system backtest run 000001.SZ \
  --strategy double_ma \
  --params short_window=10 long_window=30

# 并行获取多只股票数据
quant-system data fetch 000001.SZ,000002.SZ,600000.SH --parallel 3

# 查看系统状态
quant-system status

📋 命令参考

数据管理

命令 描述 示例
data fetch 获取历史数据 quant-system data fetch 000001.SZ
data fetch --parallel 并行获取多只股票 quant-system data fetch 000001.SZ,600000.SH --parallel 3
data realtime 获取实时数据 quant-system data realtime 000001.SZ 600000.SH
data update 更新所有数据 quant-system data update --parallel 10

回测系统

命令 描述 示例
backtest run 运行回测 quant-system backtest run 000001.SZ
backtest run --parallel 并行回测多只股票 quant-system backtest run 000001.SZ,600000.SH --parallel 3
backtest list-strategies 列出策略 quant-system backtest list-strategies

系统管理

命令 描述 示例
init 初始化系统 quant-system init
status 查看状态 quant-system status
web 启动Web界面 quant-system web

🏗️ 架构升级

从旧版本迁移

旧版本代码仍然兼容,但推荐使用新架构:

旧脚本 新命令 状态
python data/getData.py 000001.SZ quant-system data fetch 000001.SZ 已迁移/已废弃
python backtest/backtest2easy_lite.py quant-system backtest run 000001.SZ 已迁移/已废弃
python webapp/app.py quant-system web 已迁移/已废弃
python scheduler/auto_tasks.py quant-system data update (自动调度) 已迁移/已废弃
# 旧方式(已废弃,仍支持)
python data/getData.py 000001.SZ

# 新方式(推荐)
quant-system data fetch 000001.SZ

配置文件

新系统使用标准配置文件:

  • 位置: ~/.31gp_config.json
  • 格式: JSON格式,支持所有配置选项

数据存储

  • 数据库: SQLite (qtdb_pro.db)
  • 缓存: 本地缓存目录 (./cache) 或 Redis
  • 日志: 彩色控制台输出

并行数据获取

# 批量获取多只股票(逗号分隔)
quant-system data fetch 000001.SZ,000002.SZ,600000.SH --parallel 3

# 更新所有股票(并发10)
quant-system data update --parallel 10 --days 365

# 并行回测多只股票
quant-system backtest run 000001.SZ,600000.SH --parallel 2 --strategy double_ma

Redis 缓存配置

# 启用 Redis(需先启动 Redis 服务)
export REDIS_ENABLED=true
export REDIS_HOST=localhost
export REDIS_PORT=6379
export REDIS_DB=0

# 查看缓存状态
quant-system status

# 性能测试
python benchmark_performance.py

Redis 安装

# macOS
brew install redis
brew services start redis

# Ubuntu/Debian
sudo apt-get install redis-server
sudo systemctl start redis-server

# Docker
docker run -d -p 6379:6379 redis:latest

🎯 策略系统

内置策略

  1. 双均线策略 - 趋势跟踪,基于短期和长期均线交叉
  2. 突破策略 - 价格突破N日最高/最低时产生交易信号
  3. 动量策略 - 基于价格动量效应的趋势跟踪策略
  4. 均值回归策略 - 价格偏离均线一定幅度时反向操作
  5. RSI策略 - 基于相对强弱指标的超买超卖策略,识别过度买入/卖出信号
  6. MACD策略 - 基于MACD指标的趋势跟踪策略,捕捉趋势转换点

回测指标

  • 夏普比率 - 衡量风险调整后收益,数值越高表示单位风险的收益越高
  • Calmar比率 - 年化收益与最大回撤的比率,评估风险调整后的表现
  • Sortino比率 - 仅考虑下行风险的夏普比率变体,更关注风险控制
  • 最大回撤 - 从历史最高点到最低点的最大跌幅,衡量最坏情况下的损失
  • 胜率 - 盈利交易次数占总交易次数的比例,反映策略的成功率

自定义策略

from quant_system.backtest import BacktestEngine

engine = BacktestEngine()
result = engine.run_backtest(
    stock_code="000001.SZ",
    strategy="double_ma",
    short_window=5,
    long_window=20
)

🔧 开发指南

环境要求

  • Python 3.7+
  • Tushare Token
  • 网络连接

开发环境

# 开发模式安装
pip install -e .[dev]

# 代码格式化
black quant_system/

# 类型检查
mypy quant_system/

扩展开发

  1. 新策略: 继承策略基类
  2. 新数据源: 实现数据源接口
  3. 新界面: 基于Flask扩展

📊 Web界面

功能特性

  • 📈 仪表板: 数据库统计、热门股票、可视化图表
  • 💹 实时行情: 股票列表和实时数据展示
  • 📊 历史数据: K线图和交互式技术指标图表
  • 🎯 策略回测: 在线回测、参数配置、详细结果展示
  • 💰 模拟交易: 真实交易成本计算、持仓跟踪、交易历史
  • 🔄 数据管理: 数据更新、状态监控、批量操作

访问方式

quant-system web                    # 本地访问
quant-system web --host 0.0.0.0     # 局域网访问
quant-system web --port 8080        # 自定义端口

🐛 故障排除

常见问题

  1. Token配置错误

    quant-system init  # 重新配置
  2. 数据库锁定

    rm qtdb_pro.db    # 重新初始化
    quant-system init
  3. 依赖问题

    pip install -r requirements.txt --upgrade
  4. 迁移问题 如遇到迁移问题,请参考以下步骤:

    1. 重装CLI: pip install -e .
    2. 初始化: quant-system init
    3. 检查帮助: quant-system --help

调试模式

quant-system --verbose data fetch 000001.SZ
quant-system --debug web

📈 性能优化

缓存系统

  • 智能缓存: 自动缓存常用数据
  • 过期策略: 可配置的缓存过期时间
  • 缓存清理: 自动清理过期数据

批量操作

  • 批量数据更新: 支持多线程数据获取
  • 批量回测: 支持多股票并行回测

SQLite 并发限制

  • 写锁竞争: SQLite在高并发写入时可能出现锁竞争
  • 推荐并发数: 建议批量操作时并发数控制在3-5以内
  • 自动重试: 系统已内置指数退避重试机制,处理写锁冲突
  • 数据库限制: SQLite适合单用户或低并发场景,高并发请考虑PostgreSQL/MySQL

🤝 贡献指南

  1. Fork项目
  2. 创建功能分支
  3. 提交代码
  4. 创建Pull Request

📄 许可证

MIT License - 详见 LICENSE 文件

🆘 支持

  • 文档: 查看 docs/ 目录
  • 问题: 提交GitHub Issue
  • 讨论: GitHub Discussions

从旧版本升级的用户: 运行 quant-system init 完成配置迁移

📋 旧脚本兼容说明

以下旧脚本已废弃,不再推荐使用,仅供兼容或参考代码:

已废弃脚本列表

  • data/getData.py - 使用 quant-system data fetch 替代
  • data/getDataFromTushare.py - 内置于新CLI
  • data/dealData.py - 内置于新CLI
  • basis/basis.py - 内置于新CLI
  • backtest/backtest2easy_lite.py - 使用 quant-system backtest run 替代
  • backtest/batch_backtest.py - 使用新CLI批量功能
  • backtest/strategies.py - 重构为新CLI策略模块
  • webapp/app.py - 使用 quant-system web 替代
  • scheduler/auto_tasks.py - 使用 quant-system data update 替代
  • quant.py - 使用 quant-system 直接替代

兼容说明

  • 旧脚本仍可正常运行,但会显示废弃警告
  • 建议新项目直接使用新CLI命令
  • 旧代码已完全移除,系统采用新架构
  • 未来版本可能完全移除旧脚本支持

About

31GP Quantitative Trading System for A-share

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published