# stocks_quotation_quant_backtest **Repository Path**: qiangge_666/stocks_quotation_quant_backtest ## Basic Information - **Project Name**: stocks_quotation_quant_backtest - **Description**: No description available - **Primary Language**: Python - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 9 - **Forks**: 1 - **Created**: 2021-12-25 - **Last Updated**: 2026-03-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 股票行情数据采集与量化交易回测系统 ## 📊 项目概述 这是一个完整的股票行情数据采集、存储和量化交易回测系统。系统支持多数据源采集、实时数据处理、数据可视化以及多种量化策略的实现和回测。 ## 🏗️ 系统架构 ``` 数据采集层 → 数据存储层 → 数据处理层 → 策略回测层 → 可视化展示层 ↓ ↓ ↓ ↓ ↓ 多数据源API TinyDB/文件 数据清洗转换 策略引擎 Web前端图表 ``` ## 🎯 核心功能 ### 1. 数据采集 (Data Collection) - **多数据源支持**: - Tushare: 专业金融数据平台 - EasyQuotation: 实时股票行情 - Baostock: 历史股票数据 - AkShare: 开源金融数据接口 - **数据类型**: - 实时行情数据 (价格、成交量、买卖盘等) - 历史 K 线数据 (日线、周线、月线) - 分钟级数据 (5/15/30/60 分钟) - 财务数据和指标 ### 2. 数据存储 (Data Storage) - **TinyDB**: 轻量级 JSON 数据库 (当前使用) - 无需额外数据库服务 - 数据持久化为 JSON 文件 - 内置 60 秒内存缓存 - **MongoDB**: 历史版本 (已废弃) - 详细的表结构设计 - 包含完整的买卖盘数据 - **MySQL**: 传统关系型数据库 (已废弃) ### 3. 数据处理 (Data Processing) - 数据清洗和格式化 - JSON/CSV 转换 - 时间序列数据处理 - 数据去重和验证 ### 4. 量化策略 (Quantitative Strategies) - **神奇九转**: 基于价格序列的趋势判断策略 - **RSI 专家系统**: 相对强弱指数策略实现 - 策略回测和性能评估 ### 5. 数据可视化 (Visualization) - **Pyecharts**: 交互式 K 线图 - 支持缩放、标记、数据刷选 - 多时间维度展示 - Web 端实时图表 ## 🚀 快速开始 ### 环境准备 ```bash # 克隆仓库 git clone https://gitee.com/qiangge_666/stocks_quotation_quant_backtest.git cd stocks_quotation_quant_backtest # 创建Python环境 (建议使用conda) conda create -n stock_quant python=3.8 conda activate stock_quant # 安装依赖 pip install -r requirements.txt pip install types-PyMySQL # 安装pre-commit钩子 pre-commit install ``` ### 数据库配置 #### MongoDB (推荐) ```bash # 使用Docker启动MongoDB cd config/database docker-compose up -d # 或使用1Panel等工具部署 # 确保MongoDB服务运行在默认端口 ``` #### 配置环境变量 ```bash # 创建.env文件 cp config/environment/.env.template .env # 编辑.env文件,填入数据库连接信息 ``` ### 运行数据采集 ```bash # 1. 采集实时行情数据 (EasyQuotation) python backend/data_collection/collectors/easyquotation.py # 2. 获取历史数据 (Tushare) # 需要先设置TUSHARE_TOKEN环境变量 export TUSHARE_TOKEN="your_token_here" python backend/data_collection/collectors/tushare.py # 3. 批量下载历史K线数据 (Baostock) python backend/data_collection/collectors/baostock.py ``` ### 数据可视化 ```bash # 生成K线图表 python backend/visualization/plot_kline.py # 在浏览器中打开生成的 k.html 文件 ``` ### 启动 Web 服务 ```bash # 启动后端API (端口5000) + 前端 (端口5173) ./start_all.sh --kill # 或者单独启动 ./start_api.sh --kill # 后端API ./start_frontend.sh --kill # 前端 ``` 访问 http://localhost:5173 查看前端页面,API 文档 http://localhost:5000/docs/ ## 📁 项目结构 ``` stocks_quotation_quant_backtest/ ├── backend/ # 源代码目录 │ ├── api/ # Flask API 服务 │ │ ├── app.py # Flask 应用 │ │ ├── routes.py # API 路由 │ │ ├── database.py # 数据库模型 │ │ └── stock_service_*.py # 股票数据服务 │ ├── data_collection/ # 数据采集模块 │ │ ├── collectors/ # 各数据源采集器 │ │ │ ├── tushare.py # Tushare数据源 │ │ │ ├── easyquotation.py # EasyQuotation实时行情 │ │ │ └── baostock.py # Baostock历史数据 │ │ └── processors/ # 数据处理器 │ ├── strategies/ # 量化策略模块 │ └── visualization/ # 可视化模块 │ └── plot_kline.py # K线图生成 ├── frontend/ # 前端目录 (React + Vite) ├── start_*.sh # 启动脚本 ├── config/ # 配置文件 │ ├── database/ # 数据库配置 │ ├── docker/ # Docker配置 │ └── environment/ # 环境配置 ├── data/ # 数据文件目录 │ ├── raw/ # 原始数据 │ ├── processed/ # 处理后数据 │ └── exports/ # 导出文件 ├── docs/ # 文档目录 │ ├── strategies/ # 策略文档 │ ├── development/ # 开发文档 │ │ └── AGENTS.md # 开发指南 │ └── api/ # API文档 ├── examples/ # 示例文件 ├── scripts/ # 脚本文件 ├── tests/ # 测试文件 ├── tools/ # 工具文件 ├── requirements.txt # Python依赖 ├── noxfile.py # 任务自动化 ├── tox.ini # 多环境测试配置 └── .pre-commit-config.yaml # 代码质量检查 ``` ## 🔧 开发指南 ### 代码质量检查 ```bash # 运行所有代码质量检查 nox -s lint # 格式化代码 black . reorder-python-imports --py3-plus . # 类型检查 mypy --no-strict-optional --ignore-missing-imports # 运行测试 pytest ``` ### 多环境测试 ```bash # 使用tox运行多Python版本测试 tox # 特定Python版本测试 tox -e py38 tox -e py311 ``` ## 📊 数据模型 ### MongoDB 文档结构 ```javascript { "code": "000027", // 股票代码 "code_location": "sz", // 交易所代码 (sh/sz) "name": "深圳能源", // 股票名称 "open_price": 8.09, // 开盘价 "close_price": 8.1, // 收盘价 "current_price": 8.44, // 当前价 "high_price": 8.44, // 最高价 "low_price": 8.0, // 最低价 "volume": 65355422, // 成交量 "date": "2021-12-23" // 日期 } ``` ### MySQL 表结构 (已废弃) 完整的 34 字段表结构,包含: - 基本信息: id, 股票代码, 名称 - 价格数据: 开盘价, 收盘价, 当前价, 最高价, 最低价 - 买卖盘: bid1-5, ask1-5 (价格和成交量) - 时间戳: 日期, 时间 ## 🔄 数据流程 1. **数据采集**: 定时任务或手动触发,从多个数据源获取数据 2. **数据验证**: 检查数据完整性和格式正确性 3. **数据存储**: 自动去重后存入 MongoDB 4. **数据更新**: 支持增量更新和全量更新 5. **数据使用**: 量化策略读取数据进行回测和可视化 ## 📈 量化策略 ### 神奇九转策略 基于汤姆·迪马克的 TD 序列理论,通过特定价格序列模式判断趋势反转点。 ### RSI 专家系统 利用相对强弱指数(RSI)构建的专家系统,结合多个时间周期的 RSI 信号进行交易决策。 ## 🐳 Docker 部署 ### MongoDB 部署 ```bash cd config/database docker-compose up -d ``` ### 开发环境 ```bash # 使用完整开发环境 docker-compose -f docker-compose.dev.yml up ``` ## 🚨 注意事项 1. **API 限制**: 各数据源有调用频率限制,请合理控制请求频率 2. **数据质量**: 建议对采集的数据进行验证和清洗 3. **存储成本**: 历史数据量较大,注意磁盘空间管理 4. **合规使用**: 请遵守各数据源的使用协议和法律法规 ## 📝 待办事项 - [ ] 添加更多量化策略实现 - [ ] 优化数据采集性能 - [ ] 添加实时数据推送功能 - [ ] 完善 Web 界面交互 - [ ] 添加策略性能评估指标 - [ ] 支持更多数据源接入 ## 🤝 贡献指南 1. Fork 本项目 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 创建 Pull Request ## 📄 许可证 本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情 ## 📞 联系方式 - 项目地址: https://gitee.com/qiangge_666/stocks_quotation_quant_backtest - 问题反馈: 通过 Issue 提交 - 邮箱: 916482193@qq.com --- **免责声明**: 本项目仅供学习和研究使用,不构成任何投资建议。使用本系统进行实际投资交易的风险由用户自行承担。 ## 📸 系统截图 ### 股票详情页 ![股票详情页](docs/screenshots/stock-detail.png) *贵州茅台 (600519) 详情页 - 显示 K 线图、均线系统、成交量*