Add logs for BacktestExecutor.cs

This commit is contained in:
2025-11-14 13:17:48 +07:00
parent d341ee05c9
commit 42993735d0

View File

@@ -483,34 +483,12 @@ public class BacktestExecutor
string.Join(", ", bottlenecks)); string.Join(", ", bottlenecks));
} }
_logger.LogInformation("🎯 Backtest completed successfully - RequestId: {RequestId}", finalRequestId); _logger.LogInformation("🎯 Backtest completed successfully - RequestId: {RequestId} - Score: {Score} - Realized PnL: {RealizedPnl} - Net PnL: {NetPnl}", finalRequestId, result.Score, result.FinalPnl, result.NetPnl);
// Convert Backtest to LightBacktest // Convert Backtest to LightBacktest
return ConvertToLightBacktest(result); return ConvertToLightBacktest(result);
} }
/// <summary>
/// Advanced signal caching based on indicator update frequency
/// Instead of hashing candles, we cache signals based on how often indicators need updates
/// </summary>
private bool ShouldSkipSignalUpdate(int currentCandleIndex, int totalCandles)
{
// RSI and similar indicators don't need to be recalculated every candle
// For 15-minute candles, we can update signals every 3-5 candles without significant accuracy loss
const int signalUpdateFrequency = 3; // Update signals every N candles
// Always update signals for the first few candles to establish baseline
if (currentCandleIndex < 10)
return false;
// Always update signals near the end to ensure final trades are calculated
if (currentCandleIndex > totalCandles - 10)
return false;
// Skip signal updates based on frequency
return (currentCandleIndex % signalUpdateFrequency) != 0;
}
/// <summary> /// <summary>
/// Pre-calculates all signals for the entire backtest period /// Pre-calculates all signals for the entire backtest period
/// This eliminates repeated GetSignal() calls during the backtest loop /// This eliminates repeated GetSignal() calls during the backtest loop