The program will not liquidate after the window has initialized it will only buy and hold.  What am I missing?

def Initialize(self):
       self.SetStartDate(2020, 1, 1)
       self.SetEndDate(2023, 9, 15)
       self.SetCash(3000)
       self.SettingsFreePortfolioValuePercentage = 10
       self.SetExecution(ImmediateExecutionModel())
       self.symbol = self.AddEquity("SPY", Resolution.Daily, dataNormalizationMode=DataNormalizationMode.Raw).Symbol
       self.SetWarmUp(timedelta(7))
       self.close_window = RollingWindow[float](7)
       
   def OnData(self, data):
       if self.IsWarmingUp: return
       
       else: 
           quantity = self.CalculateOrderQuantity(self.symbol, 0.4)
           trade_bars = self.History[TradeBar](self.symbol, 7)
           
           self.close_window.Size = 7
           
           if not self.close_window.IsReady:
               self.close_window.Add(data[self.symbol].Close)
           else:
               current_close = self.close_window[0]
               oldest_close = self.close_window[self.close_window.Count-1]
               if current_close > oldest_close: 
                   if not self.Portfolio.Invested: self.MarketOrder(self.symbol, quantity)
               elif current_close < oldest_close: 
                   if self.Portfolio.Invested: self.Liquidate(self.symbol)