diff --git a/TRADE_RECOMMENDATIONS.md b/TRADE_RECOMMENDATIONS.md new file mode 100644 index 0000000..7fb33a0 --- /dev/null +++ b/TRADE_RECOMMENDATIONS.md @@ -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 中的完整表结构 +); +```