# 多定时分析功能使用指南

## 📖 功能概述

多定时分析功能允许您设置**多个每日分析时间点**，系统将在每个时间点自动执行持仓批量分析。

### 使用场景

- ✅ **盘前+盘后分析**：开盘前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`

---

## 🎉 总结

多定时分析功能让您可以：

✅ 灵活设置多个每日分析时间
✅ 全天候跟踪持仓变化
✅ 捕捉不同时段的交易机会
✅ 自动执行，无需人工干预
✅ 即时生效，动态调整

**祝您投资顺利！** 📈

