auto_trade_sys/docs/TRADE_RECOMMENDATIONS.md
薇薇安 86b85c2609 a
2026-01-25 11:19:39 +08:00

256 lines
6.1 KiB
Markdown
Raw 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.

# 交易推荐功能说明
## 功能概述
交易推荐模块用于生成交易对推荐,供手动参考下单。推荐基于技术指标分析,包含详细的参数指标和推荐原因,方便后续复盘。
## 数据库表结构
### trade_recommendations 表
包含以下字段:
- **基本信息**
- `symbol`: 交易对(如 BTCUSDT
- `direction`: 推荐方向BUY/SELL
- `recommendation_time`: 推荐时间
- `current_price`: 当前价格
- `change_percent`: 24小时涨跌幅
- **推荐原因**
- `recommendation_reason`: 推荐原因(详细说明)
- `signal_strength`: 信号强度0-10
- `market_regime`: 市场状态trending/ranging
- `trend_4h`: 4H周期趋势up/down/neutral
- **技术指标**
- `rsi`: RSI指标
- `macd_histogram`: MACD柱状图
- `bollinger_upper/middle/lower`: 布林带上下中轨
- `ema20/ema50`: EMA均线
- `ema20_4h`: 4H周期EMA20
- `atr`: 平均真实波幅
- **建议参数**
- `suggested_stop_loss`: 建议止损价
- `suggested_take_profit_1`: 建议第一目标止盈价盈亏比1:1
- `suggested_take_profit_2`: 建议第二目标止盈价
- `suggested_position_percent`: 建议仓位百分比
- `suggested_leverage`: 建议杠杆倍数
- **市场数据**
- `volume_24h`: 24小时成交量
- `volatility`: 波动率
- **状态管理**
- `status`: 状态active/executed/expired/cancelled
- `executed_at`: 执行时间
- `execution_result`: 执行结果
- `execution_trade_id`: 关联的交易记录ID
- `expires_at`: 推荐过期时间默认24小时
## 使用方法
### 1. 生成推荐
#### 通过API生成
```bash
POST /api/recommendations/generate
参数:
- min_signal_strength: 最小信号强度默认5范围0-10
- max_recommendations: 最大推荐数量默认20范围1-50
```
#### 通过代码生成
```python
from trading_system.trade_recommender import TradeRecommender
from trading_system.binance_client import BinanceClient
from trading_system.market_scanner import MarketScanner
from trading_system.risk_manager import RiskManager
# 初始化组件
client = BinanceClient(...)
scanner = MarketScanner(client)
risk_manager = RiskManager(client)
recommender = TradeRecommender(client, scanner, risk_manager)
# 生成推荐
recommendations = await recommender.generate_recommendations(
min_signal_strength=5,
max_recommendations=20
)
```
### 2. 查看推荐
#### 获取所有推荐
```bash
GET /api/recommendations
参数:
- status: 状态过滤active/executed/expired/cancelled
- direction: 方向过滤BUY/SELL
- limit: 返回数量默认50最大200
- start_date: 开始日期YYYY-MM-DD
- end_date: 结束日期YYYY-MM-DD
```
#### 获取当前有效推荐
```bash
GET /api/recommendations/active
```
#### 获取推荐详情
```bash
GET /api/recommendations/{recommendation_id}
```
#### 根据交易对获取推荐
```bash
GET /api/recommendations/symbol/{symbol}
参数:
- limit: 返回数量默认10最大50
```
### 3. 管理推荐
#### 标记推荐已执行
```bash
POST /api/recommendations/{recommendation_id}/execute
Body:
{
"trade_id": 123 // 可选关联的交易记录ID
}
```
#### 取消推荐
```bash
POST /api/recommendations/{recommendation_id}/cancel
Body:
{
"notes": "取消原因" // 可选
}
```
## 推荐生成逻辑
### 信号分析
推荐模块使用与交易策略相同的信号分析逻辑:
1. **多周期共振检查**
- 4H周期定方向
- 禁止逆4H趋势交易
- 4H周期共振时信号强度+2
2. **技术指标分析**
- 震荡市场使用均值回归策略RSI、布林带
- 趋势市场使用趋势跟踪策略MACD、均线
3. **信号强度计算**
- 基础信号2-4分
- 多指标确认:+2分
- 4H周期共振+2分
- 要求信号强度 >= 5可配置
### 建议参数计算
1. **止损价**
- 优先使用基于支撑/阻力的动态止损
- 回退到ATR或固定百分比止损
2. **止盈价**
- 第一目标盈亏比1:1了结50%仓位)
- 第二目标止损的2.5倍剩余50%仓位)
3. **建议仓位**
- 基础仓位配置的MAX_POSITION_PERCENT
- 根据信号强度调整信号强度越高建议仓位可适当增加最多1.5倍)
## 推荐状态
- **active**: 有效推荐(未过期、未执行、未取消)
- **executed**: 已执行(已手动下单)
- **expired**: 已过期超过24小时
- **cancelled**: 已取消(手动取消)
## 复盘功能
推荐记录包含完整的技术指标和执行结果,方便复盘:
1. **查看历史推荐**
- 按时间、状态、方向筛选
- 查看推荐时的技术指标
2. **分析推荐质量**
- 对比推荐原因与实际结果
- 分析不同信号强度的成功率
- 评估不同市场状态下的推荐效果
3. **优化策略**
- 根据复盘结果调整信号强度要求
- 优化推荐生成逻辑
## 注意事项
1. **推荐有效期**
- 默认24小时后自动过期
- 过期后状态变为 `expired`
2. **信号强度**
- 建议使用信号强度 >= 5 的推荐
- 信号强度越高,推荐质量越好
3. **手动验证**
- 推荐仅供参考,请结合市场情况手动验证
- 建议在关键支撑/阻力位附近入场
4. **风险控制**
- 严格按照建议止损止盈执行
- 不要超过建议仓位
## 示例
### 生成推荐
```bash
curl -X POST "http://localhost:8001/api/recommendations/generate?min_signal_strength=5&max_recommendations=10"
```
### 查看有效推荐
```bash
curl "http://localhost:8001/api/recommendations/active"
```
### 标记已执行
```bash
curl -X POST "http://localhost:8001/api/recommendations/1/execute" \
-H "Content-Type: application/json" \
-d '{"trade_id": 123}'
```
## 数据库迁移
如果数据库已存在需要执行以下SQL创建推荐表
```sql
-- 执行 backend/database/init.sql 中的 trade_recommendations 表创建语句
```
或者手动执行:
```sql
CREATE TABLE IF NOT EXISTS `trade_recommendations` (
-- 见 init.sql 中的完整表结构
);
```