Update backtest message

This commit is contained in:
2025-07-17 15:01:30 +07:00
parent 27bed791c3
commit 3ba06f94be
3 changed files with 37 additions and 35 deletions

View File

@@ -86,19 +86,21 @@ namespace Managing.Application.Backtesting
object metadata = null)
{
string creditRequestId = null;
// Debit user credits before starting the backtest
if (user != null)
{
try
{
creditRequestId = await _kaigenService.DebitUserCreditsAsync(user, 3);
_logger.LogInformation("Successfully debited credits for user {UserName} with request ID {RequestId}",
_logger.LogInformation(
"Successfully debited credits for user {UserName} with request ID {RequestId}",
user.Name, creditRequestId);
}
catch (Exception ex)
{
_logger.LogError(ex, "Failed to debit credits for user {UserName}. Backtest will not proceed.", user.Name);
_logger.LogError(ex, "Failed to debit credits for user {UserName}. Backtest will not proceed.",
user.Name);
throw new Exception($"Failed to debit credits: {ex.Message}");
}
}
@@ -130,11 +132,13 @@ namespace Managing.Application.Backtesting
var refundSuccess = await _kaigenService.RefundUserCreditsAsync(creditRequestId, user);
if (refundSuccess)
{
_logger.LogInformation("Successfully refunded credits for user {UserName} after backtest failure", user.Name);
_logger.LogInformation(
"Successfully refunded credits for user {UserName} after backtest failure", user.Name);
}
else
{
_logger.LogError("Failed to refund credits for user {UserName} after backtest failure", user.Name);
_logger.LogError("Failed to refund credits for user {UserName} after backtest failure",
user.Name);
}
}
catch (Exception refundEx)
@@ -142,7 +146,7 @@ namespace Managing.Application.Backtesting
_logger.LogError(refundEx, "Error during refund attempt for user {UserName}", user.Name);
}
}
throw;
}
}
@@ -192,7 +196,8 @@ namespace Managing.Application.Backtesting
tradingBot.User = user;
await tradingBot.LoadAccount();
var result = await GetBacktestingResult(config, tradingBot, candles, user, withCandles, requestId, metadata);
var result =
await GetBacktestingResult(config, tradingBot, candles, user, withCandles, requestId, metadata);
if (user != null)
{
@@ -332,7 +337,9 @@ namespace Managing.Application.Backtesting
Score = score,
Id = Guid.NewGuid().ToString(),
RequestId = requestId,
Metadata = metadata
Metadata = metadata,
StartDate = candles.FirstOrDefault()!.OpenTime,
EndDate = candles.LastOrDefault()!.OpenTime,
};
// Send notification if backtest meets criteria
@@ -345,7 +352,6 @@ namespace Managing.Application.Backtesting
{
try
{
if (backtest.Score > 80)
{
await _messengerService.SendBacktestNotification(backtest);
@@ -448,9 +454,11 @@ namespace Managing.Application.Backtesting
return backtests;
}
public (IEnumerable<LightBacktest> Backtests, int TotalCount) GetBacktestsByRequestIdPaginated(string requestId, int page, int pageSize, string sortBy = "score", string sortOrder = "desc")
public (IEnumerable<LightBacktest> Backtests, int TotalCount) GetBacktestsByRequestIdPaginated(string requestId,
int page, int pageSize, string sortBy = "score", string sortOrder = "desc")
{
var (backtests, totalCount) = _backtestRepository.GetBacktestsByRequestIdPaginated(requestId, page, pageSize, sortBy, sortOrder);
var (backtests, totalCount) =
_backtestRepository.GetBacktestsByRequestIdPaginated(requestId, page, pageSize, sortBy, sortOrder);
return (backtests, totalCount);
}
@@ -531,9 +539,11 @@ namespace Managing.Application.Backtesting
}
}
public (IEnumerable<LightBacktest> Backtests, int TotalCount) GetBacktestsByUserPaginated(User user, int page, int pageSize, string sortBy = "score", string sortOrder = "desc")
public (IEnumerable<LightBacktest> Backtests, int TotalCount) GetBacktestsByUserPaginated(User user, int page,
int pageSize, string sortBy = "score", string sortOrder = "desc")
{
var (backtests, totalCount) = _backtestRepository.GetBacktestsByUserPaginated(user, page, pageSize, sortBy, sortOrder);
var (backtests, totalCount) =
_backtestRepository.GetBacktestsByUserPaginated(user, page, pageSize, sortBy, sortOrder);
return (backtests, totalCount);
}
}