Files
aiagents-stock/docs/MULTI_SCHEDULE_GUIDE.md

513 lines
11 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 多定时分析功能使用指南
## 📖 功能概述
多定时分析功能允许您设置**多个每日分析时间点**,系统将在每个时间点自动执行持仓批量分析。
### 使用场景
-**盘前+盘后分析**:开盘前09:25 + 收盘后15:05
-**多频次监控**:早盘09:30 + 午盘13:00 + 尾盘14:50
-**分时段策略**:早中晚三次分析,捕捉不同时段机会
-**灵活配置**:根据个人作息和交易习惯自定义
---
## 🚀 快速开始
### 1. 进入定时任务管理
1. 启动应用:`streamlit run app.py`
2. 点击侧边栏 **"📊 持仓分析"**
3. 切换到 **"⏰ 定时任务"** 标签
### 2. 添加定时时间
1. 点击 **" 添加定时时间"** 展开表单
2. 选择新的分析时间(如 15:05
3. 点击 **" 添加"** 按钮
4. 系统自动按时间顺序排列
### 3. 删除定时时间
1. 在已配置时间列表中找到要删除的时间
2. 点击该时间旁边的 **"🗑️"** 按钮
3. 确认删除(至少保留1个时间)
### 4. 启动调度器
1. 配置好所有定时时间后
2. 点击 **"▶️ 启动调度器"**
3. 系统将在每个时间点自动执行分析
---
## 💡 推荐配置
### 方案1:盘前+盘后(保守)
适合:长期投资者、上班族
```
09:25 盘前分析(开盘前5分钟,提前布局)
15:05 盘后分析(收盘后5分钟,复盘总结)
```
**优点**
- 信息全面:盘前看预期,盘后看实际
- 不影响工作:两个时间点不频繁
- 数据准确:收盘数据完整可靠
### 方案2:三时段监控(积极)
适合:活跃投资者、短线交易者
```
09:30 早盘分析(开盘后观察)
13:05 午盘分析(午盘结束,调整策略)
15:05 尾盘分析(收盘总结)
```
**优点**
- 全天跟踪:早中晚全覆盖
- 及时调整:发现异常快速反应
- 捕捉机会:不同时段的交易机会
### 方案3:高频监测(专业)
适合:专业交易者、日内交易
```
09:25 盘前预测
10:00 早盘检查
11:30 午前评估
13:05 午盘分析
14:30 尾盘准备
15:05 收盘复盘
```
**优点**
- 极致监控:全天候跟踪
- 快速响应:及时发现变化
- 数据密集:积累更多历史
**注意**:高频分析消耗更多API调用,确保额度充足
### 方案4:夜盘准备(港美股)
适合:投资港股美股的用户
```
08:30 早间准备
21:00 美股开盘前(夏令时20:30,冬令时21:30)
```
**优点**
- 跨市场:覆盖A股和美股
- 错峰分析:避开A股交易时段
---
## ⚙️ 功能详解
### 添加定时时间
**步骤**
1. 展开 " 添加定时时间"
2. 使用时间选择器选择时间
3. 点击" 添加"
**规则**
- 时间格式:24小时制(00:00 - 23:59
- 自动去重:相同时间不会重复添加
- 自动排序:按时间从早到晚排列
- 即时生效:调度器运行中添加会立即生效
### 删除定时时间
**步骤**
1. 找到要删除的时间卡片
2. 点击 "🗑️" 按钮
**规则**
- 最少保留:至少保留1个时间点
- 即时生效:调度器运行中删除会立即生效
- 不可恢复:删除后需重新添加
### 查看定时状态
**状态栏显示**
- 🟢 调度器运行中 / 🔴 调度器已停止
- ⏰ 定时数量:X个
- ⏭️ 下次运行:最近的运行时间
**时间列表**
- 以卡片形式展示所有时间点
- 每行显示4个时间
- 自动按时间排序
---
## 🎯 最佳实践
### 1. 合理设置时间点
**推荐**
- 2-3个时间点最佳(盘前、盘后)
- 避免设置过多(>5个)导致频繁分析
**避免**
- 不要在交易时段频繁分析(影响关注盘面)
- 不要在凌晨设置(数据未更新)
### 2. 考虑数据更新时间
| 数据类型 | 更新时间 | 建议分析时间 |
|---------|---------|-------------|
| 实时行情 | 交易时段 | 盘中任意时间 |
| 日K线 | 15:00后 | 15:05后 |
| 龙虎榜 | 次日8:00 | 次日9:00后 |
| 财务报表 | 季度发布 | 任意时间 |
| 主力资金 | 实时更新 | 盘中/盘后 |
### 3. 平衡分析频次与API消耗
**API消耗估算**
- 每只股票分析约需 6-10 次API调用
- 10只持仓,3个时间点 = 每日180-300次调用
- 确保DeepSeek API额度充足
**优化建议**
- 减少定时点数量
- 选择顺序分析(避免并发限流)
- 仅在关键时间点执行
### 4. 调试和监控
**查看运行日志**
- 终端输出会显示每次执行的详细日志
- 包括开始时间、完成时间、成功/失败统计
**下次运行时间**
- 状态栏显示最近的运行时间
- 启动调度器后自动计算
**历史记录**
- 每次分析都会保存到数据库
- 切换到"分析历史"标签查看
---
## 🔧 配置示例
### 示例1:稳健投资者
```
定时时间:
- 09:25 (盘前)
- 15:05 (盘后)
分析配置:
- 模式:顺序分析
- 自动监测:开启
- 通知推送:开启
```
### 示例2:短线交易者
```
定时时间:
- 09:30 (开盘)
- 11:30 (午前)
- 13:05 (午后)
- 14:50 (尾盘)
分析配置:
- 模式:并行分析(3线程)
- 自动监测:开启
- 通知推送:开启
```
### 示例3:港美股投资者
```
定时时间:
- 08:30 (A股准备)
- 15:05 (A股复盘)
- 21:00 (美股准备)
分析配置:
- 模式:并行分析(5线程)
- 自动监测:开启
- 通知推送:开启(Webhook实时推送)
```
---
## 💻 技术实现
### 数据结构
```python
# 原来:单个时间字符串
self.schedule_time = "09:30"
# 现在:时间列表
self.schedule_times = ["09:30", "15:05", "20:00"]
```
### 调度逻辑
```python
# 为每个时间点创建独立的调度任务
for time_str in self.schedule_times:
schedule.every().day.at(time_str).do(self._scheduled_job)
```
### 向后兼容
```python
# schedule_time属性仍可用(返回第一个时间)
@property
def schedule_time(self) -> str:
return self.schedule_times[0] if self.schedule_times else "09:30"
```
---
## 🐛 常见问题
### Q1: 最多可以设置几个定时时间?
**A:** 理论上无限制,但建议不超过5个。原因:
- API调用量成倍增长
- 分析结果变化过于频繁
- 用户难以处理过多通知
### Q2: 多个时间点是否共享配置?
**A:** 是的,所有时间点共享相同的分析配置:
- 分析模式(顺序/并行)
- 自动监测同步开关
- 通知推送开关
- 分析师选择
如需不同配置,建议使用其他定时工具(如系统cron)。
### Q3: 两个时间间隔太近会怎样?
**A:** 建议间隔至少30分钟,避免:
- 数据未更新,分析结果重复
- 上次分析未完成,新任务已触发
- API调用过于频繁
### Q4: 调度器重启后时间配置会丢失吗?
**A:** 当前配置存储在内存中,重启会丢失。建议:
- 未来版本将支持配置持久化
- 当前可在代码中设置默认时间
### Q5: 如何查看某个时间点的执行历史?
**A:** 切换到"分析历史"标签,按时间筛选:
- 查看 `analysis_time` 字段
- 筛选特定时间段的记录
- 对比不同时间点的分析结果
---
## 📊 性能影响
### API调用量
| 持仓数 | 1个时间点 | 2个时间点 | 3个时间点 |
|-------|---------|----------|----------|
| 5只 | 30-50次/天 | 60-100次/天 | 90-150次/天 |
| 10只 | 60-100次/天 | 120-200次/天 | 180-300次/天 |
| 20只 | 120-200次/天 | 240-400次/天 | 360-600次/天 |
### 执行时间
- 不同时间点独立执行,互不影响
- 并行模式可缩短单次执行时间
- 确保两次分析之间有足够间隔
---
## 🎊 更新内容
### 新增功能
- ✅ 支持添加多个定时时间点
- ✅ 支持删除定时时间点
- ✅ 自动按时间排序
- ✅ 重复检测和防护
- ✅ 即时生效(运行中修改)
### UI改进
- ✅ 卡片式时间展示(4个一行)
- ✅ 快速添加时间选择器
- ✅ 一键删除按钮
- ✅ 定时数量统计
### 技术优化
- ✅ 向后兼容旧代码
- ✅ schedule库多任务调度
- ✅ 自动重新调度机制
---
## 🔄 升级指南
### 从单定时升级到多定时
**原有配置保持不变**
- 原来设置的时间会作为第一个时间点
- `schedule_time` 属性仍可用(返回第一个时间)
- 不需要修改任何配置即可使用
**开始使用多定时**
1. 进入定时任务管理界面
2. 查看当前配置的时间(默认09:30)
3. 点击"添加定时时间"添加新时间
4. 重启调度器生效
---
## 📝 示例:配置盘前+盘后分析
### 步骤演示
1. **进入界面**
- 侧边栏 → "📊 持仓分析" → "⏰ 定时任务"
2. **查看默认配置**
- 已配置:09:30(默认)
3. **添加收盘后分析**
- 展开" 添加定时时间"
- 选择时间:15:05
- 点击" 添加"
- 确认添加成功
4. **配置分析选项**
- 分析模式:并行分析
- 并行线程数:3
- 自动同步到监测:✓
- 发送完成通知:✓
- 点击"💾 更新配置"
5. **启动调度器**
- 点击"▶️ 启动调度器"
- 确认状态:🟢 调度器运行中
- 查看下次运行时间
6. **验证配置**
- 定时数量:2个
- 时间列表:09:30, 15:05
- 等待到达时间,自动执行
### 预期结果
- **每天09:25**:自动分析持仓 → 同步监测 → 发送通知
- **每天15:05**:自动分析持仓 → 同步监测 → 发送通知
- **分析历史**:每天新增2条记录/只股票
- **邮件/Webhook**:每天收到2次通知
---
## 🎯 进阶技巧
### 1. 错峰分析
避开市场高峰时段:
```
09:35 开盘5分钟后(数据稳定)
13:10 午盘10分钟后(避开高峰)
15:10 收盘10分钟后(避开拥堵)
```
### 2. 分级监控
不同时段不同策略:
- **早盘**:关注开盘价,捕捉缺口
- **午盘**:评估上午表现,调整仓位
- **收盘**:总结全天,规划次日
### 3. 结合实时监测
- 定时分析更新监测参数
- 实时监测触发价格通知
- 形成"定时评估+实时监控"闭环
---
## 🆘 故障排查
### 问题1:添加时间失败
**可能原因**
- 时间已存在
- 时间格式错误
**解决**
- 检查时间列表是否已有该时间
- 使用时间选择器而非手动输入
### 问题2:删除时间失败
**可能原因**
- 只剩1个时间(不允许全部删除)
**解决**
- 先添加新时间再删除旧时间
- 至少保留1个定时配置
### 问题3:某个时间点未执行
**可能原因**
- 系统时间不准确
- 应用已关闭
- 上次分析未完成
**解决**
- 检查系统时间
- 保持应用运行(使用后台模式)
- 增大时间间隔
### 问题4:调度器重启后配置丢失
**当前限制**
- 配置存储在内存中
- 应用重启会丢失
**临时方案**
- 记录时间配置
- 重启后重新添加
**未来计划**
- 配置持久化到数据库
- 自动恢复上次配置
---
## 📚 相关文档
- **主要文档**`docs/PORTFOLIO_USAGE.md` - 完整使用指南
- **统一规范**`docs/UNIFIED_ANALYSIS_SPEC.md` - 分析调用规范
- **技术设计**`openspec/changes/add-portfolio-scheduled-analysis/design.md`
---
## 🎉 总结
多定时分析功能让您可以:
✅ 灵活设置多个每日分析时间
✅ 全天候跟踪持仓变化
✅ 捕捉不同时段的交易机会
✅ 自动执行,无需人工干预
✅ 即时生效,动态调整
**祝您投资顺利!** 📈