Fix status IsFinished/IsOpen/IsForMetrics + use redis for markets on gmx.tsx instead of inmemory cache

This commit is contained in:
2025-10-08 12:13:04 +07:00
parent 67065469a6
commit 86dd6849ea
9 changed files with 209 additions and 86 deletions

View File

@@ -77,16 +77,46 @@ namespace Managing.Domain.Trades
[Required]
public Guid InitiatorIdentifier { get; set; }
/// <summary>
/// Return true if position is finished even if the position was canceled or rejected
/// </summary>
/// <returns></returns>
public bool IsFinished()
{
return Status switch
{
PositionStatus.Finished => true,
PositionStatus.Canceled => true,
PositionStatus.Rejected => true,
PositionStatus.Flipped => true,
_ => false
};
}
public bool IsInProfit()
{
if (ProfitAndLoss?.Net == null)
{
return false;
}
return ProfitAndLoss.Net > 0;
}
public bool IsOpen()
{
return Status switch
{
PositionStatus.Filled => true,
_ => false
};
}
/// <summary>
/// Return true if position is valid for metrics calculation (PnL, WinRate, etc.)
/// Only positions with status Filled, Finished or Flipped are considered valid
/// </summary>
/// <returns></returns>
public bool IsValidForMetrics()
{
return Status switch
@@ -94,7 +124,6 @@ namespace Managing.Domain.Trades
PositionStatus.Filled => true,
PositionStatus.Finished => true,
PositionStatus.Flipped => true,
PositionStatus.Updating => true,
_ => false
};
}