diff --git a/Engine/Results/Analysis/Analyses/OrderFillsDuringExtendedMarketHoursAnalysis.cs b/Engine/Results/Analysis/Analyses/OrderFillsDuringExtendedMarketHoursAnalysis.cs
index 44ff63206c30..e835704cf3b5 100644
--- a/Engine/Results/Analysis/Analyses/OrderFillsDuringExtendedMarketHoursAnalysis.cs
+++ b/Engine/Results/Analysis/Analyses/OrderFillsDuringExtendedMarketHoursAnalysis.cs
@@ -13,9 +13,11 @@
* limitations under the License.
*
*/
+using System;
using System.Collections.Generic;
using QuantConnect.Orders;
using QuantConnect.Algorithm;
+using QuantConnect.Lean.Engine.TransactionHandlers;
namespace QuantConnect.Lean.Engine.Results.Analysis.Analyses
{
@@ -53,7 +55,8 @@ public class OrderFillsDuringExtendedMarketHoursAnalysis : BaseResultsAnalysis
foreach (var orderEvent in orderEvents)
{
- if (orderEvent.Status != OrderStatus.Filled || !algorithm.Securities.TryGetValue(orderEvent.Symbol, out var security))
+ if (orderEvent.Status != OrderStatus.Filled || !algorithm.Securities.TryGetValue(orderEvent.Symbol, out var security)
+ || orderEvent.Message?.Contains(BrokerageTransactionHandler.LiquidateFromDelistingTag, StringComparison.InvariantCultureIgnoreCase) == true)
{
continue;
}
@@ -74,7 +77,7 @@ public class OrderFillsDuringExtendedMarketHoursAnalysis : BaseResultsAnalysis
}
var potentialSolutions = result.Count > 0 ? Solutions(language) : [];
- return SingleResponse(orderEvents.Count > 0 ? orderEvents[0] : null, orderEvents.Count > 1 ? orderEvents.Count : null, potentialSolutions);
+ return SingleResponse(result.Count > 0 ? result[0] : null, result.Count > 1 ? result.Count : null, potentialSolutions);
}
///
diff --git a/Engine/TransactionHandlers/BrokerageTransactionHandler.cs b/Engine/TransactionHandlers/BrokerageTransactionHandler.cs
index cba84f441c21..53bf641716c7 100644
--- a/Engine/TransactionHandlers/BrokerageTransactionHandler.cs
+++ b/Engine/TransactionHandlers/BrokerageTransactionHandler.cs
@@ -42,6 +42,11 @@ namespace QuantConnect.Lean.Engine.TransactionHandlers
///
public class BrokerageTransactionHandler : ITransactionHandler
{
+ ///
+ /// The tag used for order events of liquidations triggered by a delisting
+ ///
+ public static readonly string LiquidateFromDelistingTag = "Liquidate from delisting";
+
private IAlgorithm _algorithm;
private QCAlgorithm _qcAlgorithmInstance;
private SignalExportManager _signalExport;
@@ -1545,7 +1550,7 @@ private void HandleDelistingNotification(DelistingNotificationEventArgs e)
var quantity = -security.Holdings.Quantity;
if (quantity != 0)
{
- var tag = "Liquidate from delisting";
+ var tag = LiquidateFromDelistingTag;
// Create our order and add it
var order = new MarketOrder(security.Symbol, quantity, _algorithm.UtcTime, tag);
@@ -1556,7 +1561,8 @@ private void HandleDelistingNotification(DelistingNotificationEventArgs e)
{
FillPrice = security.Price,
Status = OrderStatus.Filled,
- FillQuantity = order.Quantity
+ FillQuantity = order.Quantity,
+ Message = tag
};
// Process this order event