From 39e6a46bd30e15a6c62bc49ae2cc6ec3ec70d9be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=96=87=E8=96=87=E5=AE=89?= Date: Sat, 17 Jan 2026 21:33:20 +0800 Subject: [PATCH] a --- frontend/src/components/Recommendations.css | 20 +++++++++ frontend/src/components/Recommendations.jsx | 10 ++--- trading_system/trade_recommender.py | 45 +++++++++++++++------ 3 files changed, 57 insertions(+), 18 deletions(-) diff --git a/frontend/src/components/Recommendations.css b/frontend/src/components/Recommendations.css index df55e66..f16b6e4 100644 --- a/frontend/src/components/Recommendations.css +++ b/frontend/src/components/Recommendations.css @@ -447,12 +447,32 @@ grid-column: span 2; } +.param-item.limit-price.highlight { + background-color: #e3f2fd; + border: 2px solid #2196F3; + border-radius: 6px; + padding: 10px; + margin: 5px 0; +} + +.param-item.limit-price.highlight label { + color: #1976d2; + font-weight: bold; + font-size: 13px; +} + .limit-price-value { display: flex; flex-direction: column; gap: 4px; } +.limit-price-value.highlight-price { + font-size: 18px; + font-weight: bold; + color: #1976d2; +} + .price-diff { font-size: 11px; color: #666; diff --git a/frontend/src/components/Recommendations.jsx b/frontend/src/components/Recommendations.jsx index f8fc2b7..a46fb29 100644 --- a/frontend/src/components/Recommendations.jsx +++ b/frontend/src/components/Recommendations.jsx @@ -377,14 +377,14 @@ function Recommendations() {
- - {rec.order_type === 'LIMIT' ? '限价单' : '市价单'} + + 限价单
- {rec.order_type === 'LIMIT' && rec.suggested_limit_price && ( -
+ {rec.suggested_limit_price && ( +
- + {parseFloat(rec.suggested_limit_price || 0).toFixed(4)} USDT {rec.current_price && ( diff --git a/trading_system/trade_recommender.py b/trading_system/trade_recommender.py index 2fa8685..63c0339 100644 --- a/trading_system/trade_recommender.py +++ b/trading_system/trade_recommender.py @@ -466,7 +466,7 @@ class TradeRecommender: # 生成用户指南(人话版计划) user_guide = self._generate_user_guide( symbol, direction, suggested_limit_price, stop_loss_price, take_profit_1, take_profit_2, - simple_reason, expected_hold_time, risk_warning, recommendation_category + simple_reason, expected_hold_time, risk_warning, recommendation_category, current_price ) # 基础推荐数据 @@ -512,27 +512,20 @@ class TradeRecommender: 'max_hold_days': 3 # 最大持仓天数(超过此天数建议平仓) } - # 限价单推荐 + # 限价单推荐(唯一推荐类型) limit_recommendation = base_data.copy() limit_recommendation.update({ 'order_type': 'LIMIT', 'suggested_limit_price': suggested_limit_price }) - # 市价单推荐 - market_recommendation = base_data.copy() - market_recommendation.update({ - 'order_type': 'MARKET', - 'suggested_limit_price': None - }) - logger.debug( f"✓ 生成推荐: {symbol} {direction} " f"(信号强度: {signal_strength}/10, 胜率预估: {estimated_win_rate:.1f}%, " f"分类: {recommendation_category}, 风险: {risk_level})" ) - return [limit_recommendation, market_recommendation] + return [limit_recommendation] except Exception as e: logger.error(f"创建推荐失败 {symbol_info.get('symbol', 'unknown')}: {e}", exc_info=True) @@ -641,7 +634,8 @@ class TradeRecommender: simple_reason: str, expected_hold_time: str, risk_warning: str, - category: str + category: str, + current_price: float ) -> str: """ 生成用户指南(人话版计划) @@ -657,27 +651,52 @@ class TradeRecommender: expected_hold_time: 预期持仓时间 risk_warning: 风险警告 category: 推荐分类 + current_price: 当前价格(用于计算反向波动) Returns: 用户指南文本 """ direction_cn = "买入" if direction == 'BUY' else "卖出" + direction_action = "挂单买入" if direction == 'BUY' else "挂单卖出" + + # 计算反向波动阈值(2%) + if direction == 'BUY': + # 买单:如果价格下跌超过2%,建议取消 + reverse_threshold = current_price * 0.98 + reverse_direction = "下跌" + else: + # 卖单:如果价格上涨超过2%,建议取消 + reverse_threshold = current_price * 1.02 + reverse_direction = "上涨" user_guide = f"""【操作计划】{direction_cn} {symbol} 【推荐类型】{category} 【核心理由】{simple_reason} + +【明确的入场价】 +建议在 {limit_price:.4f} USDT 附近{direction_action} + 【具体点位】 - • 入场价(限价单): {limit_price:.4f} USDT + • 建议挂单价: {limit_price:.4f} USDT • 止损价: {stop_loss:.4f} USDT • 第一目标: {tp1:.4f} USDT(盈亏比1:1) • 第二目标: {tp2:.4f} USDT(盈亏比2.5:1) + 【持仓周期】{expected_hold_time} + 【退出条件】 • 触及止损:立即平仓 • 触及第一目标:可部分止盈或全部止盈 • 触及第二目标:建议全部止盈 • 持仓超过3天未触及第一目标:建议平仓离场重新评估 -【关键提醒】{risk_warning}""" + +【订单失效条件】 +此限价单建议当日有效。若价格未触及挂单价,但价格直接{reverse_direction}超过2%({reverse_threshold:.4f} USDT),则建议取消订单,等待新信号。 + +【关键提醒】{risk_warning} + +【给主动交易者的提示】 +如果您确信趋势已启动,也可考虑以市价单立即入场,但需承受更高滑点成本,且务必设置好止损。""" return user_guide