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()