Files
aiagents-stock/README.md
T
2025-10-09 08:01:06 +08:00

681 lines
22 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🤖 复合多AI智能体股票团队分析系统
- 初心:在股市摸爬滚打多年,自学自编各种指标,花冤枉钱学习了各种战法各种策略,也曾入各种小班,总是赚少赔多,逐渐失去在股市玩的信心。自从去年deepseek上市,一直探索用ai辅助分析,且近日受tradingagents项目启发(感谢原作),多agent结合跟踪主力资金战法(某指每年收费6000rmb),用各种ai辅助编程,拼凑了这么个小程序,根据软件提供的辅助信息,实盘测试盈率还是挺高的,并且逐步形成了自己的交易系统,近一个月来,账户也慢慢在扭亏为盈。开源此软件的目的,就是为了使像我一样的小散,不再迷茫。也许这个软件不能让你发大财,但是他能给你足够的信心。最后提醒:股市有风险,入市需谨慎!
- 希望能帮到你!欢迎加微信群讨论
<img width="300" height="324" alt="image" src="https://www.sd-hn.cn/img/2wm.png" />
### 基于Python + Streamlit + DeepSeek的智能股票分析系统,模拟证券公司分析师团队,提供全方位的股票投资分析和决策建议。
<img width="1910" height="923" alt="image" src="https://github.com/user-attachments/assets/f929f751-3726-48e6-bc18-919f6a599629" />
<img width="1910" height="923" alt="01" src="https://github.com/user-attachments/assets/7dcd4b2c-8b4b-428b-8a17-4d843e98a626" />
<img width="1910" height="923" alt="02" src="https://github.com/user-attachments/assets/02018fff-4e6b-4354-b258-a5da25537c38" />
## ✨1008 更新说明
### 最新更新:增加批量分析功能 ⭐️
- **批量输入**:支持同时输入多个股票代码(每行一个或逗号分隔)
- **双模式分析**
- 顺序分析:按次序逐个分析,稳定可靠
- 多线程并行:同时分析多只股票,速度更快(推荐同时3-5只,以防api限流)
- **对比视图**:横向对比多只股票的关键指标和投资评级
- **详细卡片**:逐个查看每只股票的完整分析报告
- **智能筛选**:按评级、涨跌幅、信心度等条件快速筛选
- **智能筛选**:分析结果自动保存到历史记录
### 1006增加跟踪主力资金mcp,增加环境配置功能
### 1005增加股票监测功能,增加历史记录中个股导入到监测板块
## ✨ 功能特色
### 🎯 多维度分析
- **技术面分析**:趋势判断、技术指标、支撑阻力位分析
- **基本面分析**:财务指标、估值分析、行业研究
- **资金面分析**:资金流向、主力行为、市场情绪
- **风险管理**:风险识别、风险评估、风险控制策略
- **市场情绪**:投资者情绪、热点板块、消息面分析
### 🤖 AI智能体团队
- **技术分析师**:专注技术指标和图表分析
- **基本面分析师**:专注公司价值和行业研究(含13+财务指标)
- **资金面分析师**:专注资金流向和主力行为
- **风险管理师**:专注风险识别和控制
- **市场情绪分析师**:专注市场心理和情绪分析
- **新闻公告分析师**:专注热点新闻及公告影响分析
### 📊 完整分析流程
1. 📈 获取股票数据(支持A股和美股)
2. 📊 获取详细数据(三大报表+财务指标+20日资金数据+新闻+公告)
3. 🔍 多智能体并行分析
4. 🤝 团队综合讨论
5. 📋 最终投资决策
6. 🎯 操作建议和风险提示
7. 📄 PDF报告导出
### 🔥 批量分析功能(新增)⭐️
- **批量输入支持**:一次性输入多只股票代码
- **两种分析模式**
- 顺序分析:稳定可靠,适合少量股票
- 多线程并行:快速高效,适合大量股票(最多3个并发)
- **实时进度显示**:清晰展示每只股票的分析进度和状态
- **对比分析表格**
- 横向对比多只股票的关键指标
- 投资评级可视化(买入/持有/卖出)
- 智能筛选和排序功能
- **详细卡片视图**:逐个查看完整的分析报告
- **批量保存**:所有分析结果自动保存到数据库
<img width="1910" height="923" alt="image" src="https://github.com/user-attachments/assets/836d758f-df6d-44a1-b64a-fd6ad442cb0f" />
<img width="1910" height="923" alt="image" src="https://github.com/user-attachments/assets/903a64c7-7018-44dd-aa87-af4f7904048c" />
<img width="1910" height="923" alt="image" src="https://github.com/user-attachments/assets/d9878153-d743-4d65-9575-62ac37f8cbfb" />
<img width="1910" height="923" alt="image" src="https://github.com/user-attachments/assets/1c1c27af-1fe8-46e8-9e4a-68ead604a24d" />
<img width="1910" height="923" alt="image" src="https://github.com/user-attachments/assets/242ee212-ba6c-4e0a-ae16-47aff3f356e6" />
### 🔍 实时监测功能
- **智能监测**:自动监控股票价格变动
- **关键位置提醒**:进场区间、止盈位、止损位触发通知
- **自定义间隔**:30秒至300秒灵活设置
- **多种通知方式**:网页提醒 + 邮件通知
- **卡片式管理**:直观的股票监测卡片展示
- **完整功能**:添加、编辑、删除、启停、通知开关
- **一键加入监测**:支持历史记录中一键加入监测功能
<img width="1910" height="923" alt="image" src="https://github.com/user-attachments/assets/ca39f4c6-5922-4df5-b38f-8a45a3dbdfb9" />
<img width="1910" height="923" alt="image" src="https://github.com/user-attachments/assets/1463fc59-05aa-4201-a4aa-15e6da373cb7" />
<img width="1910" height="923" alt="image" src="https://github.com/user-attachments/assets/a283fcf9-5ea9-42e5-876f-82920a74dd33" />
### 🤖 量化交易功能(MiniQMT集成)
- **自动交易执行**:监测触发后自动下单
- **智能仓位管理**:灵活配置单股最大仓位比例
- **多种订单类型**:市价单、限价单、止损单支持
- **风险控制**:自动止损、止盈功能
- **持仓监控**:实时查看持仓和盈亏
- **预留接口**:完整的MiniQMT对接接口,可对接真实交易
<img width="1907" height="919" alt="image" src="https://github.com/user-attachments/assets/ea499f1e-5c11-4596-a359-d14de77bff9b" />
<img width="1910" height="923" alt="image" src="https://github.com/user-attachments/assets/a85defbf-321a-4fe2-b491-6855f2aa366c" />
<img width="1869" height="906" alt="image" src="https://github.com/user-attachments/assets/d59de299-6300-4669-9902-7754da7407db" />
### 📧 邮件通知系统
- **多邮箱支持**QQ邮箱、163邮箱、Gmail等
- **触发条件**
- 价格进入进场区间
- 达到止盈位
- 触及止损位
- **测试功能**:一键测试邮件配置
- **历史记录**:完整的通知历史查询
<img width="1910" height="923" alt="image" src="https://github.com/user-attachments/assets/a1a3c1ca-f97f-43eb-a043-1011c09e06d0" />
<img width="1910" height="923" alt="image" src="https://github.com/user-attachments/assets/1808f284-e922-4eac-bfea-134996de93f1" />
### 🎨 现代化界面
- **渐变背景设计**:专业的紫色渐变配色
- **响应式布局**:支持桌面、平板、手机
- **实时数据可视化**:Plotly交互式图表
- **卡片式展示**:清晰的信息模块化
- **动画交互**:流畅的悬停和过渡效果
## 🚀 快速开始
### 部署方式选择
本系统支持两种部署方式:
- **🐳 Docker部署(推荐)**:一键启动,环境隔离,适合所有用户
- **💻 本地部署**:传统方式,适合开发者
---
## 🐳 方式一:Docker 部署(推荐)⭐️
### 优势
- ✅ 无需配置Python和Node.js环境
- ✅ 一键启动,开箱即用
- ✅ 环境隔离,不影响系统
- ✅ 跨平台支持(Windows/macOS/Linux
- ✅ 自动重启,稳定可靠
### 前置要求
- Docker 20.10+
- Docker Compose 2.0+(推荐)
- DeepSeek API Key
### 快速开始
#### 1. 安装 Docker
- **Windows/macOS**: 下载安装 [Docker Desktop](https://www.docker.com/products/docker-desktop/)
- **Linux**:
```bash
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
```
#### 2. 配置环境变量
```bash
# Windows (PowerShell)
Copy-Item .env.example .env
# Linux/macOS
cp .env.example .env
```
编辑 `.env` 文件,填入您的 DeepSeek API Key
```env
DEEPSEEK_API_KEY=sk-your-actual-api-key-here
```
#### 3. 启动服务
```bash
# 使用 Docker Compose(推荐)
docker-compose up -d
# 或使用 Docker 命令
docker build -t agentsstock1 .
docker run -d -p 8503:8501 -v $(pwd)/.env:/app/.env --name agentsstock1 agentsstock1
```
#### 4. 访问系统(为避免端口冲突,已将运行端口改为8503)
打开浏览器访问:http://localhost:8503
#### 5. 常用命令
```bash
# 查看日志
docker-compose logs -f
# 停止服务
docker-compose down
# 重启服务
docker-compose restart
```
**📖 详细文档**:查看 [DOCKER_DEPLOYMENT.md](DOCKER_DEPLOYMENT.md) 获取完整的Docker部署指南和故障排除。
---
## 💻 方式二:本地部署
### 1. 环境要求
- Python 3.8+(微软store或官网,推荐3.12)
- Node.js 16+ (微软store或官网,pywencai需要)
- 稳定的网络连接(大陆网络请关闭vpn)
- DeepSeek API Key
### 2. 安装依赖
创建激活虚拟环境(powershell)并安装依赖
```bash
python -m venv venv
.\venv\Scripts\Activate.ps1
pip install -r requirements.txt
```
### 3. 配置API
#### 方法一:使用环境变量文件(推荐)
1. 复制环境变量模板文件:
```bash
# Windows (PowerShell)
Copy-Item .env.example .env
# 或者使用命令
cp .env.example .env
```
2. 编辑 `.env` 文件,设置您的配置(也可在前端web界面-环境配置中设置):
```env
# DeepSeek API配置(必需)
DEEPSEEK_API_KEY=your_actual_deepseek_api_key_here
# 邮件通知配置(可选)
EMAIL_ENABLED=false
SMTP_SERVER=smtp.qq.com
SMTP_PORT=587
EMAIL_FROM=your_email@qq.com
EMAIL_PASSWORD=your_authorization_code
EMAIL_TO=receiver@example.com
# MiniQMT量化交易配置(可选)
MINIQMT_ENABLED=false
MINIQMT_ACCOUNT_ID=your_account_id
MINIQMT_HOST=127.0.0.1
MINIQMT_PORT=58610
```
#### 方法二:设置系统环境变量
您也可以直接在系统环境变量中设置:
- 变量名:`DEEPSEEK_API_KEY`
- 变量值:您的API密钥
**注意**:环境变量文件的优先级高于系统环境变量。
### 4. 启动系统
```bash
.\venv\Scripts\Activate.ps1
python run.py
```
或者直接运行:
```bash
.\venv\Scripts\Activate.ps1
streamlit run app.py
```
### 5. 访问系统
打开浏览器访问:http://localhost:8501
---
## 📊 使用指南
### 股票代码格式(美股暂不支持)
- **美股**AAPL, MSFT, GOOGL, TSLA, NVDA
- **A股**000001, 600036, 000002, 600519
### 单个股票分析流程
1. 选择"单个分析"模式
2. 在输入框中输入股票代码
3. 选择要参与分析的分析师团队
4. 点击"开始分析"按钮
5. 等待AI分析师团队完成分析
6. 查看各维度分析报告
7. 阅读团队讨论结果
8. 获取最终投资决策
### 批量股票分析流程 ⭐️ 新增
1. **选择批量分析模式**
- 点击"批量分析"单选按钮
- 选择分析模式:顺序分析 或 多线程并行
2. **输入股票代码**
- 支持多种格式:
```
# 每行一个代码
000001
600036
600519
# 或逗号分隔
000001, 600036, 600519
# 或空格分隔
000001 600036 600519
```
3. **配置分析参数**
- 选择数据周期(1y, 6mo, 3mo, 1mo
- 选择要参与的分析师团队
4. **开始批量分析**
- 点击"开始批量分析"按钮
- 系统会实时显示分析进度
- 每只股票的分析状态都会更新
5. **查看分析结果**
- **对比表格模式**
- 横向对比所有股票的关键指标
- 投资评级用颜色标识(绿色=买入,黄色=持有,红色=卖出)
- 可按评级筛选
- 可按涨跌幅、信心度、RSI等排序
- **详细卡片模式**
- 从下拉列表选择要查看的股票
- 查看完整的分析报告
- 包含图表、各分析师意见、团队讨论、最终决策
6. **结果管理**
- 所有分析结果自动保存到历史记录
- 点击"清除结果"可清空当前批量分析结果
- 失败的股票会单独列出,显示失败原因
### 批量分析使用技巧
- **建议数量**:一次分析不超过20只股票
- **模式选择**
- 3-5只股票:建议使用顺序分析,更稳定
- 6只以上:建议使用多线程并行,更快速
- **注意事项**
- 多线程模式最多3个并发,避免API限流
- 批量分析时间较长,请耐心等待
- 可在历史记录中查看所有分析结果
### 结果解读
- **投资评级**:买入/持有/卖出
- **目标价位**:预期价格目标
- **操作建议**:具体交易策略
- **进出场位置**:关键价位点
- **止盈止损**:风险控制位置
- **风险提示**:主要风险因素
### 实时监测功能
#### 快速开始
1. 点击侧边栏"📊 实时监测"按钮
2. 在监测管理页面点击"添加监测股票"
3. 填写股票信息和监测参数
4. 点击"▶️ 启动监测"开始自动监控
#### 添加监测股票
**必填信息**
- **股票代码**:6位A股代码或美股字母代码
- **股票名称**:便于识别
- **投资评级**:买入/持有/卖出
**监测参数**
- **进场区间**:设置最小和最大价格
- 当股票价格进入该区间时触发通知
- 用于把握最佳买入时机
- **止盈位**:目标卖出价格
- 价格达到或超过该值时提醒
- 帮助锁定收益
- **止损位**:最大亏损价格
- 价格跌破该值时立即提醒
- 控制投资风险
- **检查间隔**30-300秒
- 监测频率,建议60秒以上
- 避免过于频繁的API调用
#### 管理监测股票
**查看功能**
- 📊 实时价格显示
- 📈 涨跌幅展示
- ⏰ 最后检查时间
- 🔔 通知状态
**操作按钮**
- 🔄 **更新**:手动刷新当前价格
- ✏️ **编辑**:修改监测参数
- 🔔/🔕 **通知开关**:启用/禁用通知
- 🗑️ **删除**:移除监测
**批量操作**
- ▶️ 启动监测:开始后台自动监控所有股票
- ⏹️ 停止监测:暂停监控服务
- 🔄 刷新状态:更新显示信息
#### 通知系统
**网页通知**
- 自动在界面显示提醒
- 实时查看通知历史
- 支持标记已读和清空
**邮件通知配置**
1. **编辑.env文件**
```env
EMAIL_ENABLED=true
SMTP_SERVER=smtp.qq.com
SMTP_PORT=587
EMAIL_FROM=your_email@qq.com
EMAIL_PASSWORD=your_authorization_code
EMAIL_TO=receiver@example.com
```
2. **获取邮箱授权码**
- **QQ邮箱**:设置 → 账户 → POP3/IMAP/SMTP → 生成授权码
- **163邮箱**:设置 → POP3/SMTP/IMAP → 开启服务 → 设置授权密码
- **Gmail**:开启两步验证 → 生成应用专用密码
3. **测试邮件配置**
- 进入"通知管理"区域
- 点击"📧 发送测试邮件"
- 检查收件箱(含垃圾箱)
**通知触发条件**
- ✅ 价格进入进场区间 → 进场提醒
- ✅ 价格达到止盈位 → 止盈提醒
- ✅ 价格跌破止损位 → 止损提醒
#### 使用技巧
**参数设置建议**
- **进场区间**:根据技术分析设定支撑位和阻力位
- **止盈位**:建议设置10-20%的盈利目标
- **止损位**:建议设置5-10%的止损线
- **检查间隔**
- 长线投资:180-300秒
- 短线交易:30-60秒
**监测策略**
1. 分析后添加到监测列表
2. 设置合理的进场区间等待买入信号
3. 买入后调整为止盈/止损监测
4. 收到通知后及时决策
**注意事项**
- ⚠️ 监测间隔不要设置太短,避免频繁API调用
- ⚠️ 邮件通知有延迟,不适用于高频交易
- ⚠️ 定期检查监测服务运行状态
- ⚠️ 及时处理触发的通知,避免错过时机
## 🏗️ 系统架构
```
AI股票分析系统
├── app.py # Streamlit主界面
├── stock_data.py # 股票数据获取模块
├── deepseek_client.py # DeepSeek API客户端
├── ai_agents.py # AI智能体分析模块
├── monitor_manager.py # 监测管理界面
├── monitor_service.py # 监测服务后台
├── monitor_db.py # 监测数据库管理
├── notification_service.py # 通知服务(邮件/界面)
├── miniqmt_interface.py # MiniQMT量化交易接口 ⭐️
├── pdf_generator.py # PDF报告生成
├── database.py # 分析记录数据库
├── config.py # 配置文件
├── requirements.txt # 依赖包列表
├── run.py # 启动脚本
├── Dockerfile # Docker镜像构建文件 🐳
├── docker-compose.yml # Docker编排配置文件 🐳
├── .dockerignore # Docker构建忽略文件 🐳
└── DOCKER_DEPLOYMENT.md # Docker部署详细文档 🐳
```
### 核心模块说明
#### 📈 股票数据模块 (stock_data.py)
- 支持A股和美股数据获取
- 集成yfinance和akshare数据源
- 自动计算技术指标(MA、RSI、MACD、KDJ等)
- 获取详细财务数据(三大报表+13+财务指标)
- 数据清洗和格式化
#### 🤖 AI智能体模块 (ai_agents.py)
- 多个专业分析师AI角色
- 并行分析处理
- 团队讨论机制
- 最终决策生成
- 财务数据深度解读
#### 🔗 API客户端 (deepseek_client.py)
- DeepSeek API封装
- 智能对话管理
- 错误处理和重试
- 响应格式解析
- 支持多模型切换
#### 🔍 监测管理模块 (monitor_manager.py)
- 股票监测管理界面
- 添加/编辑/删除监测
- 卡片式展示
- 搜索和筛选功能
- 通知历史管理
#### ⚙️ 监测服务模块 (monitor_service.py)
- 后台监测线程
- 定时价格检查
- 触发条件判断
- 自动通知发送
- 启动/停止控制
#### 💾 监测数据库 (monitor_db.py)
- SQLite数据持久化
- 监测股票表
- 价格历史表
- 通知记录表
- CRUD操作接口
#### 📧 通知服务模块 (notification_service.py)
- 邮件通知发送
- 网页通知展示
- 多邮箱支持(QQ/163/Gmail
- 通知历史管理
- 配置测试功能
#### 🤖 量化交易模块 (miniqmt_interface.py) ⭐️ 新增
- MiniQMT接口对接
- 自动交易执行
- 仓位管理
- 风险控制
- 订单管理
- 持仓监控
- 预留接口实现
#### 📄 PDF生成模块 (pdf_generator.py)
- 专业分析报告生成
- 中文字体支持
- 完整分析内容
- 一键下载功能
#### 🎨 前端界面 (app.py)
- 现代化渐变UI设计
- 响应式布局
- 三大功能模块(分析/监测/历史)
- 实时数据可视化
- 交互式操作
- 美观的动画效果
## 📋 技术特性
### 数据源
- **美股数据**Yahoo Finance (yfinance)
- **A股数据**AKShare免费接口
- **技术指标**TA-Lib技术分析库
### AI模型
- **语言模型**DeepSeek Chat API
- **分析框架**:多智能体协作
- **决策逻辑**:综合评分机制
### 可视化
- **图表库**Plotly交互式图表
- **K线图**:蜡烛图with技术指标
- **指标图**RSI、MACD、布林带等
### 性能优化
- **数据缓存**Streamlit缓存机制
- **异步处理**:并行分析提升效率
- **错误处理**:完善的异常处理机制
## ⚙️ 高级配置
### API配置
```env
# .env 文件
DEEPSEEK_API_KEY=your_api_key
DEEPSEEK_BASE_URL=https://api.deepseek.com/v1
```
**重要提示**
- 请将 `.env.template` 复制为 `.env` 文件
- 在 `.env` 文件中填写实际的API密钥
- 不要将 `.env` 文件提交到版本控制系统
### 数据配置
```python
DEFAULT_PERIOD = "1y" # 默认数据周期
DEFAULT_INTERVAL = "1d" # 默认数据间隔
```
### 系统参数
- **缓存时间**:300秒(5分钟)
- **API超时**30秒
- **最大重试**3次
## 🛠️ 故障排除
### 常见问题
1. **API Key错误**
- 检查.env文件中的DEEPSEEK_API_KEY设置
- 确保.env文件存在且格式正确
- 确保API Key有效且有足够余额
2. **股票数据获取失败**
- 检查网络连接
- 确认股票代码格式正确(A股6位数字,美股字母代码)
- 可能是数据源临时不可用,稍后重试
3. **财务数据获取失败**
- 部分新股可能没有完整财务数据
- 网络问题可能导致数据获取超时
- 系统会自动处理,继续进行其他分析
4. **依赖包安装失败**
- 使用 `pip install -r requirements.txt`
- 如有问题,尝试手动安装单个包
- 确保Python版本为3.8+
5. **页面加载缓慢**
- 首次运行需要下载数据,请耐心等待
- 系统有5分钟缓存,重复查询会更快
- 财务数据获取较慢,约需10-20秒
6. **分析过程中出错**
- 检查网络连接是否稳定
- 查看终端输出的详细错误信息
- 尝试重新启动应用
7. **MiniQMT连接失败**
- 确认MiniQMT客户端已启动
- 检查账户已登录
- 验证账户ID配置正确
- 确认网络连接正常
- 查看 `MINIQMT_INTEGRATION_GUIDE.md` 详细指南
8. **量化交易未执行**
- 确认量化功能已启用
- 检查MiniQMT连接状态
- 验证监测服务是否运行
- 查看通知记录中的错误信息
- 确认交易时间在交易日内
9. **Docker部署问题** 🐳
- **容器启动失败**
- 检查Docker是否正常运行:`docker ps`
- 查看容器日志:`docker-compose logs -f`
- 确认.env文件已正确配置
- **端口被占用**
- 修改docker-compose.yml中的端口映射(如改为8502:8501)
- **无法访问网页**
- 确认容器正在运行:`docker ps`
- 检查防火墙设置
- 尝试访问:http://localhost:8501
- **数据库权限问题**Linux/macOS):
- 修改数据库文件权限:`chmod 666 *.db`
- **Node.js相关错误**
- 容器内已集成Node.js环境,无需额外配置
- 进入容器检查:`docker exec -it agentsstock1 bash`
- **详细文档**:查看 `DOCKER_DEPLOYMENT.md` 获取完整的故障排除指南
### 日志调试
系统运行时会在控制台输出详细日志,可用于问题诊断。如遇到错误,请查看终端输出。
**Docker部署日志查看**
```bash
# 实时查看日志
docker-compose logs -f
# 或查看特定容器日志
docker logs -f agentsstock1
```
### 错误报告
如发现bug,请查看 `BUGFIX.md` 文件了解已知问题和解决方案。
## 📜 免责声明
本系统仅供学习和研究使用,不构成投资建议。股票投资有风险,入市需谨慎。使用本系统进行投资决策的风险由用户自行承担。
## 🤝 贡献指南
欢迎提交Issue和Pull Request
## 📄 许可证
MIT License
---
**享受AI驱动的智能股票分析体验!** 🚀📈任何疑问请留言或联系ws3101001@126.com