# 低价擒牛策略监控配置说明

## 环境变量配置

在 `.env` 文件中添加以下配置：

```bash
# 低价擒牛策略监控配置
LOW_PRICE_BULL_SCAN_INTERVAL=60      # 扫描间隔（秒），默认60秒
LOW_PRICE_BULL_HOLDING_DAYS=5        # 持股天数限制，默认5天

# TDX数据源API配置（必须）
TDX_BASE_URL=http://127.0.0.1:5000    # TDX API服务地址
```

## TDX数据源配置

策略监控需要使用TDX数据API获取股票K线数据和均线指标。

### 配置方法

在 `.env` 文件中添加TDX API URL：

```bash
# TDX数据源API配置
TDX_BASE_URL=http://127.0.0.1:5000    # TDX API服务地址
```

### API接口说明

#### 核心接口

| 接口 | 说明 | 示例 |
|------|------|------|
| /api/quote | 五档行情 | ?code=000001 |
| /api/kline | K线数据 | ?code=000001&type=day |
| /api/minute | 分时数据 | ?code=000001 |
| /api/trade | 分时成交 | ?code=000001 |
| /api/search | 搜索股票 | ?keyword=平安 |
| /api/stock-info | 综合信息 | ?code=000001 |

#### K线数据接口

策略监控使用的接口：**`/api/kline`**

**请求参数**：
- `code`: 股票代码（例如：000001）
- `type`: K线类型（day=日K线）

**返回格式**：
```json
[
  {
    "date": "2024-12-12",
    "open": 10.50,
    "high": 10.80,
    "low": 10.30,
    "close": 10.60,
    "volume": 1000000
  },
  ...
]
```

**使用示例**：
```bash
curl "http://127.0.0.1:5000/api/kline?code=000001&type=day"
```

### 启动TDX API服务

如果您还没有TDX API服务，需要先启动服务：

1. 确保已安装相关依赖
2. 启动TDX API服务器（默认端口5000）
3. 在.env中配置服务地址

### 数据说明

- **更新频率**：K线数据实时更新
- **数据量**：策略需要至少20天的K线数据
- **均线计算**：系统自动计算MA5和MA20

## Webhook通知配置

建议配置钉钉Webhook以接收卖出提醒：

```bash
# Webhook通知配置
WEBHOOK_ENABLED=true
WEBHOOK_URL=https://oapi.dingtalk.com/robot/send?access_token=xxxxx
WEBHOOK_TYPE=dingtalk
WEBHOOK_KEYWORD=aiagents通知
```

## 功能说明

### 1. 加入策略监控

在"低价擒牛"选股结果中，点击任意股票详情中的"➕ 加入策略监控"按钮。

### 2. 监控条件

#### 条件1：持股天数到期
- 持股满5天（可配置）
- 第6天开盘时发送卖出提醒
- 自动从监控列表移除

#### 条件2：MA5下穿MA20
- 每分钟扫描1次（可配置）
- 检测MA5是否小于MA20
- 满足条件时发送卖出提醒
- 自动从监控列表移除

### 3. 卖出提醒

提醒会通过以下方式发送：
- 钉钉Webhook通知（需配置）
- 监控面板中的"卖出提醒"标签页

### 4. 自动移除

当满足卖出条件时：
1. 生成卖出提醒
2. 发送钉钉通知（如已配置）
3. 自动从监控列表移除
4. 记录到历史提醒

## 使用流程

```
1. 低价擒牛选股
   ↓
2. 查看选股结果
   ↓
3. 点击"➕ 加入策略监控"
   ↓
4. 进入"📊 策略监控"面板
   ↓
5. 启动监控服务
   ↓
6. 等待卖出提醒
   ↓
7. 收到提醒后卖出
```

## 监控面板功能

### 服务控制
- ▶️ 启动监控服务
- ⏸️ 停止监控服务
- ⚙️ 配置扫描间隔

### 监控列表
- 查看所有监控中的股票
- 显示持有天数
- 手动移除股票

### 卖出提醒
- 查看待处理的提醒
- 查看MA5/MA20数据
- 标记已处理/忽略

### 历史记录
- 查看历史提醒
- 清理旧记录

## 注意事项

1. ⚠️ **监控服务需要手动启动**
   - 首次使用需在监控面板启动服务
   - 服务启动后会持续运行
   - 关闭浏览器后服务会停止

2. ⚠️ **TDX数据源**
   - 必须配置TDX_BASE_URL
   - 确俜TDX API服务已启动
   - 使用`/api/kline`接口获取日K线数据
   - 数据需要至少20天才能计算MA20

3. ⚠️ **扫描间隔**
   - 默认60秒扫描1次
   - 可在监控面板调整
   - 建议不要低于30秒

4. ⚠️ **持股天数计算**
   - 按自然日计算
   - 不区分交易日/非交易日
   - 建议留有余地

## 常见问题

### Q1: 监控服务无法启动？
A: 检查：
- Python环境是否正常
- 依赖包是否安装完整
- 查看控制台错误日志

### Q2: 没有收到卖出提醒？
A: 检查：
- Webhook是否配置正确
- 监控服务是否在运行
- TDX API服务是否启动
- 访问`http://127.0.0.1:5000/api/health`检查API状态
- 查看控制台日志是否有错误信息

### Q3: 如何修改扫描间隔？
A: 两种方式：
- 在监控面板的"⚙️ 监控配置"中修改
- 在.env文件中修改`LOW_PRICE_BULL_SCAN_INTERVAL`

### Q4: 持股天数如何调整？
A: 在.env文件中修改：
```bash
LOW_PRICE_BULL_HOLDING_DAYS=7  # 改为7天
```

## 技术实现

### 数据库
- SQLite本地数据库
- 文件：`low_price_bull_monitor.db`
- 包含监控列表和提醒记录

### 后台服务
- Python线程实现
- 定时扫描循环
- 异常自动恢复

### 数据获取
- 使用TDX API
- 调用`/api/kline`接口
- 获取日K线数据
- 计算MA5/MA20均线

---

**版本**: v1.0  
**更新日期**: 2024-12-12
