Skip to content

sev7n4/AstockReviewReport

Repository files navigation

A股短线交易复盘报告系统

Python 3.8+ License: MIT Tests Passing

A股短线交易复盘报告系统 是一个自动化的A股市场分析和报告生成系统,专为短线交易者设计。系统每日自动生成早盘和午盘两份复盘报告,帮助交易者快速了解市场动态、热点板块、龙头个股和次日交易策略。

核心特性

📊 数据分析

  • 涨停分析: 自动统计涨停股票、计算封板率、识别涨停题材分类
  • 板块轮动: 识别当日热点板块,分析资金流向和轮动逻辑
  • 指数分析: 主要指数走势(上证、深证、创业板、北证)、技术面支撑阻力
  • 龙头识别: 识别趋势龙头、连板龙头、高换手率龙头

📈 AI 驱动分析

  • 涨停原因分析: 基于OpenAI/Anthropic LLM分析个股涨停原因
  • 交易策略生成: AI生成次日选股方向、择时建议、风险控制措施
  • 规则匹配后备: 当AI服务不可用时自动降级到规则引擎

📋 多格式报告

  • HTML报告: 响应式网页版报告,支持浏览器查看和打印
  • PDF报告: 高保真PDF格式,支持分享和归档
  • 卡片消息: 钉钉/飞书机器人卡片推送,实时通知交易决策

⏰ 自动化执行

  • 定时调度: APScheduler基础的自动化执行,支持交易日判断
  • 早盘报告: 11:30自动生成早盘市场快览
  • 午盘报告: 15:00自动生成全天复盘和次日策略
  • 异常处理: 自动重试、失败降级、详细日志记录

系统架构

AstockReviewReport/
├── src/
│   ├── config/           # 配置管理
│   │   └── settings.py   # 全局配置 (Pydantic BaseSettings)
│   ├── data/             # 数据采集
│   │   ├── tushare_client.py    # Tushare API
│   │   ├── jiuyan_client.py     # 韭研公社数据
│   │   └── schedule.py          # 定时任务调度
│   ├── analysis/         # 数据分析
│   │   ├── limit_up_analyzer.py # 涨停分析
│   │   ├── sector_analyzer.py   # 板块分析
│   │   ├── index_analyzer.py    # 指数分析
│   │   └── leader_selector.py   # 龙头识别
│   ├── ai/               # AI分析
│   │   ├── reason_analyzer.py   # 涨停原因分析
│   │   └── strategy_generator.py # 策略生成
│   ├── report/           # 报告生成
│   │   ├── html_generator.py    # HTML报告
│   │   ├── pdf_generator.py     # PDF报告
│   │   └── card_formatter.py    # 卡片格式
│   ├── notifier/         # 推送通知
│   │   ├── dingtalk.py          # 钉钉机器人
│   │   └── feishu.py            # 飞书机器人
│   └── utils/            # 工具库
│       └── logger.py     # 日志管理
├── tests/                # 测试套件
│   ├── unit/             # 单元测试
│   └── integration/      # 集成测试
├── templates/            # HTML模板
├── output/               # 输出目录
│   ├── html/             # HTML报告
│   └── pdf/              # PDF报告
├── main.py              # 程序入口
├── requirements.txt     # 依赖包
├── pytest.ini           # pytest配置
└── .env.example         # 环境变量示例

快速开始

前置条件

  • Python 3.8+
  • pip (Python包管理器)

1. 安装

# 克隆仓库
git clone <repository-url>
cd AstockReviewReport

# 创建虚拟环境(推荐)
python3 -m venv venv
source venv/bin/activate  # macOS/Linux
#
venv\Scripts\activate     # Windows

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

2. 配置

复制 .env.example.env 并配置必需的参数:

cp .env.example .env

编辑 .env 文件,配置以下必需参数:

# 必需:Tushare API Token (从 https://tushare.pro 获取)
TUSHARE_TOKEN=your_tushare_token_here

# 韭研公社数据(可选)
JIUYAN_COOKIE=your_cookie_here
JIUYAN_TOKEN=your_token_here

# 可选:OpenAI API Key (用于AI分析)
OPENAI_API_KEY=sk-...
OPENAI_MODEL=gpt-4

# 或者:Anthropic API Key (用于AI分析)
ANTHROPIC_API_KEY=sk-ant-...

# 可选:钉钉机器人Webhook
DINGTALK_WEBHOOK=https://oapi.dingtalk.com/robot/send?access_token=...
DINGTALK_SECRET=your_secret_here

# 可选:飞书机器人Webhook
FEISHU_WEBHOOK=https://open.feishu.cn/open-apis/bot/v2/hook/...

3. 测试

# 生成测试报告(当天的早盘和午盘报告)
python main.py --test

# 只生成早盘报告
python main.py --morning

# 只生成午盘报告
python main.py --afternoon

# 为指定日期生成报告
python main.py --morning --date 2024-01-15

# 测试推送通知配置
python main.py --push-test

4. 自动化运行

# 启动定时任务守护进程
# 每个交易日的11:30生成早盘报告,15:00生成午盘报告
python main.py --daemon

使用指南

生成报告

命令行生成

# 生成当日所有报告(早盘+午盘)
python main.py --test

# 生成特定类型报告
python main.py --morning          # 仅早盘
python main.py --afternoon        # 仅午盘

# 为历史日期生成报告
python main.py --morning --date 2024-01-10
python main.py --afternoon --date 2024-01-10

# 指定日期生成两份报告
python main.py --test --date 2024-01-10

程序化调用

from main import ReportGenerator

generator = ReportGenerator()

# 生成早盘报告
result = generator.generate_morning_report(date='2024-01-15')
if result['success']:
    print(f"早盘报告已生成")
else:
    print(f"生成失败: {result.get('error')}")

# 生成午盘报告
result = generator.generate_afternoon_report(date='2024-01-15')

定时执行

方式1:Daemon模式(推荐)

# 启动定时任务(在后台运行)
python main.py --daemon

# 按Ctrl+C停止

方式2:系统Cron

# 编辑crontab
crontab -e

# 添加以下行(每个交易日11:30和15:00执行)
30 11 * * 1-5 /path/to/python /path/to/AstockReviewReport/main.py --morning
0 15 * * 1-5 /path/to/python /path/to/AstockReviewReport/main.py --afternoon

方式3:Docker容器

# 构建镜像(需要Dockerfile)
docker build -t astockreport .

# 运行容器
docker run -d \
  -e TUSHARE_TOKEN=your_token \
  -e DINGTALK_WEBHOOK=your_webhook \
  -v $(pwd)/output:/app/output \
  astockreport python main.py --daemon

推送通知

钉钉机器人

  1. 创建钉钉自定义机器人
  2. 获取Webhook URL和密钥
  3. 配置 .env:
    DINGTALK_WEBHOOK=https://oapi.dingtalk.com/robot/send?access_token=xxxx
    DINGTALK_SECRET=your_secret
  4. 测试: python main.py --push-test

飞书机器人

  1. 创建飞书机器人
  2. 获取Webhook URL
  3. 配置 .env:
    FEISHU_WEBHOOK=https://open.feishu.cn/open-apis/bot/v2/hook/xxxx
  4. 测试: python main.py --push-test

自定义模板

templates/ 目录中创建自定义HTML模板:

templates/
├── morning_report.html      # 早盘报告模板
└── afternoon_report.html    # 午盘报告模板

模板使用Jinja2语法,可用变量:

  • date: 报告日期
  • index_data: 指数数据
  • limit_up_data: 涨停数据
  • sector_data: 板块数据
  • news: 新闻列表
  • strategy: 交易策略(午盘报告)

数据源

数据类型 说明
指数行情 Tushare 上证、深证、创业板、北证
股票基本信息 Tushare 上市公司代码、名称、上市日期
涨停数据 Tushare 当日涨停列表
资金流向 Tushare 个股、板块资金数据
涨停分析 韭研公社 涨停原因、题材分类、连板梯队
AI分析 OpenAI/Anthropic GPT/Claude模型

配置参考

详见 配置指南

API 参考

详见 API参考文档

部署指南

详见 部署指南

开发和测试

运行测试

# 运行所有测试
pytest

# 运行特定测试文件
pytest tests/unit/test_config.py

# 运行特定测试类
pytest tests/unit/test_config.py::TestSettings

# 显示详细输出
pytest -v

# 生成覆盖率报告
pytest --cov=src tests/

代码质量检查

# 检查Python语法
python3 -m py_compile src/**/*.py

# 运行linter(需要安装)
pip install flake8
flake8 src/

故障排查

问题1: 报错 "TUSHARE_TOKEN not found"

解决方案: 检查 .env 文件中是否配置了 TUSHARE_TOKEN

# 验证配置
grep TUSHARE_TOKEN .env

# 如果为空,从 https://tushare.pro 获取token并配置

问题2: PDF生成失败 "weasyprint未安装"

解决方案: PDF生成可选,但如需启用需要安装系统依赖

# macOS
brew install libffi libpango

# Ubuntu/Debian
sudo apt-get install libpango-1.0-0 libpango-1.0-common libpangoft2-1.0-0

# 然后重新安装Python依赖
pip install --upgrade weasyprint

问题3: 交易日判断不准确

解决方案: 系统使用Tushare交易日历,如有问题检查网络连接或API配额

# 测试数据连接
python3 -c "from src.data.tushare_client import TushareClient; client = TushareClient(); print(client.is_trading_day())"

问题4: 推送通知失败

解决方案: 检查Webhook URL和网络连接

# 测试推送
python main.py --push-test

# 查看日志
tail -f logs/app.log

日志

系统日志保存在 logs/app.log,包含所有运行信息:

# 查看实时日志
tail -f logs/app.log

# 查看特定级别的日志
grep ERROR logs/app.log
grep WARNING logs/app.log

性能优化

  • 数据缓存: 系统自动缓存API调用结果,减少请求
  • 异步处理: 使用asyncio处理并发请求(计划中)
  • 懒加载: 模块按需加载,减少内存占用
  • 连接池: 复用HTTP连接

安全注意事项

  1. API密钥保护

    • 不要在代码中硬编码密钥
    • 使用 .env 文件存储敏感信息
    • 不要将 .env 提交到版本控制
  2. 网络安全

    • 确保Webhook URL安全
    • 使用钉钉签名验证
    • 定期更新依赖包
  3. 数据安全

    • 报告数据本地存储
    • 支持加密传输(HTTPS)
    • 遵循数据保护法规

许可证

MIT License - 详见 LICENSE

贡献指南

欢迎提交Issue和Pull Request!

常见问题

Q: 系统支持A+H股吗? A: 目前仅支持A股(沪深京交易所)。

Q: 能否自定义报告内容? A: 可以。在 templates/ 目录创建自定义Jinja2模板。

Q: 历史数据如何保存? A: 报告自动保存在 output/ 目录,支持HTML和PDF格式。

Q: 可以用于量化交易吗? A: 可以。通过API接口获取分析结果用于策略回测。

联系方式

致谢

感谢以下开源项目的支持:


最后更新: 2026-03-14 当前版本: 1.0.0 维护状态: 活跃

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages