diff --git a/src/Managing.Application/Bots/TradingBotBase.cs b/src/Managing.Application/Bots/TradingBotBase.cs index b0cd15eb..5dd0ee35 100644 --- a/src/Managing.Application/Bots/TradingBotBase.cs +++ b/src/Managing.Application/Bots/TradingBotBase.cs @@ -1086,9 +1086,24 @@ public class TradingBotBase : ITradingBot var reason = $"Cannot open position. There is already a position open for {Config.Ticker} on the broker."; - if (previousPosition != null && orders.Count >= 2) + if (previousPosition != null) { - await SetPositionStatus(previousPosition.SignalIdentifier, PositionStatus.Filled); + if (orders.Count >= 2) + { + await SetPositionStatus(previousPosition.SignalIdentifier, PositionStatus.Filled); + } + else + { + // Broker already has an open position, cancel the internally created (DB) position + await SetPositionStatus(previousPosition.SignalIdentifier, PositionStatus.Canceled); + if (!Config.IsForBacktest) + { + await UpdatePositionDatabase(previousPosition); + } + + reason += + " Position open on broker; internal position has been marked as Canceled."; + } } else {