Fix multiple message

This commit is contained in:
2025-06-08 16:24:17 +07:00
parent e737b4f2ce
commit 350cab44eb

View File

@@ -339,7 +339,6 @@ public class TradingBot : Bot, ITradingBot
private async Task ManagePositions() private async Task ManagePositions()
{ {
// Update positions - iterate through positions instead of signals for better synchronization
foreach (var position in Positions.Where(p => !p.IsFinished())) foreach (var position in Positions.Where(p => !p.IsFinished()))
{ {
var signalForPosition = Signals.FirstOrDefault(s => s.Identifier == position.SignalIdentifier); var signalForPosition = Signals.FirstOrDefault(s => s.Identifier == position.SignalIdentifier);
@@ -358,7 +357,7 @@ public class TradingBot : Bot, ITradingBot
} }
// Ensure signal status is correctly set to PositionOpen if position is not finished // Ensure signal status is correctly set to PositionOpen if position is not finished
if (signalForPosition.Status != SignalStatus.PositionOpen) if (signalForPosition.Status != SignalStatus.PositionOpen && position.Status != PositionStatus.Finished)
{ {
await LogInformation( await LogInformation(
$"Updating signal {signalForPosition.Identifier} status from {signalForPosition.Status} to PositionOpen"); $"Updating signal {signalForPosition.Identifier} status from {signalForPosition.Status} to PositionOpen");
@@ -446,12 +445,12 @@ public class TradingBot : Bot, ITradingBot
var currentTime = Config.IsForBacktest ? OptimizedCandles.Last().Date : DateTime.UtcNow; var currentTime = Config.IsForBacktest ? OptimizedCandles.Last().Date : DateTime.UtcNow;
var timeSinceRequest = currentTime - positionForSignal.Open.Date; var timeSinceRequest = currentTime - positionForSignal.Open.Date;
var waitTimeMinutes = 10; var waitTimeMinutes = 10;
if (timeSinceRequest.TotalMinutes >= waitTimeMinutes) if (timeSinceRequest.TotalMinutes >= waitTimeMinutes)
{ {
await LogWarning( await LogWarning(
$"Too many open orders ({orders.Count()}) for unfilled position and {waitTimeMinutes} minutes have passed. Canceling all orders and marking position as canceled."); $"Too many open orders ({orders.Count()}) for unfilled position and {waitTimeMinutes} minutes have passed. Canceling all orders and marking position as canceled.");
try try
{ {
await ExchangeService.CancelOrder(Account, Config.Ticker); await ExchangeService.CancelOrder(Account, Config.Ticker);
@@ -461,7 +460,7 @@ public class TradingBot : Bot, ITradingBot
{ {
await LogWarning($"Failed to cancel orders: {ex.Message}"); await LogWarning($"Failed to cancel orders: {ex.Message}");
} }
await SetPositionStatus(signal.Identifier, PositionStatus.Canceled); await SetPositionStatus(signal.Identifier, PositionStatus.Canceled);
SetSignalStatus(signal.Identifier, SignalStatus.Expired); SetSignalStatus(signal.Identifier, SignalStatus.Expired);
return; return;