一个基于 Python 的自动化指数数据监控工具,能够实时获取股票指数数据,计算技术指标,并通过邮件发送包含图表和分析报告。
注意:仅针对一些指数的20日线指标,不构成任何投资建议,切记!
- 📈 多指数监控:支持上证指数、深证成指、创业板指等主要A股指数
- 📊 技术分析:自动计算20日均线(MA20)并检测突破信号
- 📧 智能报告:生成包含数据表格和图表的HTML邮件报告
- 🔔 实时告警:当指数跌破关键均线时发送预警通知
- 🖼️ 可视化展示:内嵌走势图表,支持邮件客户端和网页端查看
- Python 3.7+
akshare- 金融数据接口pandas- 数据处理与分析matplotlib- 数据可视化smtplib- 邮件发送服务email- 邮件内容构建
pip install akshare pandas matplotlib在代码中配置您的SMTP服务器信息:
smtp_config = {
'server': 'smtp.163.com', # SMTP服务器地址
'port': 25, # 端口号
'username': 'your_email@163.com', # 发件邮箱
'password': 'your_password' # 授权码/密码
}默认监控以下指数:
沪深300(000300)上证50(000016)科创50(000688)中概互联ETF(164906)恒生医药ETF(159892)恒生科技指数ETF(513180)创业板华夏ETF(159957)中证500(000905)中证1000(000852)
也可根据需要自行添加,如:
上证指数(000001)深证成指(399001)创业板指(399006)
from ma20 import AKIndexDataCrawler
# 初始化爬虫
crawler = AKIndexDataCrawler()
# 获取单个指数数据
df = crawler.get_index_data('上证指数', days=180)
# 批量获取所有指数数据
index_data = crawler.get_multiple_index_data(days=180, check_alert=True)
# 发送邮件报告
crawler.send_email_report(index_data, 'recipient@example.com')python ma20.py程序将自动:
- 获取所有监控指数的历史数据
- 计算20日均线和技术指标
- 检测突破信号并打印告警
- 发送包含图表的邮件报告
每封邮件包含:
- 最近10个交易日的收盘价和MA20值
- 当前状态指示(高于/低于均线)
- 价格差异统计
- 收盘价曲线(蓝色实线)
- 20日均线曲线(粉色虚线)
- 跌破均线的点位标注(红色圆点)
- 实时监控状态变化
- 突破信号的即时通知
⚠️ 告警: 上证指数 最新收盘价低于20日均线 ⚠️
✅ 深证成指 运行在20日均线上方
📧 邮件已成功发送至: user@example.com
# 在 AKIndexDataCrawler.__init__() 中添加指数映射
self.index_codes = {
'上证指数': '000001',
'你的指数': '指数代码',
# ... 更多指数
}# 修改监控天数
index_data = crawler.get_multiple_index_data(days=120) # 120天历史数据
# 禁用告警检查
index_data = crawler.get_multiple_index_data(check_alert=False)crawler.send_email_report(
index_data,
recipient='user@example.com',
subject='我的自定义监控报告'
)欢迎提交 Issue 和 Pull Request!
- Fork 本项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情
- AKShare - 提供优质的金融数据接口
本工具仅供技术学习和研究使用,不构成任何投资建议。金融市场有风险,投资需谨慎。使用者应自行承担因使用本工具而产生的所有责任和风险。
如有问题或建议,请通过 Issue 反馈或联系维护者。