Hello QuantConnect Community! We have a question, we are trying to do is choosing a universe of 10 companies, and consolidating the bars in bars of 30 minutes. Save the first bar from 9 to 9:30 and if the price is above the High of the first bar (opening bar) then it will buy. Then we create an trailing stop that closes the transactions (0.95 from the highest price) by selling if the price falls by 5% (0.95 of the high). The problem is that the trailing stop is not being executed, and is apparently consolidating only 2 tickers. I leave my code here, I hope you can help me!

class DynamicOptimizedContainmentField(QCAlgorithm):
    def Initialize(self):
        self.stopMarketTicket = None
        self.stopMarketOrderFillTime = datetime.min
        self.highestPrice = 0
        self.SetStartDate(2021, 3, 26)  # Set Start Date\
        self.SetEndDate(2021, 4, 26)
        self.SetCash(1000000)  # Set Strategy Cash
        self.UniverseSettings.Resolution = Resolution.Minute
        self.UniverseSettings.Leverage = 2
        self.symbols = {}
        self.stopPrice = self.GetParameter("stop")
    def SelectCoarse(self, coarse):
        sortedCoarse = sorted(coarse, key=lambda c:c.DollarVolume, reverse=True)
        return [c.Symbol for c in sortedCoarse][:10]
    def OnSecuritiesChanged(self, changes):
        for security in changes.AddedSecurities:
            symbol = security.Symbol
            if symbol not in self.symbols:
                self.symbols[symbol] = SymbolData(self, symbol)
                self.Schedule.On(self.DateRules.EveryDay(symbol), self.TimeRules.At(13,30), self.ClosePositions)
        for security in changes.RemovedSecurities:
            symbol = security.Symbol
            if symbol in self.symbols:
                symbolData = self.symbols.pop(symbol, None)
                self.SubscriptionManager.RemoveConsolidator(symbol, symbolData.consolidator)
    def OnData(self, data):
        for symbol, symbol_data in self.symbols.items():
            if symbol_data.openingBar is None: continue
            if not data.Bars.ContainsKey(symbol):
            if data.Bars[symbol].Close > symbol_data.openingBar.High and not self.Securities[symbol].Invested:
                quantity = self.CalculateOrderQuantity(symbol, 0.08) # orders 8% of portfolio
                self.MarketOrder(symbol, quantity) 
                self.stopMarketTicket = self.StopMarketOrder(symbol, -self.Portfolio[symbol].Quantity, data[symbol].Close * 0.95)
            if self.Securities[symbol].Invested and data.Bars[symbol].Close > symbol_data.highestPrice:
                self.highestPrice = self.Securities[symbol].Close
                updateFields = UpdateOrderFields()
                updateFields.StopPrice = self.highestPrice * 0.95
    def OnOrderEvent(self, orderEvent):
        if orderEvent.Status != OrderStatus.Filled:
            self.symbols[orderEvent.Symbol].openingBar = None
        if self.symbols[orderEvent.Symbol].stopMarketTicket is not None and self.symbols[orderEvent.Symbol].stopMarketTicket.OrderId == orderEvent.OrderId:
            self.symbols[orderEvent.Symbol].stopMarketOrderFillTime = self.Time
    def ClosePositions(self):
        for symbolData in self.symbols.values():
            symbolData.openingBar = None
        self.Liquidate() # liquidate entire portfolio
    def OnDataConsolidated(self, sender, bar):
        self.Log(f"Bar at {self.Time} for {bar.Symbol}")
        if bar.Time.hour == 9 and bar.Time.minute == 30:
            self.symbols[bar.Symbol].openingBar = bar
class SymbolData:
    def __init__(self, algorithm, symbol):
        self.algorithm = algorithm
        self.symbol = symbol
        self.consolidator = TradeBarConsolidator(timedelta(minutes = 30))
        self.consolidator.DataConsolidated += self.OnDataConsolidated
        self.openingBar = None
        algorithm.SubscriptionManager.AddConsolidator(symbol, self.consolidator)
    def OnDataConsolidated(self, sender, bar):
        self.algorithm.Debug(f"Data Consolidatoed for {self.symbol} at {bar.EndTime} with bar: {bar}")