Skill: xuchl2002/a-stock-monitor-1-1-2 (version 1.0.0)

--- name: a-stock-monitor description: A股量化监控系统 - 7维度市场情绪评分、智能选股引擎（短线5策略+中长线7策略）、实时价格监控、涨跌幅排行榜。支持全市场5000+股票数据采集与分析，多指标共振评分，精确买卖点计算，动态止损止盈。每日自动推荐短线3-5只、中长线5-10只优质股票。包含Web界面、自动化Cron任务、历史数据回溯。适用于A股量化交易、技术分析、选股决策。 author: James Mei contact: email: [REDACTED_SECRET] blog: https://www.cnblogs.com/Jame-mei metadata: openclaw: requires: bins: ["python3"] packages: ["akshare", "flask", "ccxt"] --- # A股量化选股和监控系统 一个完整的A股量化选股、实时监控与市场情绪分析系统。 **作者**: James Mei **邮箱**: [REDACTED_SECRET] **博客**: https://www.cnblogs.com/Jame-mei **版本**: 1.1.2 **许可证**: MIT ## 🆕 v1.1.2 更新 (2026-02-24) ### 核心优化 - ⚡ **性能提升6-10倍**：交易时间使用新浪财经（0.1秒 vs 1.5秒） - 🔧 **修复关键Bug**：全市场数据更新、选股功能 - 📊 **数据完整性**：从8只提升到5748只（98.9%） - 🎯 **智能切换**：交易时间新浪优先，盘后akshare稳定 ### 技术改进 - 双数据源架构（新浪+akshare） - 自动判断交易时间 - 超时保护和降级机制 - 完整的向后兼容 详见：[CHANGELOG.md](references/CHANGELOG.md) --- ## 核心功能 ### 1. 市场情绪评分 (7维度) 基于全市场5000+只A股的综合情绪评分（0-100分）： - 涨跌家数比 (20%) - 平均涨幅 (20%) - 涨停/跌停比 (15%) - 强势股占比 (15%) - 成交活跃度 (10%) - 波动率 (10%) - 趋势强度 (10%) ### 2. 智能选股引擎 #### 短线选股 (1-5天) **5大策略**，每日推荐3-5只短线机会股： - **RSI短线** - 超短线RSI策略，适合T+0或快速进出 - **MACD短线** - MACD金叉死叉，短期趋势跟踪 - **KDJ短线** - KDJ超买超卖，适合日内波段 - **布林突破** - 布林带突破，捕捉短期波动 - **放量突破** - 量价齐升，短期强势股 **多指标共振评分体系** (满分100分)： - RSI信号 (20分) - KDJ信号 (20分) - MACD信号 (15分) - 布林带信号 (15分) - 量价异动 (15分) - 资金流向 (15分) **精确买卖点**： - 动态止损止盈（基于ATR） - 买入价、止损价、止盈价自动计算 - 预期收益率、风险收益比 #### 中长线选股 (20-180天) **7大策略**，每日推荐5-10只优质股票： - **MA趋势** - 均线多头排列，趋势跟踪 (20-60天) - **MACD趋势** - MACD趋势确认，中期持有 (15-30天) - **价值成长** - 长期价值投资 (60-180天) - **突破回踩** - 突破后回踩买入 (10-30天) - **底部反转** - RSI+MACD双确认 (15-30天) - **趋势加速** - 均线多头+放量 (10-20天) - **强势股回调** - 强势股回调低吸 (5-15天) **综合评分维度**： - 技术指标 (40%) - MA/MACD/RSI/KDJ等 - 资金流向 (30%) - 主力资金净流入 - 市场热度 (15%) - 换手率、振幅 - 风险评估 (15%) - 波动率、回撤 **持仓建议**： - 建议仓位（根据评分） - 预期收益率 - 风险等级 - 持仓周期 #### 选股配置 - 自动过滤创业板(3开头)和科创板(688开头) - 支持自定义监控股票池（watchlist.json） - 每日自动推荐，飞书/企业微信告警 ### 3. 实时价格监控 - 交易时间：每5秒更新价格 - 非交易时间：显示历史数据 - 自动判断交易时段（9:15-11:30, 13:00-15:00） ### 4. 涨跌幅排行榜 - 实时涨幅榜（Top 5） - 实时跌幅榜（Top 5） - 支持点击查看详情 ### 5. Web可视化界面 - 市场情绪仪表盘 - 监控股票卡片展示 - 统计数据汇总 - 响应式设计 ## 使用方式 ### 快速开始 1. **安装依赖** ```bash pip3 install akshare flask ccxt ``` 2. **配置监控股票** 编辑 `web_app.py`，修改 `WATCHED_STOCKS` 列表： ```python WATCHED_STOCKS = [ '600900', # 长江电力 '601985', # 中国核电 # 添加更多股票代码... ] ``` 3. **启动Web服务** ```bash cd scripts/ python3 web_app.py ``` 访问 `http://localhost:5000` ### 自动化运行 **设置Cron任务**（交易时间每5分钟更新）： ```bash openclaw cron add --name "A股全市场数据更新" \ --schedule "*/5 9-15 * * 1-5" \ --tz "Asia/Shanghai" \ --payload '{"kind":"systemEvent","text":"cd <skill-path>/scripts && python3 smart_market_updater.py"}' ``` 替换 `<skill-path>` 为技能安装路径。 ### 手动执行 ```bash # 更新全市场数据 python3 scripts/update_all_market_data.py # 计算市场情绪 python3 scripts/market_sentiment.py # 智能更新（仅交易时间） python3 scripts/smart_market_updater.py # 检查交易时间 python3 scripts/is_trading_time.py # 短线选股（每日推荐3-5只） python3 scripts/short_term_selector.py # 中长线选股（每日推荐5-10只） python3 scripts/long_term_selector.py # 增强版中长线选股 python3 scripts/enhanced_long_term_selector.py ``` ## 目录结构 ``` scripts/ ├── web_app.py # Flask Web服务 ├── stock_cache_db.py # SQLite数据缓存 ├── stock_async_fetcher.py # 异步数据获取 ├── market_sentiment.py # 市场情绪计算 ├── is_trading_time.py # 交易时间判断 ├── smart_market_updater.py # 智能更新器 ├── update_all_market_data.py # 全市场数据更新 ├── short_term_selector.py # 短线选股引擎 ├── long_term_selector.py # 中长线选股引擎 ├── enhanced_long_term_selector.py # 增强版中长线选股 ├── strategy_config.py # 策略配置文件 └── templates/ └── index.html # Web前端页面 ``` ## API端点 ### GET /api/market/sentiment 返回全市场情绪评分 **响应示例**: ```json { "score": 57, "level": "偏乐观", "emoji": "🟢", "description": "市场偏强，情绪稳定", "stats": { "total": 5000, "gainers": 2460, "losers": 2534, "limit_up": 15, "limit_down": 3 } } ``` ### GET /api/stocks 返回所有监控股票数据 ### GET /api/stocks/realtime 返回监控股票实时价格（轻量级） ### GET /api/stock/<code> 返回单只股票详情 ## 配置说明 ### 交易时间配置 默认交易时间：周一至周五 9:15-15:00 修改 `is_trading_time.py`： ```python TRADING_HOURS = { 'morning': (9, 15, 11, 30), # 9:15-11:30 'afternoon': (13, 0, 15, 0), # 13:00-15:00 } ``` ### 数据缓存配置 SQLite数据库：`stock_cache.db` 默认缓存时间：30分钟 修改 `stock_cache_db.py`： ```python MAX_AGE_MINUTES = 30 # 缓存有效期 ``` ### 监控股票配置 编辑 `web_app.py` 中的 `WATCHED_STOCKS` 列表 ### 市场情绪阈值 修改 `market_sentiment.py`： ```python # 情绪等级阈值 LEVELS = [ (80, 100, '极度乐观', '🔴'), (65, 79, '乐观', '🟠'), (55, 64, '偏乐观', '🟢'), # ... ] ``` ## 数据来源 - **akshare**: 获取A股实时行情、全市场数据 - **本地缓存**: SQLite数据库存储历史数据 ## 性能优化 1. **分级更新** - 实时价格: 5秒（仅价格+涨跌） - 完整数据: 30秒（含技术指标） - 后端更新: 5分钟（全市场数据） 2. **智能缓存** - 交易时间: 5分钟缓存 - 非交易时间: 显示历史数据 3. **异步获取** - 使用异步方式获取全市场数据 - 避免阻塞主线程 ## 故障排查 ### 问题1: 数据全为null **原因**: 非交易时间，akshare返回空数据 **解决**: 等待交易时间，或导入演示数据 ### 问题2: Web界面一直转圈 **原因**: 数据库无有效数据 **解决**: 运行 `python3 update_all_market_data.py` ### 问题3: Cron任务不执行 **原因**: 时区配置错误 **解决**: 确保时区设置为 `Asia/Shanghai` ### 问题4: 端口被占用 **原因**: Flask默认端口5000冲突 **解决**: 修改 `web_app.py` 中的端口号 ## 扩展开发 ### 添加新的监控指标 编辑 `market_sentiment.py`，添加新的评分维度： ```python def calculate_sentiment(stocks): # 添加新维度 new_dimension_score = calculate_new_dimension(stocks) # 调整权重 score = ( gain_ratio_score * 0.18 + # 降低原有权重 # ... new_dimension_score * 0.10 # 新维度10% ) ``` ### 自定义告警规则 创建新的告警脚本： ```python def check_custom_alert(): cache = StockCache() stocks = cache.get_all_stocks() # 自定义告警逻辑 alerts = [] for stock in stocks: if stock['change_pct'] > 5: alerts.append(stock) if alerts: send_alert(alerts) ``` ## 技术栈 - **后端**: Python 3.9+, Flask - **数据**: akshare, SQLite - **前端**: jQuery, Bootstrap - **自动化**: OpenClaw Cron ## 许可证 MIT License ## 联系作者 - **邮箱**: [REDACTED_SECRET] - **博客**: https://www.cnblogs.com/Jame-mei 欢迎反馈问题、建议和改进意见！ ## 致谢 - akshare 提供A股数据接口 - OpenClaw 提供自动化调度能力


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)