From 55da551971eab4f29b7d73bf70cc79c7da988361 Mon Sep 17 00:00:00 2001 From: WrBug Date: Sat, 31 Jan 2026 21:10:10 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=9B=9E=E6=B5=8B?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E8=AE=A1=E7=AE=97=E7=A9=BA=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修复 calculateStatistics 在 trades 为空时的 IndexOutOfBoundsException - 添加空列表检查,避免访问 trades[0] - 确保回测任务即使没有交易记录也能正常完成 --- .../service/backtest/BacktestExecutionService.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/backend/src/main/kotlin/com/wrbug/polymarketbot/service/backtest/BacktestExecutionService.kt b/backend/src/main/kotlin/com/wrbug/polymarketbot/service/backtest/BacktestExecutionService.kt index e70ad20..ecab300 100644 --- a/backend/src/main/kotlin/com/wrbug/polymarketbot/service/backtest/BacktestExecutionService.kt +++ b/backend/src/main/kotlin/com/wrbug/polymarketbot/service/backtest/BacktestExecutionService.kt @@ -590,7 +590,11 @@ class BacktestExecutionService( var maxLoss = BigDecimal.ZERO // 计算最大回撤 - var runningBalance = trades[0]?.balanceAfter?.toSafeBigDecimal() ?: BigDecimal.ZERO + var runningBalance = if (trades.isNotEmpty()) { + trades[0].balanceAfter?.toSafeBigDecimal() ?: BigDecimal.ZERO + } else { + BigDecimal.ZERO + } var peakBalance = runningBalance var maxDrawdown = BigDecimal.ZERO