513 lines
11 KiB
Markdown
513 lines
11 KiB
Markdown
# 多定时分析功能使用指南
|
||
|
||
## 📖 功能概述
|
||
|
||
多定时分析功能允许您设置**多个每日分析时间点**,系统将在每个时间点自动执行持仓批量分析。
|
||
|
||
### 使用场景
|
||
|
||
- ✅ **盘前+盘后分析**:开盘前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`
|
||
|
||
---
|
||
|
||
## 🎉 总结
|
||
|
||
多定时分析功能让您可以:
|
||
|
||
✅ 灵活设置多个每日分析时间
|
||
✅ 全天候跟踪持仓变化
|
||
✅ 捕捉不同时段的交易机会
|
||
✅ 自动执行,无需人工干预
|
||
✅ 即时生效,动态调整
|
||
|
||
**祝您投资顺利!** 📈
|
||
|