Fix backtests

This commit is contained in:
2025-04-27 19:15:51 +07:00
parent 934a0a26c1
commit 0b1710cd69

View File

@@ -4,8 +4,6 @@ using Managing.Application.Trading.Commands;
using Managing.Domain.Shared.Helpers; using Managing.Domain.Shared.Helpers;
using Managing.Domain.Trades; using Managing.Domain.Trades;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using System;
using System.Threading.Tasks;
using static Managing.Common.Enums; using static Managing.Common.Enums;
namespace Managing.Application.Trading; namespace Managing.Application.Trading;
@@ -36,19 +34,24 @@ public class ClosePositionCommandHandler(
: exchangeService.GetPrice(account, request.Position.Ticker, DateTime.UtcNow); : exchangeService.GetPrice(account, request.Position.Ticker, DateTime.UtcNow);
// Check if position still open // Check if position still open
var p = (await exchangeService.GetBrokerPositions(account)) if (!isForPaperTrading)
.FirstOrDefault(x => x.Ticker == request.Position.Ticker);
if (p == null)
{ {
request.Position.Status = PositionStatus.Finished; var p = (await exchangeService.GetBrokerPositions(account))
request.Position.ProfitAndLoss = .FirstOrDefault(x => x.Ticker == request.Position.Ticker);
TradingBox.GetProfitAndLoss(request.Position, request.Position.Open.Quantity, lastPrice,
request.Position.Open.Leverage); // Position not available on the broker, so be sure to update the status
tradingService.UpdatePosition(request.Position); if (p == null)
return request.Position; {
request.Position.Status = PositionStatus.Finished;
request.Position.ProfitAndLoss =
TradingBox.GetProfitAndLoss(request.Position, request.Position.Open.Quantity, lastPrice,
request.Position.Open.Leverage);
tradingService.UpdatePosition(request.Position);
return request.Position;
}
} }
var closeRequestedOrders = var closeRequestedOrders =
isForPaperTrading || (await exchangeService.CancelOrder(account, request.Position.Ticker)); isForPaperTrading || (await exchangeService.CancelOrder(account, request.Position.Ticker));