diff --git a/backend/api/routes/stats.py b/backend/api/routes/stats.py index e87d04f..d325781 100644 --- a/backend/api/routes/stats.py +++ b/backend/api/routes/stats.py @@ -107,12 +107,20 @@ async def get_dashboard_data(): open_trades = [] for trade in db_trades: entry_value_usdt = float(trade.get('quantity', 0)) * float(trade.get('entry_price', 0)) + leverage = float(trade.get('leverage', 1)) + pnl = float(trade.get('pnl', 0)) + + # 数据库中的pnl_percent是价格涨跌幅,需要转换为收益率 + # 收益率 = 盈亏 / 保证金 + margin = entry_value_usdt / leverage if leverage > 0 else entry_value_usdt + pnl_percent = (pnl / margin * 100) if margin > 0 else 0 + formatted_trade = { **trade, 'entry_value_usdt': entry_value_usdt, 'mark_price': trade.get('entry_price', 0), # 数据库中没有标记价,使用入场价 - 'pnl': trade.get('pnl', 0), - 'pnl_percent': trade.get('pnl_percent', 0) + 'pnl': pnl, + 'pnl_percent': pnl_percent # 使用重新计算的收益率 } open_trades.append(formatted_trade) logger.info(f"使用数据库记录作为持仓数据: {len(open_trades)} 个持仓") @@ -128,12 +136,20 @@ async def get_dashboard_data(): open_trades = [] for trade in db_trades: entry_value_usdt = float(trade.get('quantity', 0)) * float(trade.get('entry_price', 0)) + leverage = float(trade.get('leverage', 1)) + pnl = float(trade.get('pnl', 0)) + + # 数据库中的pnl_percent是价格涨跌幅,需要转换为收益率 + # 收益率 = 盈亏 / 保证金 + margin = entry_value_usdt / leverage if leverage > 0 else entry_value_usdt + pnl_percent = (pnl / margin * 100) if margin > 0 else 0 + formatted_trade = { **trade, 'entry_value_usdt': entry_value_usdt, 'mark_price': trade.get('entry_price', 0), # 数据库中没有标记价,使用入场价 - 'pnl': trade.get('pnl', 0), - 'pnl_percent': trade.get('pnl_percent', 0) + 'pnl': pnl, + 'pnl_percent': pnl_percent # 使用重新计算的收益率 } open_trades.append(formatted_trade) logger.info(f"使用数据库记录作为持仓数据: {len(open_trades)} 个持仓")