Files
aiagents-stock/docs/低价擒牛策略监控功能实现总结.md
2025-12-12 19:46:38 +08:00

366 lines
9.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 低价擒牛策略监控功能实现总结
## 实现日期
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
**状态**:✅ 已完成并可使用