a
This commit is contained in:
parent
b08d97b442
commit
272b4cdc19
255
TRADE_RECOMMENDATIONS.md
Normal file
255
TRADE_RECOMMENDATIONS.md
Normal file
|
|
@ -0,0 +1,255 @@
|
|||
# 交易推荐功能说明
|
||||
|
||||
## 功能概述
|
||||
|
||||
交易推荐模块用于生成交易对推荐,供手动参考下单。推荐基于技术指标分析,包含详细的参数指标和推荐原因,方便后续复盘。
|
||||
|
||||
## 数据库表结构
|
||||
|
||||
### 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 中的完整表结构
|
||||
);
|
||||
```
|
||||
Loading…
Reference in New Issue
Block a user