# 低价擒牛策略监控功能实现总结 ## 实现日期 2024-12-12 ## 功能概述 为"低价擒牛"选股板块添加策略监控功能,实现自动监控持仓股票并在满足卖出条件时发送提醒。 ## 核心功能 ### 1. 策略监控 - ✅ 加入监控:在选出的股票列表中点击"加入策略监控"按钮 - ✅ 自动扫描:每分钟扫描1次(可配置) - ✅ 持股天数监控:持股满5天第6天开盘提醒卖出 - ✅ 均线监控:MA5下穿MA20提醒卖出 - ✅ 自动移除:提醒卖出后自动移出监控列表 ### 2. 数据源集成 - ✅ TDX数据源:读取股票K线数据 - ✅ 均线计算:自动计算MA5和MA20 - ✅ 实时价格:获取最新股票价格 ### 3. 通知系统 - ✅ 钉钉通知:自动发送卖出提醒到钉钉群 - ✅ 面板提醒:在监控面板显示待处理提醒 - ✅ 历史记录:保存所有提醒记录 ## 新增文件 ### 核心模块(3个Python文件) 1. **low_price_bull_monitor.py** (363行) - 监控数据库管理 - 股票添加/移除 - 提醒生成和管理 - 持有天数更新 2. **low_price_bull_service.py** (310行) - 后台监控服务 - 定时扫描循环 - TDX数据获取 - MA均线检测 - 钉钉通知发送 3. **low_price_bull_monitor_ui.py** (273行) - 监控面板UI - 服务控制(启动/停止) - 监控列表展示 - 卖出提醒展示 - 历史记录查询 ### 文档(2个Markdown文件) 1. **低价擒牛策略监控配置说明.md** - 环境变量配置 - TDX数据源配置 - 使用流程说明 - 常见问题解答 2. **低价擒牛策略监控功能实现总结.md** - 功能概述 - 技术实现 - 使用说明 ## 修改文件 ### low_price_bull_ui.py - ✅ 添加导入语句 - ✅ 添加"策略监控"按钮(右上角) - ✅ 在股票详情中添加"加入策略监控"按钮 - ✅ 集成监控面板切换 - ✅ 更新策略说明 ## 数据库设计 ### 表1: monitored_stocks(监控列表) ```sql CREATE TABLE monitored_stocks ( id INTEGER PRIMARY KEY, stock_code TEXT NOT NULL, -- 股票代码 stock_name TEXT NOT NULL, -- 股票名称 buy_price REAL NOT NULL, -- 买入价格 buy_date TEXT NOT NULL, -- 买入日期 holding_days INTEGER DEFAULT 0, -- 持有天数 status TEXT DEFAULT 'holding', -- 状态(holding/removed) add_time TEXT NOT NULL, -- 加入时间 remove_time TEXT, -- 移除时间 remove_reason TEXT, -- 移除原因 UNIQUE(stock_code, status) ) ``` ### 表2: sell_alerts(卖出提醒) ```sql CREATE TABLE sell_alerts ( id INTEGER PRIMARY KEY, stock_code TEXT NOT NULL, -- 股票代码 stock_name TEXT NOT NULL, -- 股票名称 alert_type TEXT NOT NULL, -- 提醒类型(holding_days/ma_cross) alert_reason TEXT NOT NULL, -- 提醒原因 current_price REAL, -- 当前价格 ma5 REAL, -- MA5值 ma20 REAL, -- MA20值 holding_days INTEGER, -- 持有天数 alert_time TEXT NOT NULL, -- 提醒时间 is_sent INTEGER DEFAULT 0 -- 是否已发送 ) ``` ## 技术实现 ### 1. 监控服务架构 ``` ┌─────────────────────────────────────┐ │ LowPriceBullService │ │ (后台监控服务) │ └──────────────┬──────────────────────┘ │ ┌──────▼──────┐ │ 监控循环 │ │ (每60秒) │ └──────┬──────┘ │ ┌──────────▼─────────────┐ │ 扫描监控列表 │ │ - 更新持有天数 │ │ - 检查卖出条件 │ └──────────┬──────────────┘ │ ┌──────────▼────────────────┐ │ 检测卖出信号 │ │ 1. 持股天数≥5 │ │ 2. MA5 < MA20 │ └──────────┬─────────────────┘ │ ┌──────────▼──────────────┐ │ 生成卖出提醒 │ │ - 保存到数据库 │ │ - 发送钉钉通知 │ │ - 自动移除股票 │ └───────────────────────────┘ ``` ### 2. TDX数据获取流程 ```python def _get_stock_data(stock_code): # 1. 获取K线数据(30天) df = get_stock_kline_data(stock_code, period='daily', count=30) # 2. 计算均线 df['MA5'] = df['close'].rolling(window=5).mean() df['MA20'] = df['close'].rolling(window=20).mean() # 3. 返回最新数据 latest = df.iloc[-1] return latest['close'], latest['MA5'], latest['MA20'] ``` ### 3. 卖出信号检测 ```python def _check_stock(stock): # 检查1: 持股天数 if holding_days >= 5: add_sell_alert(type='holding_days') return # 检查2: MA5下穿MA20 current_price, ma5, ma20 = _get_stock_data(stock_code) if ma5 < ma20: add_sell_alert(type='ma_cross') ``` ## 环境变量配置 ### 新增配置项 ```bash # 低价擒牛策略监控 LOW_PRICE_BULL_SCAN_INTERVAL=60 # 扫描间隔(秒) LOW_PRICE_BULL_HOLDING_DAYS=5 # 持股天数限制 ``` ### 依赖的配置 ```bash # Webhook通知(建议配置) WEBHOOK_ENABLED=true WEBHOOK_URL=https://oapi.dingtalk.com/robot/send?access_token=xxxxx WEBHOOK_TYPE=dingtalk WEBHOOK_KEYWORD=aiagents通知 ``` ## 使用流程 ### 1. 启动流程 ``` 1. 低价擒牛选股 ↓ 2. 查看股票列表 ↓ 3. 点击"➕ 加入策略监控" ↓ 4. 点击右上角"📊 策略监控" ↓ 5. 点击"▶️ 启动监控服务" ↓ 6. 监控服务开始运行 ``` ### 2. 监控流程 ``` 监控服务 → 每60秒扫描 → 检测条件 → 生成提醒 → 发送通知 → 自动移除 ``` ### 3. 提醒流程 ``` 满足卖出条件 ↓ 生成卖出提醒 ↓ ┌─────────┴─────────┐ │ │ 发送钉钉通知 显示在面板 │ │ └─────────┬─────────┘ ↓ 自动移出监控列表 ↓ 记录到历史 ``` ## 功能特点 ### 1. 自动化监控 - ✅ 无需人工盯盘 - ✅ 定时自动扫描 - ✅ 智能卖出提醒 ### 2. 双重条件 - ✅ 时间条件:持股5天 - ✅ 技术条件:MA5下穿MA20 - ✅ 满足任一即提醒 ### 3. 灵活配置 - ✅ 可调整扫描间隔 - ✅ 可调整持股天数 - ✅ 可启动/停止服务 ### 4. 完整记录 - ✅ 监控历史 - ✅ 提醒记录 - ✅ 操作日志 ## 监控面板功能 ### 📋 监控列表 - 显示所有监控中的股票 - 实时更新持有天数 - 支持批量移除 - 显示买入价格和日期 ### 🔔 卖出提醒 - 显示待处理提醒 - 查看MA5/MA20数据 - 操作选项: - ✅ 已处理(移除股票) - ❌ 忽略(保留股票) ### 📜 历史记录 - 查看历史提醒 - 筛选已发送/未发送 - 清理旧记录 ### ⚙️ 服务控制 - ▶️ 启动服务 - ⏸️ 停止服务 - 配置扫描间隔 - 查看服务状态 ## 钉钉通知格式 ```markdown ### aiagents通知 - 低价擒牛卖出提醒 **股票代码**: 002259 **股票名称**: 升达林业 **提醒类型**: MA均线死叉 **提醒原因**: MA5下穿MA20,技术信号卖出 **当前价格**: 8.52元 **MA5**: 8.45 **MA20**: 8.67 **持有天数**: 3天 **提醒时间**: 2024-12-12 14:30:00 --- **建议**: 开盘时卖出该股票 _此消息由AI股票分析系统自动发送_ ``` ## 注意事项 ### 1. 服务运行 - ⚠️ 监控服务需要手动启动 - ⚠️ 关闭浏览器后服务停止 - ⚠️ 建议在服务器上运行 ### 2. 数据源 - ⚠️ 需要配置TDX数据源 - ⚠️ 建议使用pytdx(无需配置) - ⚠️ K线数据可能有延迟 ### 3. 扫描频率 - ⚠️ 默认60秒扫描1次 - ⚠️ 不建议低于30秒 - ⚠️ 避免API限流 ### 4. 持股天数 - ⚠️ 按自然日计算 - ⚠️ 不区分交易日 - ⚠️ 建议预留余地 ## 后续优化方向 ### 短期 - [ ] 支持后台常驻服务 - [ ] 增加更多技术指标 - [ ] 支持自定义卖出条件 ### 中期 - [ ] 集成MiniQMT自动交易 - [ ] 支持止损止盈设置 - [ ] 增加回测功能 ### 长期 - [ ] AI智能卖出建议 - [ ] 多策略组合监控 - [ ] 移动端APP推送 ## 总结 本次实现为"低价擒牛"选股板块添加了完整的策略监控功能,包括: - ✅ **3个核心模块**:监控管理、后台服务、UI界面 - ✅ **完整的数据库设计**:监控列表、提醒记录 - ✅ **自动化监控**:定时扫描、智能提醒、自动移除 - ✅ **双重卖出条件**:持股天数 + MA均线 - ✅ **钉钉通知集成**:实时接收卖出提醒 - ✅ **灵活的配置**:可调整扫描间隔和持股天数 - ✅ **完善的文档**:配置说明、使用指南 整个功能已集成到系统中,用户可以立即使用! --- **实现完成时间**:2024-12-12 **版本**:v1.0 **状态**:✅ 已完成并可使用