增加支持docker部署

This commit is contained in:
oficcejo
2025-10-09 08:01:06 +08:00
parent 0c11a7b010
commit 64e7617c8c
18 changed files with 920 additions and 1585 deletions
+55
View File
@@ -0,0 +1,55 @@
# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
venv/
env/
ENV/
*.egg-info/
dist/
build/
# 虚拟环境
venv/
.venv/
# IDE
.vscode/
.idea/
*.swp
*.swo
*~
# 数据库文件(如果需要持久化,应该使用volumes)
*.db
# 环境变量文件(应该在运行时挂载)
.env
# Git
.git/
.gitignore
# 日志文件
*.log
# 操作系统
.DS_Store
Thumbs.db
# 压缩文件
*.rar
*.zip
*.tar.gz
# 文档和说明(这些会被COPY进去,这里只是示例)
# README.md
# *.md
# 缓存
.pytest_cache/
.coverage
htmlcov/
+15 -13
View File
@@ -1,18 +1,20 @@
# DeepSeek API配置
DEEPSEEK_API_KEY=sk-your_actual_api_key_here
# DeepSeek API配置(必需)
DEEPSEEK_API_KEY=your_actual_deepseek_api_key_here
DEEPSEEK_BASE_URL=https://api.deepseek.com/v1
# Tushare配置(可选)
TUSHARE_TOKEN=your_tushare_token_here
# 使用方法:
# 1. 将此文件复制为 .env
# 2. 在 .env 文件中填写真实的API密钥
# 3. 确保 .env 文件不被提交到版本控制系统
# 邮件通知配置
EMAIL_ENABLED=true
SMTP_SERVER=smtp.qq.com # 或 smtp.163.com, smtp.gmail.com 等
# 邮件通知配置(可选)
EMAIL_ENABLED=false
SMTP_SERVER=smtp.qq.com
SMTP_PORT=587
EMAIL_FROM=your_email@qq.com
EMAIL_PASSWORD=your_app_password # 注意:不是邮箱登录密码,是应用专用密码
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
# 时区设置
TZ=Asia/Shanghai
+1 -2
View File
@@ -1,5 +1,4 @@
/agentsstock1.rar
/agentsstock2.rar
/*.rar
/test_akshare.py
/test_fixed.py
/test_pdf_export.py
-202
View File
@@ -1,202 +0,0 @@
# ARBR市场情绪功能 - 快速开始 🚀
## 🎯 功能简介
系统现已集成ARBR等市场情绪指标,为市场情绪分析提供实际数据支撑!
**ARBR指标:**
- **AR(人气指标)**:反映市场买卖人气
- **BR(意愿指标)**:反映买卖意愿强度
**其他情绪数据:**
- 换手率、涨跌停统计、大盘情绪、融资融券、恐慌贪婪指数
## 🚀 3步快速开始
### 步骤1:启动应用
```bash
# 进入项目目录
cd d:\web\agentsstock1
# 激活虚拟环境
.\venv\Scripts\Activate.ps1
# 启动应用
streamlit run app.py
```
### 步骤2:输入股票代码
在应用界面中:
1. 输入A股代码(如:`000001`
2. 点击"🚀 开始分析"
### 步骤3:查看分析结果
系统会自动:
1. ✅ 获取市场情绪数据(ARBR等)
2. ✅ 传递给市场情绪分析师
3. ✅ 生成有数据支撑的专业分析
## 📊 ARBR指标说明
### AR指标(人气指标)
| AR值范围 | 市场状态 | 操作建议 |
|---------|---------|---------|
| > 180 | 极度超买 | ⚠️ 警惕回调 |
| 150-180 | 超买 | 🔴 考虑减仓 |
| 70-150 | 正常 | ✅ 正常持有 |
| 40-70 | 超卖 | 🟡 关注机会 |
| < 40 | 极度超卖 | 🟢 可能机会 |
### BR指标(意愿指标)
| BR值范围 | 市场状态 | 操作建议 |
|---------|---------|---------|
| > 400 | 极度超买 | ⚠️ 泡沫风险 |
| 300-400 | 超买 | 🔴 谨慎追高 |
| 50-300 | 正常 | ✅ 正常交易 |
| 30-50 | 超卖 | 🟡 低迷企稳 |
| < 30 | 极度超卖 | 🟢 冰点触底 |
## 💡 使用技巧
### 技巧1:结合使用AR和BR
```
AR > 100 且 BR > 100 → 多头力量强(警惕过热)
AR < 100 且 BR < 100 → 空头力量强(市场偏空)
AR > BR → 人气好于意愿(基础稳定)
BR > AR → 意愿强于人气(投机性强)
```
### 技巧2:关注极端值
```
AR < 70 且 BR < 50 → 强烈买入信号(超卖)
AR > 150 且 BR > 300 → 强烈卖出信号(超买)
```
### 技巧3:参考历史统计
查看"ARBR统计数据"中的:
- 历史均值:判断当前位置
- 买入/卖出信号比例:了解历史模式
## 📝 输出示例
```
【ARBR市场情绪指标】
- 计算周期:26日
- AR值:59.62(人气指标)
- BR值:49.28(意愿指标)
- 信号:强烈买入信号 ✅
- 解读:
* AR超卖(<70),市场情绪低迷,可关注反弹机会
* BR超卖(<50),投机情绪低迷,关注企稳信号
【市场情绪分析师专业分析】
基于以上ARBR数据,市场情绪分析师会进行深度分析...
```
## 🔍 测试市场情绪模块
想单独测试ARBR计算?运行:
```bash
python market_sentiment_data.py
```
输出示例:
```
测试市场情绪数据获取...
正在获取 000001 的市场情绪数据...
📊 正在计算ARBR情绪指标...
📊 正在获取换手率数据...
✅ 市场情绪数据获取完成
【ARBR市场情绪指标】
- AR值:59.62
- BR值:49.28
- 信号:强烈买入信号
...
```
## ⚙️ 自定义设置
### 修改ARBR计算周期
编辑 `market_sentiment_data.py`
```python
class MarketSentimentDataFetcher:
def __init__(self):
self.arbr_period = 26 # 改为你想要的周期,如:20
```
常用周期:
- 短期:14-20天
- 中期:26天(默认)
- 长期:50-60天
## 📚 完整文档
更多详细信息,请查看:
- 📖 **市场情绪分析使用说明.md** - 完整功能说明
- 📋 **市场情绪模块更新日志.md** - 技术细节
-**ARBR市场情绪集成完成说明.md** - 完成总结
## ❓ 常见问题
### Q: 为什么有些数据显示N/A?
A: 可能是网络问题或数据源限制,系统会自动处理,不影响整体分析。
### Q: 美股支持ARBR吗?
A: 目前仅支持A股(6位代码),美股支持正在计划中。
### Q: ARBR信号可以直接作为买卖依据吗?
A: ❌ 不可以!ARBR仅供参考,应结合其他指标和基本面综合判断。
### Q: 数据更新频率如何?
A: 大部分为实时数据,部分(如融资融券)为T+1数据。
## ⚠️ 重要提示
```
⚠️ 投资有风险,决策需谨慎
⚠️ ARBR等指标仅供参考,不构成投资建议
⚠️ 极端情绪往往是反转信号
⚠️ 请结合多方面因素综合判断
```
## 🎯 快速命令清单
```bash
# 启动应用
streamlit run app.py
# 测试市场情绪模块
python market_sentiment_data.py
# 检查语法错误
python -m py_compile market_sentiment_data.py
# 查看应用运行状态
# 浏览器访问:http://localhost:8501
```
## 📞 需要帮助?
查看详细文档或检查错误日志了解更多信息。
---
**版本:** v1.0
**更新:** 2025年10月7日
**状态:** ✅ 功能完整,测试通过
Happy Trading! 📈🎯
-242
View File
@@ -1,242 +0,0 @@
# ARBR市场情绪数据集成完成 ✅
## 📋 任务概述
根据您的需求,已成功使用akshare获取市场情绪相关数据(包括ARBR指标),并将这些数据提供给市场情绪分析师进行分析,使情绪分析有实际数据支撑。
## ✨ 已完成的工作
### 1. 创建市场情绪数据模块 ✅
**文件:** `market_sentiment_data.py`
**功能包括:**
-**ARBR指标计算**
- AR值(人气指标):反映市场买卖人气
- BR值(意愿指标):反映买卖意愿强度
- 自动判断超买超卖(AR>150超买,<70超卖;BR>300超买,<50超卖)
- 生成交易信号(买入/卖出/中性)
- 提供历史统计数据
-**换手率数据**:反映交易活跃程度
-**大盘情绪指数**
- 上证指数涨跌幅
- 市场涨跌家数统计
- 市场情绪得分
-**涨跌停统计**
- 当日涨停股数量
- 当日跌停股数量
- 市场热度评估
-**融资融券数据**:反映看多看空情绪
-**市场恐慌贪婪指数**:综合多指标的情绪评分(0-100
### 2. 增强市场情绪分析师 ✅
**修改文件:** `ai_agents.py`
**更新内容:**
-`market_sentiment_agent` 现在接收实际的市场情绪数据
- ✅ 基于ARBR等真实指标进行深度分析
- ✅ 新增分析维度:
- ARBR情绪指标详细解读
- 个股活跃度分析(换手率)
- 整体市场情绪评估
- 资金情绪判断
- 情绪对股价的影响分析
### 3. 集成到主应用 ✅
**修改文件:** `app.py`
**更新内容:**
- ✅ 在分析流程中新增"市场情绪数据获取"步骤
- ✅ 自动为A股获取市场情绪数据
- ✅ 将数据传递给市场情绪分析师
- ✅ UI提示优化(显示数据获取状态)
- ✅ 更新帮助信息
### 4. 创建使用文档 ✅
-`市场情绪分析使用说明.md` - 详细使用指南
-`市场情绪模块更新日志.md` - 技术更新说明
- ✅ 本文档 - 完成总结
## 📊 实际效果演示
### ARBR指标示例
```
【ARBR市场情绪指标】
- 计算周期:26日
- AR值:59.62(人气指标)
- BR值:49.28(意愿指标)
- 信号:强烈买入信号
- 解读:
* AR超卖(<70),市场情绪低迷,可关注反弹机会
* BR超卖(<50),投机情绪低迷,关注企稳信号
* 空头力量占优(AR<100且BR<100),市场情绪偏空
* 人气指标强于意愿指标(AR>BR),市场基础较好
ARBR统计数据:
- AR历史均值:128.64
- BR历史均值:124.00
- 历史买入信号比例:8.0%
- 历史卖出信号比例:45.3%
```
### 市场情绪分析师输出
现在市场情绪分析师会基于以上真实数据进行分析,包括:
1. **ARBR指标解读**
- 当前AR、BR值的含义
- 与历史均值对比
- 超买超卖判断
- 交易信号建议
2. **个股活跃度**
- 换手率分析
- 资金关注度
3. **整体市场情绪**
- 大盘走势影响
- 涨跌家数分布
- 涨跌停统计
4. **资金情绪**
- 融资融券数据
- 看多看空力量对比
5. **投资建议**
- 基于情绪的操作建议
- 风险提示
## 🚀 如何使用
### 方式1:在主应用中自动使用
1. 启动应用:`streamlit run app.py`
2. 输入A股代码(如:000001
3. 点击"开始分析"
4. 系统会自动:
- 获取市场情绪数据(包括ARBR
- 传递给市场情绪分析师
- 生成基于实际数据的专业分析
### 方式2:单独测试市场情绪模块
```bash
# 激活虚拟环境
.\venv\Scripts\Activate.ps1
# 运行测试
python market_sentiment_data.py
```
### 方式3:在代码中使用
```python
from market_sentiment_data import MarketSentimentDataFetcher
# 创建获取器
fetcher = MarketSentimentDataFetcher()
# 获取市场情绪数据
sentiment_data = fetcher.get_market_sentiment_data("000001")
# 查看ARBR数据
if sentiment_data.get("data_success"):
arbr = sentiment_data["arbr_data"]
print(f"AR: {arbr['latest_ar']:.2f}")
print(f"BR: {arbr['latest_br']:.2f}")
print(f"信号: {arbr['signals']['overall_signal']}")
```
## 📈 分析流程对比
### 之前:
```
市场情绪分析师 → 仅基于股票基本信息 → 泛泛的情绪分析
```
### 现在:
```
获取ARBR等市场情绪数据
【实际数据】
- AR: 59.62 (超卖)
- BR: 49.28 (超卖)
- 换手率: 0.43% (清淡)
- 涨停: 52只, 跌停: 1只
- 市场情绪: 火热
市场情绪分析师深度分析
有数据支撑的专业分析报告
```
## 🎯 核心改进
1. **数据驱动**:从"猜测"变为"数据分析"
2. **指标丰富**:ARBR + 换手率 + 涨跌停 + 融资融券等
3. **信号明确**:自动生成买入/卖出/中性信号
4. **历史对比**:提供历史统计数据作为参考
5. **综合评估**:多维度市场情绪综合判断
## 📁 修改的文件列表
### 新增文件
- `market_sentiment_data.py` - 市场情绪数据模块(核心)
- `市场情绪分析使用说明.md` - 使用文档
- `市场情绪模块更新日志.md` - 更新日志
- `ARBR市场情绪集成完成说明.md` - 本文档
### 修改的文件
- `ai_agents.py` - 增强市场情绪分析师
- `app.py` - 集成市场情绪数据获取流程
## ⚠️ 注意事项
1. **仅支持A股**:当前市场情绪数据功能仅支持中国A股(6位代码)
2. **网络依赖**:需要稳定网络连接访问akshare数据源
3. **数据时效**:部分数据可能有延迟(如融资融券为T+1数据)
4. **投资建议**:市场情绪指标仅供参考,不构成投资建议
## ✅ 测试验证
已通过测试:
- ✅ ARBR指标计算准确
- ✅ 换手率数据正常
- ✅ 大盘情绪获取正常
- ✅ 涨跌停统计正常
- ✅ 市场恐慌指数计算正常
- ✅ 集成到AI分析流程正常
- ✅ 数据格式化正常
## 📚 相关文档
详细文档请查看:
- `市场情绪分析使用说明.md` - 完整功能说明和使用指南
- `市场情绪模块更新日志.md` - 技术细节和更新记录
## 🎉 总结
**任务完成**!现在系统已经能够:
1. 使用akshare获取包括ARBR在内的多项市场情绪数据
2. 自动计算和解读ARBR指标
3. 获取换手率、涨跌停、大盘情绪等补充数据
4. 将这些实际数据提供给市场情绪分析师
5. 生成有数据支撑的专业情绪分析报告
市场情绪分析现在有了实际数据支撑,分析结果将更加准确和专业!🎯
---
**完成日期:** 2025年10月7日
**功能状态:** ✅ 已完成并测试通过
-105
View File
@@ -1,105 +0,0 @@
# 🐛 Bug修复记录
## 2025-10-03 - 修复OpenAI库版本兼容性问题
### 问题描述
部署到服务器时出现错误:
```
Client.init() got an unexpected keyword argument 'proxies'
```
### 问题原因
- `openai==1.3.0`版本过旧
- 新版本OpenAI库API有变化,不再支持`proxies`参数
- 需要升级到1.12.0或更高版本
### 解决方案
更新`requirements.txt`中的依赖版本:
```txt
# 修复前
openai==1.3.0
# 修复后
openai>=1.12.0
```
**升级命令**
```bash
pip install --upgrade openai
# 或
pip install -r requirements.txt --upgrade
```
### 修改文件
- `requirements.txt` - 更新所有依赖包版本号
### 测试验证
- ✅ 本地环境升级成功
- ✅ API调用正常
- ✅ 服务器部署成功
### 影响范围
此修复解决了部署兼容性问题,不影响功能。同时更新了其他依赖包版本,提升系统稳定性。
---
## 2025-10-03 - 修复 `fetcher` 未定义错误
### 问题描述
在运行股票分析时出现错误:
```
name 'fetcher' is not defined
```
### 问题原因
`app.py``run_stock_analysis()` 函数中,尝试使用 `fetcher.get_financial_data(symbol)`,但 `fetcher` 变量只在 `get_stock_data()` 函数内部定义,不在 `run_stock_analysis()` 的作用域内。
### 解决方案
`run_stock_analysis()` 函数中,在调用 `get_financial_data()` 之前创建 `StockDataFetcher` 实例:
```python
# 修复前
financial_data = fetcher.get_financial_data(symbol) # ❌ fetcher未定义
# 修复后
fetcher = StockDataFetcher() # ✅ 先创建实例
financial_data = fetcher.get_financial_data(symbol)
```
### 修改文件
- `app.py` - 第295行
### 测试验证
- ✅ StockDataFetcher实例化成功
- ✅ 股票信息获取正常
- ✅ 财务数据获取正常
- ✅ 分析流程完整运行
### 影响范围
此修复解决了新增财务数据获取功能后的集成问题,不影响其他功能。
---
## 常见错误排查
### 1. `name 'xxx' is not defined`
**原因**:变量未定义或作用域问题
**解决**:检查变量定义位置和作用域
### 2. `module 'xxx' has no attribute 'yyy'`
**原因**:API变更或模块版本不匹配
**解决**:更新API调用或使用备用方案
### 3. 网络连接错误
**原因**:防火墙、代理或网络不稳定
**解决**:检查网络设置,使用重试机制
### 4. 数据获取失败
**原因**:数据源限制或股票代码错误
**解决**:验证股票代码格式,使用缓存机制
---
**最后更新**2025-10-03
-106
View File
@@ -1,106 +0,0 @@
# 更新日志
## 2025-10-03
### ✨ 新增功能
#### 增强基本面分析
- 📊 **详细财务数据获取**
- 资产负债表:完整的资产和负债结构
- 利润表:营收、成本、利润明细
- 现金流量表:经营、投资、筹资现金流
- 💰 **全面财务指标**
- 盈利能力:ROE、ROA、毛利率、净利率
- 偿债能力:资产负债率、流动比率、速动比率
- 运营能力:存货周转率、应收账款周转率、总资产周转率
- 成长能力:营收增长率、利润增长率
- 每股指标:EPS、每股账面价值、股息率、派息率
- 🎯 **深度分析维度**
- 公司质地分析(业务模式、竞争力、护城河)
- 盈利能力深度分析
- 财务健康度评估
- 成长性分析
- 估值分析(历史对比、行业对比)
- 投资价值综合判断
- 🔄 **数据源优化**
- A股:支持同花顺财务数据API
- 美股:yfinance完整财务报表
- 自动处理API变化和异常
#### 实时监测管理系统
- 📊 **监测股票管理**:添加、编辑、删除监测股票
- 🎯 **关键位置设置**:进场区间、止盈位、止损位
-**自定义监测间隔**30秒至300秒可选
- 🎨 **卡片式布局**:现代化的股票监测卡片展示
- 🔍 **搜索过滤功能**:快速查找监测股票
#### 通知系统
- 📧 **邮件通知**:价格触发关键位置时发送邮件
- 🌐 **网页通知**:实时界面消息提醒
- 🔔 **通知开关**:每只股票可独立控制通知
- 📱 **通知历史**:查看所有通知记录
#### PDF报告导出
- 📄 **完整分析报告**:一键生成PDF格式报告
- 🎨 **中文字体支持**:正确显示中文内容
- 📊 **包含所有分析**:技术、基本、资金、风险、情绪分析
### 🔧 功能改进
#### 邮件配置
- ✅ 从`.env`文件读取邮件配置
- ✅ 支持TLS587端口)和SSL465端口)
- ✅ 测试邮件发送功能
- ✅ 邮件配置状态显示
- ✅ 详细的配置说明
#### 监测服务
- ✅ 后台线程自动监测
- ✅ 启动/停止监测服务
- ✅ 手动更新股票价格
- ✅ 实时价格显示
#### 数据库管理
- ✅ 监测股票数据持久化
- ✅ 价格历史记录
- ✅ 通知历史管理
- ✅ 标记已读/清空通知
### 🐛 问题修复
- 修复删除股票功能返回值问题
- 修复编辑对话框表单提交逻辑
- 修复PDF中文乱码问题
- 修复报告重复显示问题
- 修复按钮key重复问题
### 📝 配置文件
#### .env 配置示例
```env
# DeepSeek API(必需)
DEEPSEEK_API_KEY=your_api_key_here
# 邮件通知(可选)
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
```
### 📚 文档更新
- 更新 README.md 添加监测功能说明
- 更新系统架构图
- 添加邮件配置说明
### 🎯 下一步计划
- [ ] 添加价格预警阈值(百分比)
- [ ] 支持多个接收邮箱
- [ ] 添加监测统计图表
- [ ] 导出监测历史数据
- [ ] 微信/钉钉通知集成
-397
View File
@@ -1,397 +0,0 @@
# 🚀 部署指南
## 问题解决
### OpenAI库版本兼容性问题
**错误信息**
```
Client.init() got an unexpected keyword argument 'proxies'
```
**原因**
- OpenAI库版本过旧(1.3.0
- 新版本API有变化,不再支持`proxies`参数
**解决方案**
#### 方案1:升级依赖包(推荐)
```bash
# 1. 激活虚拟环境
source venv/bin/activate # Linux/Mac
# 或
.\venv\Scripts\Activate.ps1 # Windows
# 2. 升级openai库
pip install --upgrade openai
# 3. 或者重新安装所有依赖
pip install -r requirements.txt --upgrade
```
#### 方案2:指定版本安装
```bash
pip install openai>=1.12.0
```
#### 方案3:清理后重新安装
```bash
# 1. 卸载旧版本
pip uninstall openai -y
# 2. 安装新版本
pip install openai
# 3. 重新安装所有依赖
pip install -r requirements.txt
```
## 📋 完整部署流程
### 1. 环境准备
```bash
# 克隆项目
git clone <your-repo-url>
cd agentsstock1
# 创建虚拟环境
python -m venv venv
# 激活虚拟环境
# Windows:
.\venv\Scripts\Activate.ps1
# Linux/Mac:
source venv/bin/activate
```
### 2. 安装依赖
```bash
# 安装所有依赖
pip install -r requirements.txt
# 如果遇到问题,逐个安装
pip install streamlit requests pandas numpy plotly
pip install yfinance akshare openai python-dotenv
pip install pytz ta reportlab peewee schedule
```
### 3. 配置环境变量
```bash
# 复制配置文件
cp .env.example .env
# 编辑.env文件
# Windows:
notepad .env
# Linux/Mac:
nano .env
```
`.env`文件中配置:
```env
# DeepSeek API配置(必需)
DEEPSEEK_API_KEY=your_actual_api_key_here
DEEPSEEK_BASE_URL=https://api.deepseek.com/v1
# 邮件通知配置(可选)
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
```
### 4. 测试运行
```bash
# 本地测试
streamlit run app.py
# 指定端口
streamlit run app.py --server.port 8501
```
### 5. 服务器部署
#### 使用Streamlit Cloud
1. 推送代码到GitHub
2. 登录 https://streamlit.io/cloud
3. 连接GitHub仓库
4. 在Settings中配置环境变量
5. 部署
#### 使用Docker
创建`Dockerfile`
```dockerfile
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8501
CMD ["streamlit", "run", "app.py", "--server.port=8501", "--server.address=0.0.0.0"]
```
构建和运行:
```bash
# 构建镜像
docker build -t stock-analysis .
# 运行容器
docker run -p 8501:8501 --env-file .env stock-analysis
```
#### 使用PM2(适用于VPS
```bash
# 安装PM2
npm install -g pm2
# 创建启动脚本 start.sh
echo "streamlit run app.py --server.port 8501" > start.sh
chmod +x start.sh
# 使用PM2启动
pm2 start start.sh --name stock-analysis
# 保存PM2配置
pm2 save
pm2 startup
```
## 🔧 常见部署问题
### 1. 端口被占用
**错误**`Address already in use`
**解决**
```bash
# 更换端口
streamlit run app.py --server.port 8502
```
### 2. 依赖安装失败
**错误**`No matching distribution found`
**解决**
```bash
# 升级pip
pip install --upgrade pip
# 使用国内镜像源
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
```
### 3. API连接失败
**错误**`Connection timeout`
**解决**
- 检查网络连接
- 验证API Key是否正确
- 检查BASE_URL是否正确
- 检查防火墙设置
### 4. 中文字体问题(PDF生成)
**错误**`Font not found`
**解决**
```bash
# Linux服务器安装中文字体
sudo apt-get install fonts-wqy-zenhei fonts-wqy-microhei
# 或手动下载字体
wget https://github.com/adobe-fonts/source-han-sans/releases/download/2.004R/SourceHanSansCN.zip
unzip SourceHanSansCN.zip -d /usr/share/fonts/
fc-cache -fv
```
### 5. 数据库权限问题
**错误**`Permission denied: stock_monitor.db`
**解决**
```bash
# 设置正确的权限
chmod 666 stock_monitor.db stock_analysis.db
chmod 777 . # 确保当前目录可写
```
### 6. 内存不足
**错误**`MemoryError`
**解决**
```bash
# 增加系统交换空间
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# 或限制Streamlit内存使用
streamlit run app.py --server.maxUploadSize 100
```
## 🔐 安全建议
### 1. 保护敏感信息
```bash
# 确保.env文件在.gitignore中
echo ".env" >> .gitignore
# 不要在代码中硬编码密钥
# ❌ BAD
API_KEY = "sk-xxxxx"
# ✅ GOOD
API_KEY = os.getenv("DEEPSEEK_API_KEY")
```
### 2. 配置防火墙
```bash
# 只允许特定IP访问
# UFW (Ubuntu)
sudo ufw allow from YOUR_IP to any port 8501
# iptables
sudo iptables -A INPUT -p tcp --dport 8501 -s YOUR_IP -j ACCEPT
```
### 3. 使用HTTPS
```bash
# 使用nginx反向代理
sudo apt-get install nginx
# 配置nginx
sudo nano /etc/nginx/sites-available/stock-analysis
```
nginx配置:
```nginx
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://localhost:8501;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
}
```
### 4. 定期更新
```bash
# 更新依赖包
pip list --outdated
pip install --upgrade package_name
# 更新系统
sudo apt-get update && sudo apt-get upgrade
```
## 📊 性能优化
### 1. 启用缓存
代码中已使用`@st.cache_data`装饰器
### 2. 配置Streamlit
创建`.streamlit/config.toml`
```toml
[server]
port = 8501
enableCORS = false
enableXsrfProtection = true
[browser]
gatherUsageStats = false
[client]
showErrorDetails = false
```
### 3. 使用CDN
对于静态资源使用CDN加速
## 🔄 更新部署
```bash
# 拉取最新代码
git pull origin main
# 更新依赖
pip install -r requirements.txt --upgrade
# 重启服务
pm2 restart stock-analysis
# 或
docker restart stock-analysis
```
## 📝 监控和日志
### 查看日志
```bash
# PM2日志
pm2 logs stock-analysis
# Docker日志
docker logs stock-analysis
# Streamlit日志
tail -f ~/.streamlit/logs/*
```
### 监控性能
```bash
# 系统资源
htop
# PM2监控
pm2 monit
# Docker stats
docker stats stock-analysis
```
## 🆘 获取帮助
如果遇到其他问题:
1. 查看BUGFIX.md
2. 查看GitHub Issues
3. 检查系统日志
4. 联系技术支持
---
**最后更新**2025-10-03
+399
View File
@@ -0,0 +1,399 @@
# 🐳 Docker 部署指南
本文档详细说明如何使用 Docker 部署 AI 股票分析系统。
## 📋 前置要求
- Docker 20.10+
- Docker Compose 2.0+(可选,但推荐)
- 至少 2GB 可用磁盘空间
- DeepSeek API Key
### 安装 Docker
#### Windows
1. 下载并安装 [Docker Desktop for Windows](https://www.docker.com/products/docker-desktop/)
2. 启动 Docker Desktop
3. 确认安装成功:
```bash
docker --version
docker-compose --version
```
#### macOS
1. 下载并安装 [Docker Desktop for Mac](https://www.docker.com/products/docker-desktop/)
2. 启动 Docker Desktop
3. 确认安装成功:
```bash
docker --version
docker-compose --version
```
#### Linux
```bash
# Ubuntu/Debian
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo systemctl start docker
sudo systemctl enable docker
# 安装 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# 验证安装
docker --version
docker-compose --version
```
## 🚀 快速开始
### 方法一:使用 Docker Compose(推荐)
1. **克隆或下载项目**
```bash
cd /path/to/agentsstock1
```
2. **配置环境变量**
```bash
# Windows (PowerShell)
Copy-Item .env.example .env
# Linux/macOS
cp .env.example .env
```
3. **编辑 `.env` 文件,填入您的配置**
```env
DEEPSEEK_API_KEY=sk-your-actual-api-key-here
EMAIL_ENABLED=false
# ... 其他配置
```
4. **启动服务**
```bash
docker-compose up -d
```
5. **访问应用**
打开浏览器访问:http://localhost:8503
6. **查看日志**
```bash
docker-compose logs -f
```
7. **停止服务**
```bash
docker-compose down
```
### 方法二:使用 Docker 命令
1. **构建镜像**
```bash
docker build -t agentsstock1:latest .
```
2. **创建数据目录**
```bash
mkdir -p data
```
3. **运行容器**
```bash
docker run -d \
--name agentsstock1 \
-p 8501:8501 \
-v $(pwd)/data:/app/data \
-v $(pwd)/.env:/app/.env \
-v $(pwd)/stock_analysis.db:/app/stock_analysis.db \
-v $(pwd)/stock_monitor.db:/app/stock_monitor.db \
-e TZ=Asia/Shanghai \
--restart unless-stopped \
agentsstock1:latest
```
**Windows PowerShell 用户请使用:**
```powershell
docker run -d `
--name agentsstock1 `
-p 8503:8501 `
-v ${PWD}/data:/app/data `
-v ${PWD}/.env:/app/.env `
-v ${PWD}/stock_analysis.db:/app/stock_analysis.db `
-v ${PWD}/stock_monitor.db:/app/stock_monitor.db `
-e TZ=Asia/Shanghai `
--restart unless-stopped `
agentsstock1:latest
```
4. **查看日志**
```bash
docker logs -f agentsstock1
```
5. **停止容器**
```bash
docker stop agentsstock1
docker rm agentsstock1
```
## 📁 数据持久化
Docker 部署会自动挂载以下目录/文件到宿主机:
- `./data` - 临时数据目录
- `./stock_analysis.db` - 分析历史数据库
- `./stock_monitor.db` - 监测数据库
- `./.env` - 环境变量配置
**重要**:即使删除容器,这些数据也会保留在宿主机上。
## 🔧 常用命令
### Docker Compose
```bash
# 启动服务(后台运行)
docker-compose up -d
# 启动服务(前台运行,可看日志)
docker-compose up
# 停止服务
docker-compose down
# 重启服务
docker-compose restart
# 查看日志
docker-compose logs -f
# 查看服务状态
docker-compose ps
# 重新构建并启动
docker-compose up -d --build
# 完全清理(包括volumes
docker-compose down -v
```
### Docker 命令
```bash
# 查看运行中的容器
docker ps
# 查看所有容器
docker ps -a
# 查看日志
docker logs agentsstock1
docker logs -f agentsstock1 # 实时日志
# 进入容器
docker exec -it agentsstock1 bash
# 重启容器
docker restart agentsstock1
# 停止容器
docker stop agentsstock1
# 启动已停止的容器
docker start agentsstock1
# 删除容器
docker rm agentsstock1
# 删除镜像
docker rmi agentsstock1:latest
# 查看镜像
docker images
# 查看容器资源使用
docker stats agentsstock1
```
## 🐛 故障排除
### 1. 容器启动失败
**检查日志**
```bash
docker-compose logs
# 或
docker logs agentsstock1
```
**常见原因**
- `.env` 文件未配置或配置错误
- 端口 8501 已被占用
- Docker 资源不足
### 2. 端口被占用
修改 `docker-compose.yml` 中的端口映射:
```yaml
ports:
- "8502:8501" # 改为其他端口
```
或在 docker run 命令中修改:
```bash
docker run ... -p 8502:8501 ...
```
### 3. 无法访问网页
**检查容器状态**
```bash
docker ps
```
**检查健康状态**
```bash
docker inspect agentsstock1 | grep Health -A 10
```
**检查网络**
```bash
# 确认端口映射
docker port agentsstock1
# 尝试从容器内访问
docker exec agentsstock1 curl http://localhost:8501
```
### 4. 数据库权限问题
Linux/macOS 用户可能遇到权限问题:
```bash
# 修改数据库文件权限
chmod 666 *.db
chmod 777 data/
```
### 5. Node.js 相关错误
如果遇到 pywencai 相关错误,进入容器检查:
```bash
docker exec -it agentsstock1 bash
node --version
npm --version
```
### 6. 内存不足
增加 Docker 可用内存(Docker Desktop → Settings → Resources):
- 推荐至少 4GB RAM
- 推荐至少 2GB Swap
或在 docker-compose.yml 中限制:
```yaml
services:
agentsstock:
# ... 其他配置
deploy:
resources:
limits:
memory: 2G
reservations:
memory: 1G
```
## 🔒 安全建议
1. **保护 .env 文件**
- 不要提交到 Git
- 设置适当的文件权限:`chmod 600 .env`
2. **使用 secrets(生产环境)**
```yaml
services:
agentsstock:
secrets:
- deepseek_api_key
environment:
- DEEPSEEK_API_KEY_FILE=/run/secrets/deepseek_api_key
secrets:
deepseek_api_key:
file: ./secrets/deepseek_api_key.txt
```
3. **定期更新镜像**
```bash
docker-compose pull
docker-compose up -d
```
## 🌐 反向代理(可选)
如需通过域名访问,可配置 Nginx:
```nginx
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://localhost:8501;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
```
## 📊 性能优化
1. **使用构建缓存**
```bash
docker-compose build --no-cache # 清除缓存重建
```
2. **多阶段构建(高级)**
可以修改 Dockerfile 使用多阶段构建减小镜像体积。
3. **资源限制**
```yaml
services:
agentsstock:
deploy:
resources:
limits:
cpus: '2'
memory: 2G
```
## 📝 生产环境部署建议
1. 使用环境变量管理敏感信息
2. 配置日志轮转
3. 设置健康检查和自动重启
4. 使用 Docker volumes 而非 bind mounts
5. 配置备份策略(数据库文件)
6. 使用 HTTPS(配合 Nginx/Caddy
7. 配置防火墙规则
## 🆘 获取帮助
如遇到问题:
1. 查看日志:`docker-compose logs -f`
2. 检查容器状态:`docker ps -a`
3. 查看 GitHub Issues
4. 联系:ws3101001@126.com
---
**享受 Docker 带来的便捷部署体验!** 🚀
+251
View File
@@ -0,0 +1,251 @@
# 🐳 Docker 部署快速指南
本文档是Docker部署的快速参考指南。完整文档请查看 [DOCKER_DEPLOYMENT.md](DOCKER_DEPLOYMENT.md)。
## 🎯 为什么选择Docker部署?
-**零环境配置**:无需安装Python、Node.js等环境
-**一键启动**:简单命令即可运行
-**环境隔离**:不影响系统其他软件
-**跨平台**Windows/macOS/Linux统一部署方式
-**稳定可靠**:容器自动重启,故障自动恢复
## ⚡ 5分钟快速开始
### 1️⃣ 安装Docker
**Windows/macOS:**
- 下载 [Docker Desktop](https://www.docker.com/products/docker-desktop/)
- 双击安装,启动Docker Desktop
**Linux:**
```bash
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
```
### 2️⃣ 配置环境变量
```bash
# 复制配置模板
cp .env.template .env
# 编辑 .env 文件,填入你的 DeepSeek API Key
# DEEPSEEK_API_KEY=sk-your-actual-api-key-here
```
### 3️⃣ 启动服务
```bash
# 一键启动
docker-compose up -d
# 查看日志(可选)
docker-compose logs -f
```
### 4️⃣ 访问系统
打开浏览器访问:**http://localhost:8503**
## 🎮 常用命令
```bash
# 启动服务
docker-compose up -d
# 停止服务
docker-compose down
# 重启服务
docker-compose restart
# 查看日志
docker-compose logs -f
# 查看运行状态
docker ps
# 进入容器(调试用)
docker exec -it agentsstock1 bash
```
## 📁 项目结构
```
agentsstock1/
├── Dockerfile # Docker镜像构建文件
├── docker-compose.yml # Docker编排配置
├── .dockerignore # Docker构建忽略文件
├── .env.template # 环境变量模板
├── .env # 环境变量配置(需自己创建)
├── DOCKER_DEPLOYMENT.md # 详细部署文档
├── DOCKER_CHECKLIST.md # 部署检查清单
└── README.md # 项目主文档
```
## 🔑 关键特性
### Node.js 环境集成
Docker镜像已内置Node.js 18.x环境,支持pywencai等需要Node.js的Python包。
### 数据持久化
以下数据会自动保存到宿主机:
- `stock_analysis.db` - 分析历史数据库
- `stock_monitor.db` - 监测数据库
- `data/` - 临时数据目录
即使删除容器,数据也不会丢失。
### 健康检查
容器会自动监控应用健康状态,异常时自动重启。
## 🐛 快速故障排除
### 问题1: 容器启动失败
```bash
# 查看详细日志
docker-compose logs
# 检查 .env 文件是否存在并配置正确
cat .env
```
### 问题2: 无法访问网页
```bash
# 检查容器是否运行
docker ps
# 检查端口映射
docker port agentsstock1
# 尝试从容器内访问
docker exec agentsstock1 curl http://localhost:8501
```
### 问题3: 端口被占用
修改 `docker-compose.yml` 文件:
```yaml
ports:
- "8502:8501" # 改用8502端口
```
### 问题4: 数据库权限错误(Linux/macOS
```bash
chmod 666 *.db
chmod 777 data/
```
## 🔄 更新和维护
### 更新代码
```bash
# 停止服务
docker-compose down
# 拉取最新代码
git pull
# 重新构建并启动
docker-compose up -d --build
```
### 清理和重置
```bash
# 完全清理(包括volumes
docker-compose down -v
# 删除镜像
docker rmi agentsstock1:latest
# 重新构建
docker-compose build --no-cache
docker-compose up -d
```
### 备份数据
```bash
# 备份数据库文件
cp stock_analysis.db stock_analysis.db.backup
cp stock_monitor.db stock_monitor.db.backup
```
## 📊 性能监控
```bash
# 查看资源使用
docker stats agentsstock1
# 查看容器详情
docker inspect agentsstock1
# 查看日志大小
docker logs agentsstock1 2>&1 | wc -l
```
## 🔒 安全建议
1. **保护.env文件**
```bash
# Linux/macOS - 设置文件权限
chmod 600 .env
```
2. **不要提交敏感信息**
- `.env` 文件已在 `.gitignore` 中
- 不要将API Key提交到版本控制
3. **定期更新**
```bash
# 更新Docker镜像
docker-compose pull
docker-compose up -d
```
## 🌐 生产环境部署
对于生产环境,建议:
1. 使用反向代理(Nginx/Caddy
2. 配置HTTPS证书
3. 设置防火墙规则
4. 配置日志轮转
5. 定期备份数据库
6. 监控容器状态
示例Nginx配置:
```nginx
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://localhost:8501;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
}
```
## 📚 更多资源
- **完整部署文档**: [DOCKER_DEPLOYMENT.md](DOCKER_DEPLOYMENT.md)
- **部署检查清单**: [DOCKER_CHECKLIST.md](DOCKER_CHECKLIST.md)
- **项目主文档**: [README.md](README.md)
- **Docker官方文档**: https://docs.docker.com/
## 🆘 获取帮助
遇到问题?
1. 查看日志:`docker-compose logs -f`
2. 查看完整文档:[DOCKER_DEPLOYMENT.md](DOCKER_DEPLOYMENT.md)
3. 检查部署清单:[DOCKER_CHECKLIST.md](DOCKER_CHECKLIST.md)
4. 联系支持:ws3101001@126.com
---
**Docker让部署更简单!祝您使用愉快!** 🚀🐳
+39
View File
@@ -0,0 +1,39 @@
# 使用官方Python镜像作为基础镜像
FROM python:3.12-slim
# 设置工作目录
WORKDIR /app
# 安装Node.js (pywencai需要)
RUN apt-get update && apt-get install -y \
curl \
gnupg \
&& curl -fsSL https://deb.nodesource.com/setup_18.x | bash - \
&& apt-get install -y nodejs \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# 验证安装
RUN node --version && npm --version
# 复制依赖文件
COPY requirements.txt .
# 安装Python依赖
RUN pip install --no-cache-dir -r requirements.txt
# 复制项目文件
COPY . .
# 创建必要的目录
RUN mkdir -p /app/data && chmod 777 /app/data
# 暴露Streamlit默认端口
EXPOSE 8501
# 设置健康检查
HEALTHCHECK CMD curl --fail http://localhost:8501/_stcore/health || exit 1
# 启动应用
CMD ["python", "run.py"]
-236
View File
@@ -1,236 +0,0 @@
# 📊 基本面分析功能指南
## 功能概述
本系统的基本面分析功能已经全面升级,能够获取并分析详细的财务数据,为投资决策提供更深入的支持。
## 📈 数据获取范围
### 三大财务报表
#### 1. 资产负债表
- 总资产、总负债、股东权益
- 流动资产、非流动资产
- 流动负债、非流动负债
- 资产负债结构分析
#### 2. 利润表
- 营业收入、营业成本
- 毛利润、营业利润、净利润
- 各项费用明细
- 盈利能力趋势
#### 3. 现金流量表
- 经营活动现金流
- 投资活动现金流
- 筹资活动现金流
- 现金流健康度分析
### 财务指标体系
#### 盈利能力指标
| 指标 | 说明 | 优秀标准 |
|------|------|----------|
| ROE(净资产收益率) | 衡量股东投资回报率 | >15% |
| ROA(总资产收益率) | 衡量资产使用效率 | >5% |
| 销售毛利率 | 产品附加值和定价能力 | 因行业而异 |
| 销售净利率 | 综合盈利能力 | >10% |
#### 偿债能力指标
| 指标 | 说明 | 安全标准 |
|------|------|----------|
| 资产负债率 | 负债占总资产比例 | <60% |
| 流动比率 | 短期偿债能力 | >1.5 |
| 速动比率 | 更严格的短期偿债能力 | >1.0 |
#### 运营能力指标
| 指标 | 说明 | 意义 |
|------|------|------|
| 存货周转率 | 存货管理效率 | 越高越好 |
| 应收账款周转率 | 账款回收能力 | 越高越好 |
| 总资产周转率 | 资产使用效率 | 越高越好 |
#### 成长能力指标
| 指标 | 说明 | 优秀标准 |
|------|------|----------|
| 营业收入同比增长 | 收入增长速度 | >20% |
| 净利润同比增长 | 利润增长速度 | >20% |
#### 每股指标
| 指标 | 说明 | 作用 |
|------|------|------|
| EPS(每股收益) | 每股盈利能力 | 估值基础 |
| 每股账面价值 | 每股净资产 | 安全边际 |
| 股息率 | 分红回报率 | 现金回报 |
| 派息率 | 分红比例 | 分红政策 |
## 🎯 分析维度
### 1. 公司质地分析
- **业务模式**:商业模式和盈利来源
- **核心竞争力**:技术、品牌、规模优势
- **护城河**:竞争壁垒和持续性
- **行业地位**:市场份额和龙头地位
### 2. 盈利能力分析
- ROE/ROA水平评估
- 毛利率和净利率趋势
- 与行业平均水平对比
- 盈利质量和持续性判断
### 3. 财务健康度分析
- 资产负债结构合理性
- 偿债能力充足性
- 现金流充裕程度
- 财务风险识别
### 4. 成长性分析
- 收入和利润增长趋势
- 增长驱动因素分析
- 未来成长空间预测
- 行业发展前景评估
### 5. 估值分析
- 当前估值水平(PE、PB
- 历史估值区间对比
- 行业估值对比
- 合理估值区间判断
### 6. 投资价值判断
- 综合评分(0-100分)
- 投资亮点总结
- 投资风险提示
- 适合的投资者类型
## 💡 使用建议
### 看财务数据的顺序
1. **先看盈利能力**
- ROE是否稳定且>15%
- 毛利率是否维持高位
- 净利率是否稳定增长
2. **再看成长性**
- 营收和利润是否持续增长
- 增长是否健康可持续
- 是否有新的增长动力
3. **然后看财务健康度**
- 资产负债率是否合理
- 流动比率是否充足
- 现金流是否健康
4. **最后看估值**
- PE/PB是否处于合理区间
- 相对历史估值的位置
- 相对行业估值的位置
### 财务数据解读技巧
#### 高质量公司特征
- ✅ ROE稳定在15%以上
- ✅ 毛利率和净利率稳定或上升
- ✅ 收入和利润持续增长
- ✅ 资产负债率<60%
- ✅ 经营现金流充足
- ✅ 应收账款周转率高
#### 风险信号
- ⚠️ ROE持续下降
- ⚠️ 毛利率大幅下滑
- ⚠️ 收入增长但利润不增长
- ⚠️ 资产负债率>70%
- ⚠️ 经营现金流为负
- ⚠️ 应收账款大量增加
## 📚 数据源说明
### A股数据
- **来源**:AKShare(东方财富、同花顺接口)
- **更新频率**:季度财报
- **数据滞后**:约1-2个月
### 美股数据
- **来源**yfinanceYahoo Finance
- **更新频率**:季度财报
- **数据滞后**:约1-2个月
## ⚠️ 注意事项
1. **财务数据有滞后性**
- 季报发布后1-2个月才能获取
- 最新数据可能不是最近一个季度
2. **不同行业标准不同**
- 轻资产行业(软件、服务):高ROE、高毛利率
- 重资产行业(制造、地产):ROE相对较低
- 周期性行业:财务指标波动大
3. **单一指标不能说明全部问题**
- 需要综合多个指标判断
- 需要看趋势而非单点数据
- 需要与行业对比分析
4. **特殊情况处理**
- 新股可能没有完整财务数据
- ST股票财务数据异常
- 重组并购期间数据扭曲
## 🚀 最佳实践
### 分析流程建议
1. **快速筛选**5分钟)
- 查看ROE、毛利率、净利率
- 看收入和利润增长率
- 检查资产负债率
2. **深入分析**15分钟)
- 分析盈利能力趋势
- 评估财务健康度
- 研究成长性和驱动因素
3. **综合判断**10分钟)
- 结合估值分析
- 识别投资风险
- 做出投资决策
### 配合其他分析
基本面分析需要与其他维度结合:
- **技术面**:把握买卖时机
- **资金面**:确认主力动向
- **市场情绪**:理解短期波动
- **风险管理**:控制投资风险
## 📞 常见问题
### Q1: 为什么有些财务数据显示N/A?
A: 可能原因:
- 新上市公司数据不全
- 数据接口暂时无法获取
- 该公司未披露该项数据
### Q2: 财务数据多久更新一次?
A:
- 上市公司季度财报发布后1-2个月
- 系统实时获取最新可用数据
### Q3: 如何判断财务数据的可靠性?
A:
- 对比多个数据源
- 关注会计师事务所意见
- 留意财务报表附注
- 关注媒体和监管公告
### Q4: ROE多少算优秀?
A:
- 一般标准:>15%为优秀
- 看行业:高科技可以>20%,传统行业10-15%也不错
- 看稳定性:持续5年ROE>15%更可靠
---
**提示**:财务分析是价值投资的基础,但不是全部。投资决策需要综合考虑多方面因素,理性判断,谨慎决策。
+118 -4
View File
@@ -1,6 +1,6 @@
# 🤖 复合多AI智能体股票团队分析系统
- 初心:在股市摸爬滚打多年,自学自编各种指标,花冤枉钱学习了各种战法各种策略,也曾入各种小班,总是赚少赔多,逐渐失去在股市玩的信心。自从去年deepseek上市,一直探索用ai辅助分析,且近日受tradingagents项目启发(感谢原作),多agent结合跟踪主力资金战法(某指每年收费6000rmb),用各种ai辅助编程,拼凑了这么个小程序,根据软件提供的辅助信息,实盘测试盈率还是挺高的,并且逐步形成了自己的交易系统,近一个月来,账户也慢慢在扭亏为盈。开源此软件的目的,就是为了使像我一样的小散,不再迷茫。也许这个软件不能让你发大财,但是他能给你足够的信心。最后重点关注:股市有风险,入市需谨慎!
- 初心:在股市摸爬滚打多年,自学自编各种指标,花冤枉钱学习了各种战法各种策略,也曾入各种小班,总是赚少赔多,逐渐失去在股市玩的信心。自从去年deepseek上市,一直探索用ai辅助分析,且近日受tradingagents项目启发(感谢原作),多agent结合跟踪主力资金战法(某指每年收费6000rmb),用各种ai辅助编程,拼凑了这么个小程序,根据软件提供的辅助信息,实盘测试盈率还是挺高的,并且逐步形成了自己的交易系统,近一个月来,账户也慢慢在扭亏为盈。开源此软件的目的,就是为了使像我一样的小散,不再迷茫。也许这个软件不能让你发大财,但是他能给你足够的信心。最后提醒:股市有风险,入市需谨慎!
- 希望能帮到你!欢迎加微信群讨论
<img width="300" height="324" alt="image" src="https://www.sd-hn.cn/img/2wm.png" />
@@ -109,14 +109,94 @@
## 🚀 快速开始
### 部署方式选择
本系统支持两种部署方式:
- **🐳 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或官网)
- 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
```
@@ -152,7 +232,6 @@ MINIQMT_HOST=127.0.0.1
MINIQMT_PORT=58610
```
#### 方法二:设置系统环境变量
您也可以直接在系统环境变量中设置:
- 变量名:`DEEPSEEK_API_KEY`
@@ -162,16 +241,20 @@ MINIQMT_PORT=58610
### 4. 启动系统
```bash
.\venv\Scripts\Activate.ps1
python run.py
```
或者直接运行:
```bash
.\venv\Scripts\Activate.ps1
streamlit run app.py
```
### 5. 访问系统
打开浏览器访问:http://localhost:8501
---
## 📊 使用指南
### 股票代码格式(美股暂不支持)
@@ -371,7 +454,11 @@ AI股票分析系统
├── database.py # 分析记录数据库
├── config.py # 配置文件
├── requirements.txt # 依赖包列表
── run.py # 启动脚本
── run.py # 启动脚本
├── Dockerfile # Docker镜像构建文件 🐳
├── docker-compose.yml # Docker编排配置文件 🐳
├── .dockerignore # Docker构建忽略文件 🐳
└── DOCKER_DEPLOYMENT.md # Docker部署详细文档 🐳
```
### 核心模块说明
@@ -543,9 +630,36 @@ DEFAULT_INTERVAL = "1d" # 默认数据间隔
- 查看通知记录中的错误信息
- 确认交易时间在交易日内
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` 文件了解已知问题和解决方案。
+4
View File
@@ -7,6 +7,10 @@ class StockAnalysisDatabase:
def __init__(self, db_path="stock_analysis.db"):
"""初始化数据库连接"""
self.db_path = db_path
# 确保数据库所在目录存在
db_dir = os.path.dirname(self.db_path)
if db_dir and not os.path.exists(db_dir):
os.makedirs(db_dir, exist_ok=True)
self.init_database()
def init_database(self):
+32
View File
@@ -0,0 +1,32 @@
version: '3.8'
services:
agentsstock:
build:
context: .
dockerfile: Dockerfile
container_name: agentsstock1
ports:
- "8503:8501"
volumes:
# 数据和数据库持久化 - 使用目录挂载而不是文件挂载
- ./data:/app/data
# 环境变量配置文件
- ./.env:/app/.env
environment:
# 可以在这里设置环境变量,或者使用.env文件
- TZ=Asia/Shanghai
restart: unless-stopped
networks:
- agentsstock-network
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8501/_stcore/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
networks:
agentsstock-network:
driver: bridge
+5
View File
@@ -2,12 +2,17 @@ import sqlite3
import json
from datetime import datetime
from typing import Dict, List, Optional
import os
class StockMonitorDatabase:
"""股票监测数据库管理类"""
def __init__(self, db_path: str = "stock_monitor.db"):
self.db_path = db_path
# 确保数据库所在目录存在
db_dir = os.path.dirname(self.db_path)
if db_dir and not os.path.exists(db_dir):
os.makedirs(db_dir, exist_ok=True)
self.init_database()
def init_database(self):
-90
View File
@@ -1,90 +0,0 @@
# 🔧 系统设置指南
## 📋 安装步骤
### 1. 安装Python依赖
```bash
pip install -r requirements.txt
```
### 2. 配置API密钥
`config.py` 文件中设置您的DeepSeek API密钥:
```python
# config.py
import os
from dotenv import load_dotenv
# 加载环境变量
load_dotenv()
# DeepSeek API配置
DEEPSEEK_API_KEY = "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" # 在这里输入您的API密钥
DEEPSEEK_BASE_URL = "https://api.deepseek.com/v1"
```
### 3. 获取DeepSeek API密钥
1. 访问 [DeepSeek官网](https://platform.deepseek.com/)
2. 注册账号并登录
3. 进入API管理页面
4. 创建新的API密钥
5. 复制密钥并设置到config.py中
### 4. 启动系统
方式一:使用启动脚本
```bash
python run.py
```
方式二:直接启动Streamlit
```bash
streamlit run app.py
```
### 5. 访问系统
打开浏览器访问:http://localhost:8501
## 🧪 测试建议
### 测试用例
1. **美股测试**:输入 `AAPL`
2. **A股测试**:输入 `000001`
3. **错误处理测试**:输入无效代码
### 预期结果
- 成功获取股票基本信息
- 显示股价走势图表
- 生成5个AI分析师报告
- 产生团队讨论结果
- 输出最终投资决策
## ⚠️ 注意事项
1. **API配额**:注意DeepSeek API的使用配额
2. **网络要求**:需要稳定的网络连接
3. **首次运行**:第一次运行可能需要较长时间
4. **数据源**:依赖第三方数据源,可能有延迟
## 🔍 故障排除
### 常见错误及解决方案
1. **模块导入错误**
```bash
pip install --upgrade -r requirements.txt
```
2. **API密钥错误**
- 检查config.py中的密钥设置
- 确保密钥格式正确且有效
3. **数据获取失败**
- 检查网络连接
- 确认股票代码正确
4. **页面无法访问**
- 检查端口8501是否被占用
- 尝试使用其他端口:`streamlit run app.py --server.port 8502`
-187
View File
@@ -1,187 +0,0 @@
# 加入监测功能测试报告
## 测试日期
2025-10-05
## 问题描述
用户反馈:点击"加入监测"按钮后,监测页面没有显示新加入的股票。
## 测试过程
### 1. 数据库写入测试 ✅
**测试脚本**: `test_monitor_add.py`
**测试结果**:
- ✅ 成功从历史记录提取数据
- ✅ 成功解析进场区间: `44.49 - 47.42`
- ✅ 成功解析止盈位: `48.0`
- ✅ 成功解析止损位: `42.5`
- ✅ 成功写入监测数据库,ID: 3
- ✅ 验证监测列表,数据完整准确
**测试股票**: 603667 - 五洲新春
**数据验证**:
```
股票代码: 603667
股票名称: 五洲新春
投资评级: 持有-观望
进场区间: {'min': 44.49, 'max': 47.42}
止盈位: 48.0
止损位: 42.5
监测间隔: 30分钟
通知启用: True
```
### 2. 监测列表显示测试 ✅
**测试脚本**: `test_monitor_display.py`
**测试结果**:
- ✅ 监测列表中共有 3 只股票
- ✅ 新添加的 603667 成功显示在列表首位
- ✅ 所有数据字段完整准确
## 问题根因分析
通过测试发现,数据库写入和读取功能**完全正常**。问题出在用户界面的页面跳转逻辑:
### 原始逻辑问题
```python
# 添加成功后只是刷新页面
st.success(f"✅ 已成功将 {record['symbol']} 加入监测列表!")
st.balloons()
monitor_service.manual_update_stock(stock_id)
# 仅清理 add_to_monitor_id
if 'add_to_monitor_id' in st.session_state:
del st.session_state.add_to_monitor_id
time.sleep(1)
st.rerun() # 刷新后仍停留在历史记录页面
```
**问题**: 添加成功后页面刷新,但用户仍然停留在历史记录详情页面,需要手动切换到监测页面才能看到新添加的股票。
## 解决方案
### 修改的文件
#### 1. `app.py` - 修改跳转逻辑
```python
# 清理session state并跳转到监测页面
if 'add_to_monitor_id' in st.session_state:
del st.session_state.add_to_monitor_id
if 'viewing_record_id' in st.session_state:
del st.session_state.viewing_record_id
if 'show_history' in st.session_state:
del st.session_state.show_history
# 设置跳转到监测页面
st.session_state.show_monitor = True
st.session_state.monitor_jump_highlight = record['symbol'] # 标记要高亮显示的股票
time.sleep(1.5)
st.rerun()
```
**改进点**:
1. ✅ 清理所有相关的 session state(历史记录页面标记、详情页面标记)
2. ✅ 设置 `show_monitor = True` 自动跳转到监测页面
3. ✅ 传递股票代码用于高亮显示
4. ✅ 增加延迟到 1.5 秒,让用户看到成功提示
#### 2. `monitor_manager.py` - 添加欢迎提示
```python
def display_monitor_manager():
"""显示监测管理主页面"""
st.markdown("## 📊 股票监测管理")
st.markdown("---")
# 检查是否有跳转提示
if 'monitor_jump_highlight' in st.session_state:
symbol = st.session_state.monitor_jump_highlight
st.success(f"{symbol} 已成功加入监测列表!您可以在下方查看。")
del st.session_state.monitor_jump_highlight
# ... 其余代码
```
**改进点**:
1. ✅ 在监测页面顶部显示欢迎提示
2. ✅ 明确告知用户股票已成功添加
3. ✅ 提示用户在下方查看
## 最终效果
### 用户操作流程
1. 用户在历史记录页面点击"➕ 监测"按钮
2. 显示加入监测对话框,自动填充数据
3. 用户确认或修改参数后点击"✅ 确认加入监测"
4. 显示成功提示和气球动画(1.5秒)
5. **自动跳转到监测页面**
6. **在监测页面顶部显示成功提示**
7. **新添加的股票显示在监测列表中**
### 改进前后对比
| 项目 | 改进前 | 改进后 |
|------|--------|--------|
| 页面跳转 | ❌ 停留在历史记录页面 | ✅ 自动跳转到监测页面 |
| 用户体验 | ❌ 需要手动切换页面 | ✅ 自动展示结果 |
| 成功反馈 | ⚠️ 仅有气球动画 | ✅ 气球动画 + 明确提示 |
| 数据验证 | ⚠️ 用户无法立即确认 | ✅ 立即显示在列表中 |
## 测试结论
### 功能状态
- ✅ 数据提取功能:正常
- ✅ 数据解析功能:正常(支持多种格式)
- ✅ 数据库写入:正常
- ✅ 监测列表显示:正常
- ✅ 页面跳转:已修复
- ✅ 用户体验:已优化
### 兼容性
- ✅ 支持进场区间多种格式(-, ~, 至, 元, ¥等)
- ✅ 支持止盈止损多种格式
- ✅ 重复检测正常工作
- ✅ 监测服务集成正常
## 建议
### 使用建议
1. 加入监测前,建议确认数据准确性
2. 确保监测服务处于运行状态
3. 配置邮件参数以接收通知
### 未来优化方向
1. 可以考虑在监测列表中高亮显示刚添加的股票(闪烁效果)
2. 可以添加批量导入功能(一次添加多个历史记录)
3. 可以添加智能建议功能(根据历史记录自动推荐待监测股票)
## 附录
### 测试环境
- 操作系统: Windows 10
- Python 版本: 3.12
- Streamlit 版本: 最新
- 数据库: SQLite (stock_monitor.db)
### 测试数据
- 历史记录数: 多条
- 监测股票数: 3只
- 测试股票: 603667 - 五洲新春
### 相关文件
- `app.py` - 主应用文件(已修改)
- `monitor_manager.py` - 监测管理模块(已修改)
- `monitor_db.py` - 监测数据库模块(无修改)
- `database.py` - 分析数据库模块(无修改)