From f8569aac57fdb3c8234e09681666c0c0a2966068 Mon Sep 17 00:00:00 2001 From: Martin-Molinero Date: Fri, 2 Oct 2026 20:19:14 +0000 Subject: [PATCH] CancelOpenOrders returns no tickets during warm up instead of throwing Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_01Jg3xKmkXeokEBZtR28er8N --- Common/Messages/Messages.Securities.cs | 9 --------- Common/Securities/SecurityTransactionManager.cs | 4 ++-- .../Securities/SecurityTransactionManagerTests.cs | 12 ++++++++++++ 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/Common/Messages/Messages.Securities.cs b/Common/Messages/Messages.Securities.cs index b67572700c39..5ba21bd2eb28 100644 --- a/Common/Messages/Messages.Securities.cs +++ b/Common/Messages/Messages.Securities.cs @@ -970,15 +970,6 @@ public static string SymbolNotFoundInSymbolPropertiesDatabase(QuantConnect.Symbo /// public static class SecurityTransactionManager { - /// - /// Returns a string message saying CancelOpenOrders operation is not allowed in Initialize or during warm up - /// - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static string CancelOpenOrdersNotAllowedOnInitializeOrWarmUp() - { - return $"This operation is not allowed in {FormatCode("Initialize")} or during warm up: {FormatCode("CancelOpenOrders")}. Please move this code to the {FormatCode("OnWarmupFinished")}() method."; - } - /// /// Returns a string message saying the order was canceled by the CancelOpenOrders() at the given time /// diff --git a/Common/Securities/SecurityTransactionManager.cs b/Common/Securities/SecurityTransactionManager.cs index c281563902fc..a6647449c8a2 100644 --- a/Common/Securities/SecurityTransactionManager.cs +++ b/Common/Securities/SecurityTransactionManager.cs @@ -253,7 +253,7 @@ public List CancelOpenOrders() { if (_algorithm != null && _algorithm.IsWarmingUp) { - throw new InvalidOperationException(Messages.SecurityTransactionManager.CancelOpenOrdersNotAllowedOnInitializeOrWarmUp()); + return new List(); } var cancelledOrders = new List(); @@ -275,7 +275,7 @@ public List CancelOpenOrders(Symbol symbol, string tag = null) { if (_algorithm != null && _algorithm.IsWarmingUp) { - throw new InvalidOperationException(Messages.SecurityTransactionManager.CancelOpenOrdersNotAllowedOnInitializeOrWarmUp()); + return new List(); } var cancelledOrders = new List(); diff --git a/Tests/Common/Securities/SecurityTransactionManagerTests.cs b/Tests/Common/Securities/SecurityTransactionManagerTests.cs index 917628505172..8fb0ead5a89b 100644 --- a/Tests/Common/Securities/SecurityTransactionManagerTests.cs +++ b/Tests/Common/Securities/SecurityTransactionManagerTests.cs @@ -114,6 +114,18 @@ public void WorksProperlyWithPyObjects() transactionHandler.Exit(); } + [Test] + public void CancelOpenOrdersReturnsEmptyWhileWarmingUp() + { + var algorithm = new QCAlgorithm(); + algorithm.SubscriptionManager.SetDataManager(new DataManagerStub(algorithm)); + var spy = algorithm.AddEquity("SPY").Symbol; + + Assert.IsTrue(algorithm.IsWarmingUp); + Assert.IsEmpty(algorithm.Transactions.CancelOpenOrders()); + Assert.IsEmpty(algorithm.Transactions.CancelOpenOrders(spy)); + } + [Test] public void OrderEnumerablesAreMemoizedExposingCount() {