增加龙虎榜批量分析功能,修复一些小bug
This commit is contained in:
@@ -0,0 +1,387 @@
|
||||
# 数据源冗余机制使用指南
|
||||
|
||||
## 📋 功能概述
|
||||
|
||||
系统已实现**Akshare和Tushare双数据源自动切换机制**,当Akshare获取数据失败时,系统会自动切换到Tushare获取数据,确保数据获取的稳定性和可靠性。
|
||||
|
||||
## ✨ 核心特性
|
||||
|
||||
### 1. 自动切换
|
||||
- ✅ 优先使用Akshare(免费,无需配置)
|
||||
- ✅ Akshare失败时自动切换到Tushare
|
||||
- ✅ 全程自动化,无需手动干预
|
||||
- ✅ 详细的日志输出,方便追踪数据来源
|
||||
|
||||
### 2. 支持的数据类型
|
||||
|
||||
| 数据类型 | Akshare | Tushare | 说明 |
|
||||
|---------|---------|---------|------|
|
||||
| 股票历史数据 | ✅ | ✅ | K线、成交量等 |
|
||||
| 股票基本信息 | ✅ | ✅ | 名称、行业、市值等 |
|
||||
| 实时行情 | ✅ | ✅ | 最新价格、涨跌幅 |
|
||||
| 财务数据 | ✅ | ✅ | 利润表、资产负债表 |
|
||||
| 资金流向 | ✅ | ✅ | 大单、小单流入流出 |
|
||||
| 市场情绪 | ✅ | ✅ | ARBR、换手率 |
|
||||
| 大盘指数 | ✅ | ✅ | 上证指数等 |
|
||||
|
||||
## 🔧 配置步骤
|
||||
|
||||
### 第一步:获取Tushare Token
|
||||
|
||||
1. 访问 [Tushare官网](https://tushare.pro)
|
||||
2. 注册账号并登录
|
||||
3. 进入个人中心
|
||||
4. 复制Token
|
||||
|
||||
### 第二步:配置环境变量
|
||||
|
||||
#### 方法1:通过界面配置(推荐)
|
||||
|
||||
1. 启动系统
|
||||
2. 点击左侧 **⚙️ 环境配置**
|
||||
3. 切换到 **📊 数据源配置** 标签页
|
||||
4. 填写 **Tushare Token**
|
||||
5. 点击 **💾 保存配置**
|
||||
|
||||
#### 方法2:手动编辑.env文件
|
||||
|
||||
在`.env`文件中添加:
|
||||
|
||||
```bash
|
||||
# Tushare数据接口配置(可选,用作备用数据源)
|
||||
TUSHARE_TOKEN="your_tushare_token_here"
|
||||
```
|
||||
|
||||
### 第三步:重启应用
|
||||
|
||||
保存配置后重启应用,系统会自动初始化Tushare数据源。
|
||||
|
||||
## 📊 工作原理
|
||||
|
||||
### 数据获取流程
|
||||
|
||||
```
|
||||
┌─────────────────┐
|
||||
│ 开始获取数据 │
|
||||
└────────┬────────┘
|
||||
│
|
||||
v
|
||||
┌─────────────────┐
|
||||
│ 尝试Akshare获取 │
|
||||
└────────┬────────┘
|
||||
│
|
||||
成功 │ 失败
|
||||
┌──────┴──────┐
|
||||
│ │
|
||||
v v
|
||||
┌────┐ ┌──────────────┐
|
||||
│返回│ │检查Tushare配置│
|
||||
└────┘ └──────┬───────┘
|
||||
│
|
||||
已配置 │ 未配置
|
||||
┌──────┴──────┐
|
||||
│ │
|
||||
v v
|
||||
┌────────────┐ ┌────┐
|
||||
│Tushare获取 │ │失败│
|
||||
└──────┬─────┘ └────┘
|
||||
│
|
||||
成功 │ 失败
|
||||
┌──────┴──────┐
|
||||
│ │
|
||||
v v
|
||||
┌────┐ ┌────┐
|
||||
│返回│ │失败│
|
||||
└────┘ └────┘
|
||||
```
|
||||
|
||||
### 日志输出示例
|
||||
|
||||
```bash
|
||||
# 示例1:Akshare成功
|
||||
[Akshare] 正在获取 600519 的历史数据...
|
||||
[Akshare] ✅ 成功获取 243 条数据
|
||||
|
||||
# 示例2:Akshare失败,Tushare成功
|
||||
[Akshare] 正在获取 600519 的历史数据...
|
||||
[Akshare] ❌ 获取失败: Connection timeout
|
||||
[Tushare] 正在获取 600519 的历史数据(备用数据源)...
|
||||
[Tushare] ✅ 成功获取 243 条数据
|
||||
|
||||
# 示例3:Tushare未配置
|
||||
[Akshare] 正在获取 600519 的历史数据...
|
||||
[Akshare] ❌ 获取失败: Connection timeout
|
||||
ℹ️ 未配置Tushare Token,将仅使用Akshare数据源
|
||||
❌ 所有数据源均获取失败
|
||||
```
|
||||
|
||||
## 🎯 使用场景
|
||||
|
||||
### 场景1:日常使用(仅Akshare)
|
||||
|
||||
**适用情况**:
|
||||
- 网络稳定
|
||||
- Akshare服务正常
|
||||
- 不需要Tushare特殊数据
|
||||
|
||||
**配置**:
|
||||
- 无需配置Tushare Token
|
||||
- 系统仅使用Akshare
|
||||
|
||||
### 场景2:生产环境(Akshare + Tushare)
|
||||
|
||||
**适用情况**:
|
||||
- 需要高可用性
|
||||
- 自动化交易系统
|
||||
- 定时任务分析
|
||||
|
||||
**配置**:
|
||||
- 配置Tushare Token
|
||||
- 启用双数据源冗余
|
||||
|
||||
### 场景3:Akshare受限
|
||||
|
||||
**适用情况**:
|
||||
- Akshare访问受限
|
||||
- 需要更专业的数据
|
||||
- Tushare有特殊接口
|
||||
|
||||
**配置**:
|
||||
- 配置Tushare Token
|
||||
- 系统自动切换到Tushare
|
||||
|
||||
## 📈 数据对比
|
||||
|
||||
### Akshare vs Tushare
|
||||
|
||||
| 对比项 | Akshare | Tushare |
|
||||
|--------|---------|---------|
|
||||
| **费用** | 完全免费 | 免费(有限额) |
|
||||
| **注册** | 无需注册 | 需要注册 |
|
||||
| **配置** | 无需配置 | 需要Token |
|
||||
| **数据更新** | 实时 | 准实时 |
|
||||
| **稳定性** | 较好 | 优秀 |
|
||||
| **数据量** | 丰富 | 非常丰富 |
|
||||
| **API限制** | 无明显限制 | 有调用限额 |
|
||||
| **适用场景** | 日常分析 | 专业投研 |
|
||||
|
||||
## 🔍 故障排查
|
||||
|
||||
### 问题1:Tushare初始化失败
|
||||
|
||||
**现象**:
|
||||
```
|
||||
⚠️ Tushare数据源初始化失败: No module named 'tushare'
|
||||
```
|
||||
|
||||
**解决方法**:
|
||||
```bash
|
||||
# 安装tushare库
|
||||
pip install tushare>=1.3.0
|
||||
|
||||
# 或更新requirements.txt后安装
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
### 问题2:Tushare Token无效
|
||||
|
||||
**现象**:
|
||||
```
|
||||
[Tushare] ❌ 获取失败: Invalid token
|
||||
```
|
||||
|
||||
**解决方法**:
|
||||
1. 检查Token是否正确复制
|
||||
2. 确认Token未过期
|
||||
3. 登录Tushare官网重新获取Token
|
||||
|
||||
### 问题3:Tushare调用限额
|
||||
|
||||
**现象**:
|
||||
```
|
||||
[Tushare] ❌ 获取失败: API call limit exceeded
|
||||
```
|
||||
|
||||
**解决方法**:
|
||||
1. 等待限额重置(通常是每分钟/每天)
|
||||
2. 升级Tushare积分等级
|
||||
3. 优化查询频率
|
||||
|
||||
### 问题4:两个数据源都失败
|
||||
|
||||
**现象**:
|
||||
```
|
||||
❌ 所有数据源均获取失败
|
||||
```
|
||||
|
||||
**解决方法**:
|
||||
1. 检查网络连接
|
||||
2. 确认股票代码正确
|
||||
3. 检查是否为交易时间
|
||||
4. 查看详细错误日志
|
||||
|
||||
## 💡 最佳实践
|
||||
|
||||
### 1. Token管理
|
||||
|
||||
```bash
|
||||
# ❌ 错误:直接写在代码中
|
||||
tushare_token = "your_token_here"
|
||||
|
||||
# ✅ 正确:使用环境变量
|
||||
TUSHARE_TOKEN="your_token_here" # 在.env文件中
|
||||
```
|
||||
|
||||
### 2. 错误处理
|
||||
|
||||
系统已自动处理数据获取失败的情况,无需额外编码。
|
||||
|
||||
### 3. 日志监控
|
||||
|
||||
关注日志中的以下标记:
|
||||
- `[Akshare]` - Akshare数据源操作
|
||||
- `[Tushare]` - Tushare数据源操作
|
||||
- `✅` - 操作成功
|
||||
- `❌` - 操作失败
|
||||
- `⚠️` - 警告信息
|
||||
|
||||
### 4. 性能优化
|
||||
|
||||
- 优先使用Akshare(响应更快)
|
||||
- Tushare作为备用(更稳定)
|
||||
- 合理设置数据缓存
|
||||
- 避免频繁重复请求
|
||||
|
||||
## 📝 代码示例
|
||||
|
||||
### 自动使用数据源管理器
|
||||
|
||||
所有数据获取模块已自动集成数据源管理器,无需修改业务代码:
|
||||
|
||||
```python
|
||||
# 在stock_data.py中
|
||||
from data_source_manager import data_source_manager
|
||||
|
||||
# 获取历史数据(自动切换)
|
||||
df = data_source_manager.get_stock_hist_data(
|
||||
symbol="600519",
|
||||
start_date="20240101",
|
||||
end_date="20241018",
|
||||
adjust='qfq'
|
||||
)
|
||||
```
|
||||
|
||||
### 手动使用数据源管理器
|
||||
|
||||
如需在自定义模块中使用:
|
||||
|
||||
```python
|
||||
from data_source_manager import data_source_manager
|
||||
|
||||
# 1. 获取股票历史数据
|
||||
hist_data = data_source_manager.get_stock_hist_data(
|
||||
symbol="600519",
|
||||
start_date="20240101",
|
||||
end_date="20241018"
|
||||
)
|
||||
|
||||
# 2. 获取股票基本信息
|
||||
basic_info = data_source_manager.get_stock_basic_info("600519")
|
||||
|
||||
# 3. 获取实时行情
|
||||
quotes = data_source_manager.get_realtime_quotes("600519")
|
||||
|
||||
# 4. 获取财务数据
|
||||
financial = data_source_manager.get_financial_data(
|
||||
symbol="600519",
|
||||
report_type='income' # income/balance/cashflow
|
||||
)
|
||||
```
|
||||
|
||||
## 🔐 安全建议
|
||||
|
||||
### Token保护
|
||||
|
||||
1. **不要**将Token提交到版本控制
|
||||
```bash
|
||||
# 在.gitignore中添加
|
||||
.env
|
||||
```
|
||||
|
||||
2. **不要**在代码中硬编码Token
|
||||
|
||||
3. **定期**更换Token
|
||||
|
||||
4. **限制**Token的使用范围
|
||||
|
||||
## 📊 监控与统计
|
||||
|
||||
### 查看数据源使用情况
|
||||
|
||||
系统日志会记录每次数据获取使用的数据源,便于统计:
|
||||
|
||||
```bash
|
||||
# 统计示例(从日志中提取)
|
||||
Akshare成功: 95次
|
||||
Tushare备用: 5次
|
||||
全部失败: 0次
|
||||
|
||||
成功率: 100%
|
||||
Tushare使用率: 5%
|
||||
```
|
||||
|
||||
## 🎓 进阶功能
|
||||
|
||||
### 1. 自定义数据源优先级
|
||||
|
||||
当前默认:Akshare > Tushare
|
||||
|
||||
如需修改,编辑`data_source_manager.py`中的获取顺序。
|
||||
|
||||
### 2. 添加更多数据源
|
||||
|
||||
可以扩展`DataSourceManager`类,添加其他数据源(如Wind、东方财富等)。
|
||||
|
||||
### 3. 数据源监控告警
|
||||
|
||||
可以添加监控逻辑,当某个数据源失败率过高时发送告警。
|
||||
|
||||
## 📞 技术支持
|
||||
|
||||
### 相关文档
|
||||
|
||||
- [Akshare官方文档](https://akshare.akfamily.xyz)
|
||||
- [Tushare官方文档](https://tushare.pro/document/2)
|
||||
- [环境配置功能说明](./环境配置功能说明.md)
|
||||
|
||||
### 常见问题
|
||||
|
||||
1. **Q: 是否必须配置Tushare?**
|
||||
A: 不是。仅使用Akshare也可以正常工作,Tushare作为可选的备用数据源。
|
||||
|
||||
2. **Q: Tushare免费版有限制吗?**
|
||||
A: 有。免费版有每分钟调用次数限制,可通过做任务获得积分提升限额。
|
||||
|
||||
3. **Q: 数据源切换会影响性能吗?**
|
||||
A: 影响很小。只有在Akshare失败时才会尝试Tushare,增加的延迟在可接受范围内。
|
||||
|
||||
4. **Q: 可以只使用Tushare吗?**
|
||||
A: 可以,但不推荐。系统设计为优先Akshare,这样可以节省Tushare的调用额度。
|
||||
|
||||
## 🎉 总结
|
||||
|
||||
数据源冗余机制为系统提供了:
|
||||
|
||||
- ✅ **更高的可用性** - 单点故障不影响使用
|
||||
- ✅ **更好的稳定性** - 自动容错恢复
|
||||
- ✅ **更强的灵活性** - 可扩展多数据源
|
||||
- ✅ **零学习成本** - 全自动化运行
|
||||
|
||||
现在您可以放心使用系统进行股票分析,无需担心数据获取问题!
|
||||
|
||||
---
|
||||
|
||||
**更新日期**: 2025-10-18
|
||||
**版本**: v1.0.0
|
||||
**适用系统**: AI股票分析系统
|
||||
|
||||
Reference in New Issue
Block a user