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.Trades;
using Microsoft.Extensions.Logging;
using System;
using System.Threading.Tasks;
using static Managing.Common.Enums;
namespace Managing.Application.Trading;
@@ -36,19 +34,24 @@ public class ClosePositionCommandHandler(
: exchangeService.GetPrice(account, request.Position.Ticker, DateTime.UtcNow);
// Check if position still open
var p = (await exchangeService.GetBrokerPositions(account))
.FirstOrDefault(x => x.Ticker == request.Position.Ticker);
if (p == null)
if (!isForPaperTrading)
{
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 p = (await exchangeService.GetBrokerPositions(account))
.FirstOrDefault(x => x.Ticker == request.Position.Ticker);
// Position not available on the broker, so be sure to update the status
if (p == null)
{
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 =
isForPaperTrading || (await exchangeService.CancelOrder(account, request.Position.Ticker));