14 KiB
14 KiB
智策定时分析功能完成说明
✅ 功能概述
成功为智策板块添加了定时分析和邮件推送功能,可以每天自动运行智策分析并将核心结果发送到配置的邮箱。
📋 完成内容
1. 核心模块开发
sector_strategy_scheduler.py - 定时任务调度器
功能:
- ✅ 每日定时分析调度
- ✅ 后台线程运行(daemon线程)
- ✅ 手动触发分析
- ✅ 状态监控和查询
- ✅ 邮件自动发送
- ✅ 错误通知
核心方法:
# 启动定时任务
sector_strategy_scheduler.start(schedule_time="09:00")
# 停止定时任务
sector_strategy_scheduler.stop()
# 手动触发一次
sector_strategy_scheduler.manual_run()
# 获取状态
status = sector_strategy_scheduler.get_status()
邮件发送实现:
- 使用
_send_email_direct()方法直接发送邮件 - 支持 SMTP/TLS (端口587) 和 SMTP/SSL (端口465)
- 完整的错误处理和日志输出
- 支持UTF-8编码的中文内容
2. UI界面集成
sector_strategy_ui.py - 定时分析设置界面
新增功能:
- ⏰ 定时分析设置面板(expander)
- 📧 邮件配置状态显示
- ⏱️ 定时时间选择器(time_input)
- ▶️ 启动/停止/手动触发按钮
- 📊 运行状态实时显示
- 🔄 测试邮件发送功能
UI布局:
┌─────────────────────────────────────────┐
│ ⏰ 定时分析设置 │
│ ┌───────────────┬──────────────────┐ │
│ │ 邮件配置状态 │ 时间设置 │ │
│ │ ✅/❌ 状态显示│ [09:00] 选择器 │ │
│ │ │ [▶️][⏸️][🔄] │ │
│ └───────────────┴──────────────────┘ │
│ 任务状态: ✅/⏸️ 上次运行: xxx │
└─────────────────────────────────────────┘
3. 邮件集成修复
问题修复
原问题:
# 错误调用(不存在的方法)
notification_service.send_email(subject, body)
修复方案:
- 测试邮件(UI界面):
# 使用现有的 send_test_email() 方法
success, message = notification_service.send_test_email()
- 实际邮件(定时分析):
# 自定义 _send_email_direct() 方法
def _send_email_direct(self, subject, body):
"""直接发送邮件(参考notification_service的实现)"""
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
config = notification_service.config
msg = MIMEMultipart()
msg['From'] = config['email_from']
msg['To'] = config['email_to']
msg['Subject'] = subject
msg.attach(MIMEText(body, 'plain', 'utf-8'))
# SMTP连接和发送...
4. 邮件内容格式
智策分析报告邮件
主题:智策板块分析报告 - 2024-01-15 09:00
正文结构:
==========================================================
智策板块策略分析报告
==========================================================
分析时间: 2024-01-15 09:00:00
AI模型: DeepSeek Multi-Agent System
==========================================================
一、板块多空预测
==========================================================
【看多板块】
1. 新能源汽车 (信心度: 8.5/10)
理由: AI新模型带来产业链机会
风险: 短期涨幅较大,注意回调
【看空板块】
1. 地产开发 (信心度: 7.0/10)
理由: 政策压制,成交低迷
风险: 政策变化可能带来反弹
==========================================================
二、板块轮动预测
==========================================================
【当前强势板块】
• 人工智能
轮动逻辑: 政策支持,资金持续流入...
时间窗口: 1-2周
操作建议: 持有龙头,回调加仓
【潜力接力板块】⭐ 重点关注
• 半导体
轮动逻辑: 有望承接资金轮动...
时间窗口: 未来3-5天
操作建议: 关注突破信号
==========================================================
三、板块热度排行
==========================================================
【最热板块 TOP5】
1. 人工智能 - 热度: 95.0分 (🔥升温)
2. 新能源汽车 - 热度: 92.0分 (🔥升温)
3. 半导体 - 热度: 88.0分 (➡️持平)
4. 军工 - 热度: 85.0分 (🔥升温)
5. 医药生物 - 热度: 78.0分 (❄️降温)
==========================================================
四、策略总结
==========================================================
【市场观点】
科技板块延续强势,政策面和资金面支撑明确...
【核心机会】⭐
1. 重点关注人工智能、新能源汽车产业链
2. 半导体板块有轮动潜力,可适度布局
3. 军工板块情绪升温,关注龙头突破
【主要风险】⚠️
1. 地产板块持续低迷,规避相关标的
2. 热门板块短期涨幅较大,注意回调风险
3. 市场波动加大,控制仓位,设置止损
【整体策略】
✓ 持有:人工智能、新能源汽车龙头
✓ 关注:半导体板块轮动机会
✓ 规避:地产、周期等弱势板块
==========================================================
本报告由智策AI系统自动生成并发送
仅供参考,不构成投资建议
==========================================================
5. 完整文档体系
已创建的文档:
- ✅
智策定时分析使用指南.md- 详细使用教程 - ✅
智策定时分析部署清单.md- 部署步骤和故障排查 - ✅
智策功能总览.md- 功能全景介绍 - ✅
智策定时分析更新日志.md- 版本历史 - ✅
智策定时分析功能完成说明.md- 本文档
更新的文档:
- ✅
智策板块使用指南.md- 添加定时分析章节 - ✅
智策板块快速开始.md- 添加快速配置步骤
🎯 使用方法
第一步:配置邮件
编辑 .env 文件:
EMAIL_ENABLED=true
SMTP_SERVER=smtp.qq.com
SMTP_PORT=587
EMAIL_FROM=your_email@qq.com
EMAIL_PASSWORD=your_authorization_code
EMAIL_TO=receiver@example.com
获取授权码(QQ邮箱):
- 登录QQ邮箱网页版
- 设置 → 账户 → POP3/IMAP/SMTP
- 开启"IMAP/SMTP服务"
- 点击"生成授权码"
- 将授权码填入
EMAIL_PASSWORD
第二步:测试邮件
- 启动程序:
streamlit run app.py - 进入"🎯 智策板块"页面
- 展开"⏰ 定时分析设置"
- 查看邮件配置状态(应显示 ✅)
- 点击"📧 测试邮件"按钮
- 检查收件箱(含垃圾邮件)
第三步:启动定时任务
- 设置运行时间(默认9:00)
- 点击"▶️ 启动定时任务"
- 系统显示"✅ 定时任务已启动"
- 等待定时运行或点击"🔄 立即运行一次"
第四步:查收邮件
- 每天定时运行后自动发送
- 邮件标题:
智策板块分析报告 - 日期时间 - 包含核心分析结果
🔧 技术实现细节
1. 定时任务调度
使用库:schedule
# 设置每天09:00运行
schedule.every().day.at("09:00").do(self._run_analysis).tag('sector_strategy')
# 后台线程循环检查
def _schedule_loop(self):
while self.running:
schedule.run_pending()
time.sleep(60) # 每分钟检查一次
2. 线程管理
Daemon线程:
self.thread = threading.Thread(target=self._schedule_loop, daemon=True)
self.thread.start()
优势:
- 主程序退出时自动结束
- 不阻塞主线程
- 适合后台任务
3. 邮件发送
SMTP配置:
if config['smtp_port'] == 465:
# SSL连接
server = smtplib.SMTP_SSL(smtp_server, 465, timeout=15)
else:
# TLS连接
server = smtplib.SMTP(smtp_server, 587, timeout=15)
server.starttls()
server.login(email_from, email_password)
server.send_message(msg)
server.quit()
4. 状态管理
状态变量:
self.running = False # 是否运行中
self.enabled = False # 是否已启用
self.schedule_time = "09:00" # 运行时间
self.last_run_time = None # 上次运行时间
self.last_result = None # 上次分析结果
5. 错误处理
多层异常捕获:
try:
# 1. 数据获取
data = fetcher.get_all_sector_data()
if not data.get("success"):
self._send_error_notification("数据获取失败")
return
# 2. AI分析
result = engine.run_comprehensive_analysis(data)
if not result.get("success"):
self._send_error_notification("AI分析失败")
return
# 3. 邮件发送
self._send_analysis_notification(result)
except Exception as e:
print(f"分析过程出错: {e}")
self._send_error_notification(f"分析异常: {str(e)}")
📊 性能特征
资源占用
- CPU: 空闲时 <1%,分析时 10-30%
- 内存: 约 200-500MB
- 网络: 每次分析约 10-50MB
运行时间
- 数据获取: 10-30秒
- AI分析: 60-180秒(取决于模型)
- 邮件发送: 2-5秒
- 总计: 约 2-4分钟
邮件大小
- 纯文本: 2-5KB
- 完整报告: 通常 3-8KB
⚠️ 注意事项
1. 程序需持续运行
- 本地部署:保持程序运行,电脑不关机
- 服务器部署:推荐使用Docker或云服务器
- 关闭窗口:定时任务会停止
2. 邮箱限制
- QQ邮箱:每天500封上限
- 163邮箱:每天100封上限
- 智策每天1封不会超限
3. 时区和时间
- 使用系统本地时间
- 确保系统时间准确
- 夏令时可能影响运行时间
4. 网络依赖
- 需要稳定网络连接
- 数据获取有重试机制(3次)
- SMTP连接超时15秒
5. API限流
- AKShare数据有访问限制
- 已内置1秒延迟机制
- 避免手动和定时同时运行
🐛 故障排查
问题1:邮件未收到
检查项:
- ✅ .env 文件邮件配置是否完整
- ✅ 授权码是否正确(不是登录密码)
- ✅ 邮件配置状态是否显示 ✅
- ✅ 查看垃圾邮件箱
- ✅ 检查程序日志是否有错误
解决方案:
# 测试邮件配置
点击"📧 测试邮件"按钮,查看是否成功
问题2:定时任务未运行
检查项:
- ✅ 程序是否持续运行
- ✅ 定时任务状态是否显示"✅ 运行中"
- ✅ 系统时间是否正确
- ✅ 查看程序日志
解决方案:
# 重新启动定时任务
1. 点击"⏸️ 停止"
2. 点击"▶️ 启动"
3. 点击"🔄 立即运行一次"测试
问题3:ModuleNotFoundError
错误:No module named 'schedule'
解决方案:
# 安装依赖
pip install schedule
# 或使用venv环境
.\venv\Scripts\pip.exe install schedule
问题4:属性错误
错误:'NotificationService' object has no attribute 'send_email'
原因:已修复,确保使用最新代码
验证:
from notification_service import notification_service
print(hasattr(notification_service, 'send_test_email')) # 应该返回 True
🚀 最佳实践
1. 推荐运行时间
| 时间 | 场景 | 说明 |
|---|---|---|
| 8:00-8:30 | 盘前策略 | 获取昨日数据,制定当日策略 |
| 16:00-17:00 | 盘后复盘 | 总结当日行情,调整持仓 |
| 21:00-22:00 | 晚间研究 | 深度研读,准备次日操作 |
2. 服务器部署
Docker部署(推荐):
# Dockerfile 已存在,直接使用
docker build -t agentsstock .
docker run -d -p 8501:8501 --name agentsstock agentsstock
云服务器部署:
# 使用 tmux 保持运行
tmux new -s agentsstock
streamlit run app.py
# Ctrl+B, D 分离会话
3. 配置建议
邮箱选择:
- 推荐:QQ邮箱、163邮箱(稳定性好)
- 避免:免费邮箱的临时账号
运行时间:
- 避开交易时段(9:30-15:00)
- 选择数据更新完整的时间
- 建议盘前或盘后
4. 安全建议
.env 文件保护:
# 添加到 .gitignore
echo ".env" >> .gitignore
# 设置文件权限
chmod 600 .env # Linux/Mac
授权码保护:
- 不要分享授权码
- 定期更换授权码
- 不要提交到版本控制
📈 未来规划
v1.3.0 (计划中)
- 多时段定时(一天多次)
- 微信推送支持(企业微信/Server酱)
- 自定义邮件模板
- 分析结果数据库存储
- 历史分析对比功能
v1.4.0 (规划中)
- Web端配置界面优化
- 移动端邮件格式优化
- 预警阈值自定义
- 个性化关注板块
- 智能推送频率调整
📚 相关文档索引
使用指南
- 智策定时分析使用指南.md - 详细教程
- 智策板块快速开始.md - 快速上手
- 智策板块使用指南.md - 完整指南
技术文档
- 智策功能总览.md - 功能介绍
- 智策定时分析部署清单.md - 部署步骤
- 智策定时分析更新日志.md - 版本历史
配置文档
- 环境配置功能说明.md - 环境配置
- 邮件配置指南.md - 邮件设置
✅ 验证清单
完成后请验证:
- Python 环境正常(Python 3.8+)
- 依赖库已安装(schedule)
- .env 文件已配置
- 邮件配置状态显示 ✅
- 测试邮件发送成功
- 收到测试邮件
- 定时任务可以启动
- 手动运行一次成功
- 收到分析报告邮件
- 定时任务运行正常
🎉 总结
智策定时分析功能已全部完成,主要亮点:
- 自动化运行 - 无需手动触发,每天自动分析
- 邮件推送 - 核心结果直接发送到邮箱
- 灵活控制 - 启动/停止/时间设置/手动触发
- 状态监控 - 实时查看运行状态和历史
- 完善文档 - 从使用到部署,全面覆盖
现在您可以享受每天自动化的板块策略分析服务了!📧⏰🎯
智策定时分析 v1.2.0 - 让投资策略分析自动化
完成时间:2025-01-15