增加支持docker部署
This commit is contained in:
@@ -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/
|
||||
|
||||
+16
-14
@@ -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_TO=receiver@example.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
|
||||
|
||||
# 时区设置
|
||||
TZ=Asia/Shanghai
|
||||
|
||||
+1
-2
@@ -1,5 +1,4 @@
|
||||
/agentsstock1.rar
|
||||
/agentsstock2.rar
|
||||
/*.rar
|
||||
/test_akshare.py
|
||||
/test_fixed.py
|
||||
/test_pdf_export.py
|
||||
|
||||
-202
@@ -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! 📈🎯
|
||||
|
||||
@@ -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日
|
||||
**功能状态:** ✅ 已完成并测试通过
|
||||
|
||||
@@ -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
@@ -1,106 +0,0 @@
|
||||
# 更新日志
|
||||
|
||||
## 2025-10-03
|
||||
|
||||
### ✨ 新增功能
|
||||
|
||||
#### 增强基本面分析
|
||||
- 📊 **详细财务数据获取**
|
||||
- 资产负债表:完整的资产和负债结构
|
||||
- 利润表:营收、成本、利润明细
|
||||
- 现金流量表:经营、投资、筹资现金流
|
||||
|
||||
- 💰 **全面财务指标**
|
||||
- 盈利能力:ROE、ROA、毛利率、净利率
|
||||
- 偿债能力:资产负债率、流动比率、速动比率
|
||||
- 运营能力:存货周转率、应收账款周转率、总资产周转率
|
||||
- 成长能力:营收增长率、利润增长率
|
||||
- 每股指标:EPS、每股账面价值、股息率、派息率
|
||||
|
||||
- 🎯 **深度分析维度**
|
||||
- 公司质地分析(业务模式、竞争力、护城河)
|
||||
- 盈利能力深度分析
|
||||
- 财务健康度评估
|
||||
- 成长性分析
|
||||
- 估值分析(历史对比、行业对比)
|
||||
- 投资价值综合判断
|
||||
|
||||
- 🔄 **数据源优化**
|
||||
- A股:支持同花顺财务数据API
|
||||
- 美股:yfinance完整财务报表
|
||||
- 自动处理API变化和异常
|
||||
|
||||
#### 实时监测管理系统
|
||||
- 📊 **监测股票管理**:添加、编辑、删除监测股票
|
||||
- 🎯 **关键位置设置**:进场区间、止盈位、止损位
|
||||
- ⏰ **自定义监测间隔**:30秒至300秒可选
|
||||
- 🎨 **卡片式布局**:现代化的股票监测卡片展示
|
||||
- 🔍 **搜索过滤功能**:快速查找监测股票
|
||||
|
||||
#### 通知系统
|
||||
- 📧 **邮件通知**:价格触发关键位置时发送邮件
|
||||
- 🌐 **网页通知**:实时界面消息提醒
|
||||
- 🔔 **通知开关**:每只股票可独立控制通知
|
||||
- 📱 **通知历史**:查看所有通知记录
|
||||
|
||||
#### PDF报告导出
|
||||
- 📄 **完整分析报告**:一键生成PDF格式报告
|
||||
- 🎨 **中文字体支持**:正确显示中文内容
|
||||
- 📊 **包含所有分析**:技术、基本、资金、风险、情绪分析
|
||||
|
||||
### 🔧 功能改进
|
||||
|
||||
#### 邮件配置
|
||||
- ✅ 从`.env`文件读取邮件配置
|
||||
- ✅ 支持TLS(587端口)和SSL(465端口)
|
||||
- ✅ 测试邮件发送功能
|
||||
- ✅ 邮件配置状态显示
|
||||
- ✅ 详细的配置说明
|
||||
|
||||
#### 监测服务
|
||||
- ✅ 后台线程自动监测
|
||||
- ✅ 启动/停止监测服务
|
||||
- ✅ 手动更新股票价格
|
||||
- ✅ 实时价格显示
|
||||
|
||||
#### 数据库管理
|
||||
- ✅ 监测股票数据持久化
|
||||
- ✅ 价格历史记录
|
||||
- ✅ 通知历史管理
|
||||
- ✅ 标记已读/清空通知
|
||||
|
||||
### 🐛 问题修复
|
||||
- 修复删除股票功能返回值问题
|
||||
- 修复编辑对话框表单提交逻辑
|
||||
- 修复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 添加监测功能说明
|
||||
- 更新系统架构图
|
||||
- 添加邮件配置说明
|
||||
|
||||
### 🎯 下一步计划
|
||||
- [ ] 添加价格预警阈值(百分比)
|
||||
- [ ] 支持多个接收邮箱
|
||||
- [ ] 添加监测统计图表
|
||||
- [ ] 导出监测历史数据
|
||||
- [ ] 微信/钉钉通知集成
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 带来的便捷部署体验!** 🚀
|
||||
|
||||
@@ -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
@@ -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"]
|
||||
|
||||
@@ -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个月
|
||||
|
||||
### 美股数据
|
||||
- **来源**:yfinance(Yahoo 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%更可靠
|
||||
|
||||
---
|
||||
|
||||
**提示**:财务分析是价值投资的基础,但不是全部。投资决策需要综合考虑多方面因素,理性判断,谨慎决策。
|
||||
|
||||
@@ -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` 文件了解已知问题和解决方案。
|
||||
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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
@@ -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` - 分析数据库模块(无修改)
|
||||
|
||||
Reference in New Issue
Block a user