# 实时监测定时自动启动/关闭功能说明

## 功能概述

实时监测板块新增了定时自动启动和关闭功能，可以在交易日的交易时间自动启动监测服务，在收盘后自动停止，无需手动干预。

## 主要功能

### 1. 智能交易时间识别
- **自动识别交易日**: 系统会自动判断当前是否为交易日（默认为周一至周五）
- **交易时间检测**: 实时检测当前是否在交易时间段内
- **多市场支持**: 支持中国A股、美股、港股三个市场的交易时间

### 2. 自动启动/停止
- **定时启动**: 在开盘时间自动启动监测服务
- **定时停止**: 在收盘时间自动停止监测服务（可选）
- **智能检测**: 每分钟自动检测交易状态，实时调整监测状态

### 3. 灵活配置
- **市场选择**: 可选择 CN（中国A股）、US（美股）、HK（港股）
- **交易日设置**: 自定义交易日（默认周一至周五）
- **提前启动**: 可设置在开盘前提前启动（0-30分钟）
- **延后停止**: 可设置在收盘后延后停止（0-30分钟）
- **自动停止开关**: 可选择收盘后是否自动停止

## 默认交易时间

### 中国A股 (CN)
- **上午**: 09:30 - 11:30
- **下午**: 13:00 - 15:00
- **交易日**: 周一至周五

### 美股 (US)
- **交易时间**: 21:30 - 04:00（北京时间）
- **交易日**: 周一至周五

### 港股 (HK)
- **上午**: 09:30 - 12:00
- **下午**: 13:00 - 16:00
- **交易日**: 周一至周五

## 使用方法

### 1. 启用定时调度

1. 进入 **股票监测管理** 页面
2. 在监测服务状态下方找到 **⏰ 定时自动启动/关闭** 区域
3. 点击展开 **⚙️ 定时调度设置**
4. 勾选 **启用定时调度** 复选框

### 2. 配置市场和时间

**市场选择区域：**
- 选择您要监测的市场（CN/US/HK）
- 查看对应市场的交易时间
- 自定义交易日（如需要）

**调度参数区域：**
- **启用定时调度**: 总开关
- **收盘后自动停止**: 是否在交易时间结束后自动停止
- **提前启动**: 在开盘前多少分钟启动（默认5分钟）
- **延后停止**: 在收盘后多少分钟停止（默认5分钟）

### 3. 保存并启动

1. 配置完成后点击 **💾 保存设置**
2. 点击 **▶️ 启动调度器** 按钮
3. 系统将开始自动调度

### 4. 状态监控

在定时调度区域顶部可以看到实时状态：
- **定时已启用/未启用**: 定时调度功能的启用状态
- **调度器运行中/未运行**: 调度器的运行状态
- **交易日/非交易日**: 当前日期是否为交易日
- **交易时间内/下次交易时间**: 当前是否在交易时间，以及下次交易时间

## 工作原理

### 智能检测机制
调度器每分钟执行一次检测：
1. 检查当前是否为交易日
2. 检查当前是否在交易时间内
3. 如果在交易时间且监测服务未运行，则自动启动
4. 如果不在交易时间且监测服务正在运行且启用了自动停止，则自动停止

### 配置文件
- 调度配置保存在 `monitor_schedule_config.json` 文件中
- 支持手动编辑配置文件（不推荐）
- 配置更改后需重启调度器生效

## 配置文件示例

```json
{
  "enabled": true,
  "market": "CN",
  "trading_hours": {
    "CN": [
      {"start": "09:30", "end": "11:30"},
      {"start": "13:00", "end": "15:00"}
    ],
    "US": [
      {"start": "21:30", "end": "04:00"}
    ],
    "HK": [
      {"start": "09:30", "end": "12:00"},
      {"start": "13:00", "end": "16:00"}
    ]
  },
  "trading_days": [1, 2, 3, 4, 5],
  "auto_stop": true,
  "pre_market_minutes": 5,
  "post_market_minutes": 5
}
```

## 注意事项

### 1. 独立运行
- 定时调度器独立于手动启动/停止按钮
- 即使调度器在运行，仍可手动控制监测服务
- 手动操作不会影响调度器的自动检测

### 2. 节假日处理
- 当前版本仅支持按周几判断交易日
- 不会自动识别法定节假日
- 遇到节假日需要手动停止调度器或监测服务

### 3. 性能影响
- 调度器每分钟检测一次，资源消耗极低
- 不会影响监测服务的正常运行
- 建议在服务器或长期运行的电脑上使用

### 4. 跨天交易
- 支持跨天的交易时间（如美股）
- 时间判断会自动处理跨天情况

## 使用场景

### 场景1: 上班族自动监测
- 设置为中国A股市场
- 启用定时调度
- 工作日交易时间自动监测，下班后自动停止

### 场景2: 24小时服务器运行
- 根据关注的市场设置交易时间
- 启用自动停止，节省服务器资源
- 仅在交易时间运行监测

### 场景3: 多市场混合监测
- 如果监测多个市场的股票，选择主要市场
- 或不启用自动停止，手动控制
- 根据需要切换市场设置

## 故障排查

### 调度器无法启动
1. 检查是否已启用定时调度
2. 查看控制台是否有错误信息
3. 尝试重启应用

### 没有自动启动监测
1. 确认调度器正在运行
2. 检查当前是否为交易日和交易时间
3. 查看配置是否正确保存

### 配置无法保存
1. 检查文件写入权限
2. 查看是否有文件锁定
3. 尝试手动删除配置文件重新生成

## 技术说明

### 核心文件
- `monitor_scheduler.py`: 调度器核心模块
- `monitor_service.py`: 监测服务（已集成调度器）
- `monitor_manager.py`: UI管理界面（包含调度设置）
- `monitor_schedule_config.json`: 配置文件（自动生成）

### 依赖库
- `schedule`: Python定时任务库
- `threading`: 多线程支持

### 扩展性
代码设计支持以下扩展：
- 添加更多市场
- 自定义交易时间
- 接入节假日API
- 邮件/通知提醒

## 更新日志

### v1.0.0 (2024-10-16)
- ✅ 初始版本发布
- ✅ 支持中国A股、美股、港股三个市场
- ✅ 实现交易日和交易时间自动判断
- ✅ 支持自动启动和停止
- ✅ 提供完整的UI配置界面
- ✅ 智能检测机制，每分钟自动调整

## 反馈与支持

如有问题或建议，请：
1. 检查本文档的故障排查部分
2. 查看控制台输出的错误信息
3. 提交问题反馈

---

**祝您使用愉快！** 🎉

