As a dry run at taking an algo live, I took a (only very slightly modified) bootcamp solution and tried to launch it on to Alpaca paper trading. 
 

class OvernightBeatdown(QCAlgorithm):

def Initialize(self):
self.SetStartDate(2017, 11, 1)
self.SetEndDate(2018, 7, 1)
self.SetCash(100000)
self.AddEquity("TSLA", Resolution.Minute)

self.Schedule.On(self.DateRules.EveryDay(), self.TimeRules.BeforeMarketClose("TSLA", 0), self.ClosingBar)
self.Schedule.On(self.DateRules.EveryDay(), self.TimeRules.AfterMarketOpen("TSLA", 1), self.OpeningBar)
self.Schedule.On(self.DateRules.EveryDay(), self.TimeRules.AfterMarketOpen("TSLA", 45), self.ClosePositions)

self.action = 0

self.window = RollingWindow[TradeBar](2)

# Warmup for 5K bars ("periods") of your security resolution
self.SetWarmUp(5000)

#1. Create a manual Standard Deviation indicator to track recent volatility
self.volatility = StandardDeviation("TSLA", 60)

def OnData(self, data):
if data["TSLA"] is not None:
#2. Update our standard deviation indicator manually with algorithm time and TSLA's close price
self.volatility.Update(self.Time, data["TSLA"].Close)

def OpeningBar(self):
if "TSLA" in self.CurrentSlice.Bars:
self.window.Add(self.CurrentSlice["TSLA"])

#3. Use IsReady to check if both volatility and the window are ready, if not ready 'return'
if not self.window.IsReady or not self.volatility.IsReady:
return

delta = self.window[0].Open - self.window[1].Close

#4. Save an approximation of standard deviations to our deviations variable by dividing delta by the current volatility value:
# Normally this is delta from the mean, but we'll approximate it with current value for this lesson.
deviations = delta / self.volatility.Current.Value

#5. SetHoldings to 100% TSLA if deviations is less than -3 standard deviations from the mean:
if deviations < -3:
self.SetHoldings("TSLA", 1)
self.action = self.action + 1

self.Plot("Action", "Opertunity", self.action)
self.Debug("Opening Price Collected")

def ClosePositions(self):
self.Liquidate()
self.Debug("Holdings Liquidated")

def ClosingBar(self):
self.window.Add(self.CurrentSlice["TSLA"])
self.Debug("Closeing Price Collected")

It backtests fine, what when it goes live, I get this error at the first EOD:

 

at QuantConnect.Ex: tendedDictionary`1[T].get_Item (System.String ticker) [0x00020] in <4fc3bcd66016475d97c581dc9193f674>:0
at (wrapper manage: d-to-native) System.Reflection.MonoMethod.InternalInvoke(System.Reflection.MonoMethod,object,object[],System.Exception&)
at System.Reflecti: on.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00032] in <b0e1ad7573a24fd5a9f2af9595e677e7>:0
2020-06-15 20:00:04 : Runtime Error: LiveTradingRealTimeHandler.Run(): There was an error in a scheduled event EveryDay: TSLA: 0 min before MarketClose. The error was KeyNotFoundException : 'TSLA' wasn't found in the Slice object, likely because there was no-data at this moment in time and it wasn't possible to fillforward historical data. Please check the data exists before accessing it with data.ContainsKey("TSLA")
at QuantConnect.Da: ta.Slice.get_Item (QuantConnect.Symbol symbol) [0x00028] in <4fc3bcd66016475d97c581dc9193f674>:0
at QuantConnect.Ex: tendedDictionary`1[T].get_Item (System.String ticker) [0x00020] in <4fc3bcd66016475d97c581dc9193f674>:0
at (wrapper manage: d-to-native) System.Reflection.MonoMethod.InternalInvoke(System.Reflection.MonoMethod,object,object[],System.Exception&)
at System.Reflecti: on.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00032] in <b0e1ad7573a24fd5a9f2af9595e677e7>:0 : StackTrace: System.Exception: LiveTradingRealTimeHandler.Run(): There was an error in a scheduled event EveryDay: TSLA: 0 min before MarketClose. The error was KeyNotFoundException : 'TSLA' wasn't found in the Slice object, likely because there was no-data at this moment in time and it wasn't possible to fillforward historical data. Please check the data exists before accessing it with data.ContainsKey("TSLA")
at QuantConnect.Da: ta.Slice.get_Item (QuantConnect.Symbol symbol) [0x00028] in <4fc3bcd66016475d97c581dc9193f674>:0
at QuantConnect.Ex: tendedDictionary`1[T].get_Item (System.String ticker) [0x00020] in <4fc3bcd66016475d97c581dc9193f674>:0
at (wrapper manage: d-to-native) System.Reflection.MonoMethod.InternalInvoke(System.Reflection.MonoMethod,object,object[],System.Exception&)
at System.Reflecti: on.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00032] in <b0e1ad7573a24fd5a9f2af9595e677e7>:0

Is there a different way that I should be acessing the price at the close of regular trading hours?