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

@@ -484,7 +484,7 @@ public class PlatformSummaryGrain : Grain, IPlatformSummaryGrain, IRemindable
{
// Check if position was active at this hour
var wasActiveAtThisHour = position.Date <= hourDateTime &&
(!position.IsFinished() ||
(position.IsOpen() ||
(position.StopLoss.Status == TradeStatus.Filled &&
position.StopLoss.Date > hourDateTime) ||
(position.TakeProfit1.Status == TradeStatus.Filled &&
@@ -527,7 +527,7 @@ public class PlatformSummaryGrain : Grain, IPlatformSummaryGrain, IRemindable
}
// Add closing volume if position was closed on or before this day
if (position.IsFinished())
if (position.IsValidForMetrics())
{
if (position.StopLoss.Status == TradeStatus.Filled && position.StopLoss.Date.Date <= targetDate)
{
@@ -559,7 +559,7 @@ public class PlatformSummaryGrain : Grain, IPlatformSummaryGrain, IRemindable
}
// Calculate CUMULATIVE fees and PnL for positions closed on or before this day
var wasClosedOnOrBeforeThisDay = position.IsFinished() && (
var wasClosedOnOrBeforeThisDay = position.IsValidForMetrics() && (
(position.StopLoss.Status == TradeStatus.Filled && position.StopLoss.Date.Date <= targetDate) ||
(position.TakeProfit1.Status == TradeStatus.Filled && position.TakeProfit1.Date.Date <= targetDate) ||
(position.TakeProfit2 != null && position.TakeProfit2.Status == TradeStatus.Filled &&