From 1d329a816c5718120a71b415d4c34038cb50bd28 Mon Sep 17 00:00:00 2001 From: aaron <> Date: Sat, 28 Feb 2026 19:34:12 +0800 Subject: [PATCH] update --- backend/app/api/paper_trading.py | 6 +-- backend/app/crypto_agent/crypto_agent.py | 40 +++++++++---------- backend/app/main.py | 4 +- backend/app/services/paper_trading_service.py | 12 +++--- 4 files changed, 31 insertions(+), 31 deletions(-) diff --git a/backend/app/api/paper_trading.py b/backend/app/api/paper_trading.py index a497bd3..621cca8 100644 --- a/backend/app/api/paper_trading.py +++ b/backend/app/api/paper_trading.py @@ -13,7 +13,7 @@ from app.services.db_service import db_service from app.utils.logger import logger -router = APIRouter(prefix="/api/paper-trading", tags=["模拟交易"]) +router = APIRouter(prefix="/api/paper-trading", tags=["交易"]) class CloseOrderRequest(BaseModel): @@ -402,11 +402,11 @@ async def reset_paper_trading(): return { "success": True, - "message": f"模拟交易数据已重置,删除 {result['deleted_count']} 条订单", + "message": f"交易数据已重置,删除 {result['deleted_count']} 条订单", "result": result } except Exception as e: - logger.error(f"重置模拟交易数据失败: {e}") + logger.error(f"重置交易数据失败: {e}") raise HTTPException(status_code=500, detail=str(e)) diff --git a/backend/app/crypto_agent/crypto_agent.py b/backend/app/crypto_agent/crypto_agent.py index 5701384..d9da569 100644 --- a/backend/app/crypto_agent/crypto_agent.py +++ b/backend/app/crypto_agent/crypto_agent.py @@ -284,7 +284,7 @@ class CryptoAgent: logger.info(f" 监控交易对: {', '.join(self.symbols)}") logger.info(f" 运行模式: 每5分钟整点执行") logger.info(f" 分析引擎: LLM 自主分析") - logger.info(f" 模拟交易: 已启用") + logger.info(f" 交易模式: 自动交易已启用") logger.info("=" * 60 + "\n") # 更新状态为运行中 @@ -292,7 +292,7 @@ class CryptoAgent: # 注意:不再启动独立的价格监控 # 价格监控由 main.py 中的 price_monitor_loop 统一处理,避免重复检查 - logger.info(f"模拟交易已启用(由后台统一监控)") + logger.info(f"交易已启用(由后台统一监控)") # 发送启动通知(卡片格式) title = "🚀 加密货币智能体已启动" @@ -560,9 +560,9 @@ class CryptoAgent: paper_decision = None real_decision = None - # 模拟交易决策 + # 交易决策 if paper_trading_enabled: - logger.info(f"\n📊 【模拟交易决策】") + logger.info(f"\n📊 【交易决策】") positions, account, pending_orders = self._get_trading_state(use_real_trading=False) # 过滤:只传递当前symbol的挂单给决策器,避免LLM搞混 pending_orders_for_symbol = [o for o in pending_orders if o.get('symbol') == symbol] @@ -573,7 +573,7 @@ class CryptoAgent: # 发送交易决策通知 await self._send_trading_decision_notification(paper_decision, market_signal, current_price, is_paper=True) else: - logger.info(f"⏸️ 模拟交易未启用") + logger.info(f"⏸️ 交易未启用") # 实盘交易决策 if real_trading_enabled: @@ -779,22 +779,22 @@ class CryptoAgent: real_executed = False # ============================================================ - # 执行模拟交易决策 + # 执行交易决策 # ============================================================ if paper_trading_enabled and paper_decision: decision_type = paper_decision.get('decision', 'HOLD') if decision_type == 'HOLD': reasoning = paper_decision.get('reasoning', '观望') - logger.info(f"\n📊 模拟交易: {reasoning}") + logger.info(f"\n📊 交易决策: {reasoning}") # 有信号但决策为 HOLD,发送未执行通知 await self._notify_signal_not_executed(market_signal, paper_decision, current_price, is_paper=True) else: - logger.info(f"\n📊 【执行模拟交易】") + logger.info(f"\n📊 【执行交易】") if decision_type in ['OPEN', 'ADD']: # 先执行交易 - logger.info(f" 准备执行 {'模拟' if paper_trading_enabled else '实盘'} 交易...") + logger.info(f" 准备执行交易...") result = await self._execute_paper_trade(paper_decision, market_signal, current_price) # 检查是否成功执行 @@ -815,9 +815,9 @@ class CryptoAgent: else: # 有信号但订单创建失败,发送未执行通知 reason = result.get('message', '订单创建失败') if result else '订单创建失败' - logger.warning(f" ⚠️ 模拟交易未执行: {reason}") + logger.warning(f" ⚠️ 交易未执行: {reason}") await self._notify_signal_not_executed(market_signal, paper_decision, current_price, is_paper=True, reason=reason) - logger.warning(f" ⚠️ 模拟交易未执行: {reason}") + logger.warning(f" ⚠️ 交易未执行: {reason}") elif decision_type == 'CLOSE': await self._execute_close(paper_decision, paper_trading=True) # CLOSE 操作也发送执行通知 @@ -1073,7 +1073,7 @@ class CryptoAgent: symbol = market_signal.get('symbol') # 账户类型标识 - account_type = "📊 模拟" if is_paper else "💰 实盘" + account_type = "📊 交易" if is_paper else "💰 实盘" # 决策类型映射 decision_map = { @@ -1342,7 +1342,7 @@ class CryptoAgent: logger.warning(f" ⚠️ LLM 决策的 quantity 无效: {quantity},使用默认值") quantity = self._calculate_quantity_by_position_size(position_size, real_trading=False) - logger.info(f" 准备创建模拟订单: {symbol} {action} {position_size}") + logger.info(f" 准备创建订单: {symbol} {action} {position_size}") logger.info(f" LLM 决策金额: ${quantity:.2f} USDT") # 转换决策的 action 为 paper_trading 期望的格式 @@ -1381,13 +1381,13 @@ class CryptoAgent: if order: # quantity 是保证金金额,持仓价值 = 保证金 × 20 position_value = quantity * 20 - logger.info(f" ✅ 已创建模拟订单: {order.order_id} | 仓位: {position_size} | 持仓价值: ${position_value:.2f}") + logger.info(f" ✅ 已创建订单: {order.order_id} | 仓位: {position_size} | 持仓价值: ${position_value:.2f}") logger.info(f" 订单状态: {order.status.value} | 入场价: ${order.entry_price:,.2f}") else: # 订单创建失败,记录详细原因 reason = result.get('message', '未知原因') cancelled_info = result.get('cancelled_orders', []) - logger.warning(f" ❌ 创建模拟订单失败: {reason}") + logger.warning(f" ❌ 创建订单失败: {reason}") if cancelled_info: logger.warning(f" 已取消的反向订单: {len(cancelled_info)} 个") @@ -1395,7 +1395,7 @@ class CryptoAgent: return result except Exception as e: - logger.error(f"执行模拟交易失败: {e}") + logger.error(f"执行交易失败: {e}") import traceback logger.debug(traceback.format_exc()) @@ -1499,13 +1499,13 @@ class CryptoAgent: symbol = decision.get('symbol') if paper_trading: - # 模拟平仓 + # 平仓 if self.paper_trading: - # TODO: 实现模拟平仓逻辑 - logger.info(f" 🔒 模拟平仓: {symbol}") + # TODO: 实现平仓逻辑 + logger.info(f" 🔒 平仓: {symbol}") logger.info(f" 理由: {decision.get('reasoning', '')}") else: - logger.warning(f" 模拟交易服务未初始化") + logger.warning(f" 交易服务未初始化") else: # 实盘平仓 if self.real_trading and self.real_trading.get_auto_trading_status(): diff --git a/backend/app/main.py b/backend/app/main.py index a38e471..77aad86 100644 --- a/backend/app/main.py +++ b/backend/app/main.py @@ -454,7 +454,7 @@ async def _print_system_status(): logger.info(f" 监控: {', '.join(config['symbols'])}") if 'paper_trading_enabled' in config: pt_status = "已启用" if config['paper_trading_enabled'] else "未启用" - logger.info(f" 模拟交易: {pt_status}") + logger.info(f" 交易: {pt_status}") if 'analysis_interval' in config: logger.info(f" 分析间隔: {config['analysis_interval']}") @@ -651,7 +651,7 @@ app.include_router(chat.router, prefix="/api/chat", tags=["对话"]) app.include_router(stock.router, prefix="/api/stock", tags=["股票数据"]) app.include_router(skills.router, prefix="/api/skills", tags=["技能管理"]) app.include_router(llm.router, tags=["LLM模型"]) -app.include_router(paper_trading.router, tags=["模拟交易"]) +app.include_router(paper_trading.router, tags=["交易"]) app.include_router(real_trading.router, tags=["实盘交易"]) app.include_router(stocks.router, prefix="/api/stocks", tags=["美股分析"]) app.include_router(signals.router, tags=["信号管理"]) diff --git a/backend/app/services/paper_trading_service.py b/backend/app/services/paper_trading_service.py index 3c50706..cb1a425 100644 --- a/backend/app/services/paper_trading_service.py +++ b/backend/app/services/paper_trading_service.py @@ -56,7 +56,7 @@ class PaperTradingService: # 加载活跃订单到内存 self._load_active_orders() - logger.info(f"模拟交易服务初始化完成(自动平反向持仓: {'启用' if self.auto_close_opposite else '禁用'}," + logger.info(f"交易服务初始化完成(自动平反向持仓: {'启用' if self.auto_close_opposite else '禁用'}," f"保本止损阈值: {self.breakeven_threshold}%," f"移动止损: {'启用' if self.trailing_stop_enabled else '禁用'}," f"触发倍数: {self.trailing_stop_threshold_multiplier}x," @@ -332,13 +332,13 @@ class PaperTradingService: entry_type_text = "现价" if entry_type == EntryType.MARKET else "挂单" status_text = "已开仓" if status == OrderStatus.OPEN else "等待触发" - logger.info(f"✅ 创建模拟订单成功: {order_id} | {symbol} {side.value} [{entry_type_text}] @ ${entry_price:,.2f} | {status_text}") + logger.info(f"✅ 创建订单成功: {order_id} | {symbol} {side.value} [{entry_type_text}] @ ${entry_price:,.2f} | {status_text}") logger.info(f" 保证金: ${margin:,.0f} | 杠杆: {self.leverage}x | 持仓价值: ${position_value:,.0f} | 当前订单数: {len(self.active_orders)}/{self.max_orders}") result['order'] = order return result except Exception as e: - logger.error(f"❌ 创建模拟订单失败: {e}") + logger.error(f"❌ 创建订单失败: {e}") logger.error(f" 订单数据: symbol={symbol}, side={side}, entry_price={entry_price}, margin={margin}") import traceback logger.error(f" 异常详情: {traceback.format_exc()}") @@ -1676,7 +1676,7 @@ class PaperTradingService: # 构建报告 lines = [ - f"📊 模拟交易 {hours} 小时报告", + f"📊 交易 {hours} 小时报告", "", "━━━━━━ 总体情况 ━━━━━━", f"总交易数: {total_stats['total_trades']} | 胜率: {total_stats['win_rate']}%", @@ -2033,7 +2033,7 @@ class PaperTradingService: # 清空内存缓存 self.active_orders.clear() - logger.info(f"模拟交易数据已重置,删除 {deleted} 条订单(总计 {total_count} 条)") + logger.info(f"交易数据已重置,删除 {deleted} 条订单(总计 {total_count} 条)") return { 'deleted_count': deleted, @@ -2041,7 +2041,7 @@ class PaperTradingService: } except Exception as e: db.rollback() - logger.error(f"重置模拟交易数据失败: {e}") + logger.error(f"重置交易数据失败: {e}") raise finally: db.close()