This code is just for learning purpose, and I'm wondering why the first order executed on the first day is the sell at market close order not the buy at market open? Any one can advise how to fix it?

And why when placing market on close order 5 or 10 minutes before market close time, it doesn't execute, however as per algorithm reference it says 2 min before market close should be enough?


class DailyBuySellSPY(QCAlgorithm):
   def Initialize(self):
       self.SetStartDate(2021, 11, 1)  # Set Start Date
       self.SetEndDate(2021, 11, 30)  # Set End Date
       
       self.SetCash(100000)  # Set Strategy Cash
       
       Symbol = "SPY"
       self.symbol = self.AddEquity(Symbol).Symbol
       
       self.Schedule.On(self.DateRules.EveryDay(self.symbol), self.TimeRules.AfterMarketOpen (self.symbol, -30), self.ExecuteBuy)
       self.Schedule.On(self.DateRules.EveryDay(self.symbol), self.TimeRules.BeforeMarketClose (self.symbol, 30), self.ExecuteSell)
       
   def ExecuteBuy (self):
      self.MarketOnOpenOrder(self.symbol, 100)
       
   def ExecuteSell (self):
      self.MarketOnCloseOrder(self.symbol, -100)