Skip to content

lyizhou/DataCapture

Repository files navigation

DataCapture - 量化投资数据分析平台

专业的 A 股量化投资分析工具

Python Version License


📖 项目简介

DataCapture 是一个功能完整的量化投资数据分析平台,专注于 A 股市场的数据分析、策略回测和模拟交易。项目集成了多种技术指标分析、AI 驱动的自然语言查询、智能策略引擎等核心功能,为个人投资者提供专业级的量化分析工具。

核心特性

  • 🤖 AI 智能查询 - 支持自然语言查询股票数据
  • 📊 技术分析 - 30+ 技术指标计算与智能分析
  • 🎯 概念挖掘 - 多维度板块热点挖掘
  • 📈 策略回测 - 多种量化策略历史回测
  • 💼 模拟交易 - 完整的纸面交易系统
  • 🔄 自动更新 - 数据自动同步与缓存管理

🚀 快速开始

1. 环境要求

  • Python 3.8+
  • 操作系统: Windows / macOS / Linux

2. 安装依赖

# 克隆项目
git clone https://github.com/yourusername/DataCapture.git
cd DataCapture

# 安装依赖包
pip install -r requirements.txt

# 如果 TA-Lib 安装失败,请手动安装 whl 文件
pip install ta_lib-0.6.8-cp313-cp313-win_amd64.whl

3. 配置环境变量

创建 .env 文件(参考 .env.example):

# Tushare Pro API Token(必需)
# 注册地址: https://tushare.pro/register
TUSHARE_TOKEN=your_tushare_token_here

# LLM API 配置(可选,用于自然语言查询)
# 支持 OpenAI 或 DeepSeek
LLM_API_KEY=your_llm_api_key
LLM_API_BASE=https://api.deepseek.com
LLM_MODEL=deepseek-chat

4. 初始化数据库

python scripts/init_db.py

5. 运行程序

# 查看帮助信息
python main.py --help

# 示例:查询股票数据
python main.py query "贵州茅台最近一个月的收盘价"

# 示例:分析股票
python main.py analyze 贵州茅台 1y

# 示例:概念挖掘
python main.py concept -t 20

6. Git 自动提交(可选)

每次代码更新后,使用便捷工具提交到GitHub:

# Windows 快速提交
git_push.bat "添加新功能"

# 或使用 Python 脚本
python scripts/git_push.py "添加新功能"

# 查看状态
python scripts/git_push.py --status

详细文档: Git 使用指南


💡 核心功能

1️⃣ 自然语言数据查询 (DataAgent)

支持使用自然语言查询股票数据,无需记忆复杂的 API 接口。

示例:

# 查询股票价格
python main.py query "贵州茅台最近一个月的收盘价"

# 查询指数数据
python main.py query "上证指数最近5天的涨幅"

# 查询板块资金流
python main.py query "半导体概念最近一周的资金流向"

# 查询财务数据
python main.py query "平安银行最新的市盈率和市净率"

支持的查询类型:

  • 股票日线数据(价格、涨跌幅、成交量等)
  • 指数数据(上证指数、深证成指等)
  • 板块资金流向(概念板块、行业板块)
  • 财务数据(市盈率、市净率、换手率等)

2️⃣ 股票技术分析 (StockAnalyzer)

自动计算 30+ 技术指标,生成专业的分析报告。

技术指标:

  • 趋势指标: MA (5/10/20/60)、MACD、DIF、DEA
  • 动量指标: RSI (6/12)、KDJ、CCI
  • 波动指标: BOLL、ATR
  • 量能指标: 量比、换手率

示例:

# 分析贵州茅台最近一年的数据
python main.py analyze 贵州茅台 1y

# 分析股票并保存报告
python main.py analyze 600519 3m -o report.md

# 支持多种查询方式
python main.py analyze gzmz 6m   # 拼音缩写
python main.py analyze 600519 1d # 股票代码

时间范围参数:

  • 1d - 最近 1 天
  • 1w - 最近 1 周
  • 1m - 最近 1 个月
  • 3m - 最近 3 个月
  • 6m - 最近 6 个月
  • 1y - 最近 1 年
  • 2y - 最近 2 年
  • 3y - 最近 3 年

3️⃣ 概念板块挖掘 (ConceptMiner)

多维度分析概念板块,自动识别黄金坑、主升浪等机会。

分析维度:

  • 位置维度: 基于唐奇安通道的位置评分
  • 热度维度: 资金流入与成交量分析
  • 异动维度: 涨跌幅与换手率分析

智能标签:

  • 🟢 黄金坑: 位置低 + 资金流入 + 量比放大
  • 🔵 僵尸低位: 位置低 + 无资金关注
  • 🟡 主升浪: 位置中高 + 资金大幅流入
  • 🔴 高位派发: 位置极高 + 资金流出

示例:

# 挖掘热门概念(显示前20个)
python main.py concept

# 显示前30个板块并保存结果
python main.py concept -t 30 -o result.csv

4️⃣ 周度市场复盘 (WeeklyETL)

自动生成周度市场复盘报告,包含大势分析、情绪指标、行业背离、聪明钱动向等。

报告内容:

  1. 大势与估值: 主要指数表现、估值水平
  2. 市场情绪: 涨跌停统计、换手率分析
  3. 行业背离: 行业指数与资金流背离分析
  4. 聪明钱动向: 北向资金、ETF 资金流向

示例:

# 生成本周复盘报告
python main.py review

# 生成最近2周复盘报告
python main.py review -w 2

# 保存报告到文件
python main.py review -o weekly_report.md

5️⃣ 策略回测 (Backtest)

支持三种量化策略的历史回测,自动计算收益率、夏普比率等指标。

策略类型:

策略 说明 适用场景
shannon 香农熵策略 逆势布局,捕捉反弹
girard 吉拉尔缺口策略 缺口交易,趋势跟踪
soros 索罗斯反身性策略 强化趋势,动量交易

示例:

# 回测香农策略(默认1年,10万初始资金)
python main.py backtest shannon

# 指定回测时间范围
python main.py backtest girard -s 20230101 -e 20231231

# 自定义初始资金
python main.py backtest soros -i 500000

# 保存回测报告
python main.py backtest shannon -o backtest_report.txt

6️⃣ 纸面交易 (PaperTrading)

完整的模拟交易系统,支持买入、卖出、持仓查询等功能。

功能特性:

  • ✅ 多账户管理
  • ✅ T+1 交易规则
  • ✅ 手续费计算
  • ✅ 持仓盈亏统计
  • ✅ 交易历史记录

示例:

# 创建新账户
python main.py paper --create --balance 1000000

# 买入股票
python main.py paper --buy 600519 100

# 卖出股票
python main.py paper --sell 600519 50

# 查看持仓
python main.py paper --list

# 查看账户状态
python main.py paper --status

7️⃣ 数据更新 (DataUpdate)

自动更新本地数据库,支持智能增量更新和批量操作。

性能优化:

  • 批量操作 - 10x 写入速度提升
  • 🚀 多线程并发 - 5 线程并发更新
  • 📊 索引优化 - 查询性能提升 3-5 倍
  • 🔄 失败重试 - 自动重试失败的更新
  • 📝 更新日志 - 完整的更新历史追踪

示例:

# 更新所有数据(智能增量更新)
python main.py update

# 更新最近30天数据
python main.py update -d 30

# 强制更新(跳过缓存)
python main.py update --force

性能对比:

  • 优化前:~30 只股票/分钟
  • 优化后:~200 只股票/分钟(5-6x 提升

详细说明请查看:数据库优化文档


8️⃣ 投资组合管理 (Portfolio)

管理多个投资组合,分析组合表现和风险指标。

示例:

# 查看所有组合
python main.py portfolio --list

# 创建新组合并添加股票
python main.py portfolio -n my_portfolio --add 600519 0.3
python main.py portfolio -n my_portfolio --add 000001 0.2

# 从组合移除股票
python main.py portfolio -n my_portfolio --remove 000001

# 分析组合表现
python main.py portfolio -n my_portfolio --analyze

📁 项目结构

DataCapture/
├── main.py                 # 统一命令行入口 ⭐
├── requirements.txt        # 依赖包列表
├── .env                    # 环境变量配置
├── README.md              # 项目文档
│
├── src/                    # 核心源代码
│   ├── config.py          # 配置管理
│   ├── database.py        # 数据库管理
│   ├── exceptions.py      # 自定义异常
│   │
│   ├── 数据分析模块
│   ├── stock_analyzer.py  # 股票技术分析
│   ├── data_agent.py      # AI 数据查询代理
│   ├── concept_miner.py   # 概念板块挖掘
│   ├── weekly_etl.py      # 周度市场复盘
│   ├── daily_reviewer.py  # 每日复盘
│   │
│   ├── 策略与回测
│   ├── chimera_engine.py  # 策略引擎
│   ├── backtest.py        # 回测引擎
│   ├── strategy_manager.py # 策略管理器
│   ├── portfolio_backtest.py # 组合回测
│   │
│   ├── 交易与风控
│   ├── paper_trading.py   # 纸面交易
│   ├── portfolio_manager.py # 组合管理
│   ├── signal_generator.py # 信号生成器
│   ├── doctor.py          # 组合医生
│   │
│   ├── 数据管理
│   ├── data_adapter.py    # 数据适配器
│   ├── data_updater.py    # 数据更新器
│   ├── cache_manager.py   # 缓存管理
│   ├── async_api_wrapper.py # 异步API包装
│   │
│   ├── strategies/        # 策略模块
│   │   ├── base.py       # 策略基类
│   │   ├── shannon.py    # 香农策略
│   │   ├── girard.py     # 吉拉尔策略
│   │   └── soros.py      # 索罗斯策略
│   │
│   ├── trading/          # 交易模块
│   │   ├── auto_trader.py      # 自动交易
│   │   ├── paper_trading_engine.py # 纸面交易引擎
│   │   └── risk_manager.py      # 风险管理
│   │
│   └── utils/            # 工具函数
│       └── api_utils.py  # API 工具
│
├── scripts/              # 命令行脚本
│   ├── init_db.py       # 数据库初始化
│   ├── run_data_agent.py
│   ├── run_stock_analyzer.py
│   ├── run_concept_miner.py
│   ├── run_weekly_etl.py
│   ├── run_chimera.py
│   ├── run_backtest.py
│   └── run_paper_trading.py
│
├── data/                 # 数据存储目录
│   └── backtest.db      # SQLite 数据库
│
└── output/              # 输出文件目录
    ├── reports/         # 分析报告
    └── backtests/       # 回测结果

⚙️ 配置说明

所有配置集中在 src/config.py,支持通过环境变量覆盖。

数据获取配置

API_MAX_RETRIES = 3                    # API 重试次数
DATA_WARMUP_DAYS = 120                 # 数据预热天数
DATA_FETCH_DAYS = 60                   # 默认数据获取天数
ASYNC_MAX_WORKERS = 10                 # 异步线程数

技术指标配置

MA_PERIODS = [5, 10, 20, 60]           # 移动平均线周期
RSI_PERIOD_SHORT = 6                   # RSI 短周期
RSI_PERIOD_LONG = 12                   # RSI 长周期
BOLL_PERIOD = 20                       # 布林带周期

回测配置

COMMISSION_RATE = 0.0003               # 手续费率(万三)
TRADING_DAYS_PER_YEAR = 252            # 年化交易日数
RISK_FREE_RATE = 0.0                   # 无风险利率

🔧 高级用法

使用脚本直接调用

除了统一入口 main.py,也可以直接使用 scripts/ 目录下的脚本:

# 股票分析
python scripts/run_stock_analyzer.py 贵州茅台 1y

# 概念挖掘
python scripts/run_concept_miner.py

# 周度复盘
python scripts/run_weekly_etl.py

# 策略回测
python scripts/run_chimera_backtest.py

# 纸面交易
python scripts/run_paper_trading.py

自定义策略

src/strategies/ 目录下创建新策略:

from src.strategies.base import BaseStrategy

class MyStrategy(BaseStrategy):
    def generate_signal(self, data):
        # 实现你的策略逻辑
        # 返回 1 (买入) 或 0 (卖出)
        pass

数据库管理

# 初始化数据库
python scripts/init_db.py

# 查看数据库内容
sqlite3 data/backtest.db

❓ 常见问题

Q1: 如何获取 Tushare Token?

  1. 访问 Tushare Pro
  2. 注册账号并登录
  3. 进入「用户中心」→「接口Token」
  4. 复制 Token 到 .env 文件

Q2: TA-Lib 安装失败怎么办?

Windows 用户可以使用项目提供的 whl 文件:

pip install ta_lib-0.6.8-cp313-cp313-win_amd64.whl

macOS/Linux 用户请参考官方安装指南:

# macOS
brew install ta-lib

# Ubuntu/Debian
sudo apt-get install ta-lib

Q3: 如何配置 LLM API?

支持 OpenAI 和 DeepSeek:

# OpenAI
LLM_API_KEY=sk-xxx
LLM_API_BASE=https://api.openai.com/v1
LLM_MODEL=gpt-3.5-turbo

# DeepSeek
LLM_API_KEY=sk-xxx
LLM_API_BASE=https://api.deepseek.com
LLM_MODEL=deepseek-chat

Q4: 数据更新频率建议?

  • 日线数据: 每日收盘后更新一次(建议 15:30 之后)
  • 实时数据: 根据需要手动更新
  • 历史数据: 首次使用建议更新 1 年以上历史数据

🤝 贡献指南

欢迎提交 Issue 和 Pull Request!

开发规范

  1. 代码风格遵循 PEP 8
  2. 添加必要的注释和文档字符串
  3. 提交前运行测试(如果有)
  4. 更新相关文档

📄 开源协议

本项目采用 MIT 协议开源 - 详见 LICENSE 文件


🙏 致谢


如果觉得项目有用,请给个 ⭐ Star 支持一下!

Made with ❤️ by DataCapture Team

About

No description, website, or topics provided.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •