Remove warning for backtest when signal is expired

This commit is contained in:
2025-10-10 01:35:10 +07:00
parent e45e140b41
commit a3d6dd1238
3 changed files with 69 additions and 18 deletions

View File

@@ -1,6 +1,8 @@
using Managing.Application.Abstractions;
using Managing.Application.Abstractions.Services;
using Managing.Application.Trading.Commands;
using Managing.Common;
using Managing.Domain.Accounts;
using Managing.Domain.Shared.Helpers;
using Managing.Domain.Trades;
using Microsoft.Extensions.DependencyInjection;
@@ -21,12 +23,15 @@ public class ClosePositionCommandHandler(
{
try
{
// Get Trade
var account = await accountService.GetAccountById(request.AccountId, false, false);
if (request.Position == null)
Account account = null;
if (!request.IsForBacktest)
{
_ = await exchangeService.CancelOrder(account, request.Position.Ticker);
return request.Position;
account = await accountService.GetAccountById(request.AccountId, false, false);
if (request.Position == null)
{
_ = await exchangeService.CancelOrder(account, request.Position.Ticker);
return request.Position;
}
}
var isForPaperTrading = request.IsForBacktest;
@@ -48,12 +53,14 @@ public class ClosePositionCommandHandler(
request.Position.ProfitAndLoss =
TradingBox.GetProfitAndLoss(request.Position, request.Position.Open.Quantity, lastPrice,
request.Position.Open.Leverage);
// Add UI fees for closing the position (broker closed it)
var closingPositionSizeUsd = (lastPrice * request.Position.Open.Quantity) * request.Position.Open.Leverage;
var closingPositionSizeUsd =
(lastPrice * request.Position.Open.Quantity) * request.Position.Open.Leverage;
var closingUiFees = TradingHelpers.CalculateClosingUiFees(closingPositionSizeUsd);
request.Position.AddUiFees(closingUiFees);
request.Position.AddGasFees(Constants.GMX.Config.GasFeePerTransaction);
await tradingService.UpdatePositionAsync(request.Position);
return request.Position;
}
@@ -78,6 +85,7 @@ public class ClosePositionCommandHandler(
var closingPositionSizeUsd = (lastPrice * closedPosition.Quantity) * request.Position.Open.Leverage;
var closingUiFees = TradingHelpers.CalculateClosingUiFees(closingPositionSizeUsd);
request.Position.AddUiFees(closingUiFees);
request.Position.AddGasFees(Constants.GMX.Config.GasFeePerTransaction);
if (!request.IsForBacktest)
await tradingService.UpdatePositionAsync(request.Position);