Hello, I tried to add a SMA indicator to my algorith, however the error "AttributeError : attribute is read-only" comes up and I don't know how to fix the problem.

Any help would be appreciated thank you. 

from clr import AddReference AddReference("System") AddReference("QuantConnect.Algorithm") AddReference("QuantConnect.Common") from System import * from QuantConnect import * from QuantConnect.Algorithm import * from QuantConnect.Indicators import * from QuantConnect.Data.Market import TradeBar class RollingWindowAlgorithm(QCAlgorithm): def Initialize(self): self.SetStartDate(2004, 1, 1) #Set Start Date self.SetEndDate(2017, 12, 12) #Set End Date self.SetCash(1000000) #Set Strategy Cash self.SetBrokerageModel(BrokerageName.FxcmBrokerage) self.AddForex("EURUSD", Resolution.Daily) self.window = RollingWindow[QuoteBar](2) # create a bollinger band self.Bolband = self.BB("EURUSD", 20, 0.7, MovingAverageType.Simple, Resolution.Daily) self.Bolband.Updated += self.BolbandUpdated self.BolbandWin = RollingWindow[IndicatorDataPoint](5) # create a simple moving average self.SMA = self.SMA("EURUSD", 50, Resolution.Daily) self.SMA.Updated += self.SMAUpdated self.SMAWin = RollingWindow[IndicatorDataPoint](5) # set warmup period self.SetWarmUp(20) def BolbandUpdated(self, sender, updated): '''Adds updated values to rolling window''' self.BolbandWin.Add(updated) def SMAUpdated(self, sender, updated): self.SMAWin.Add(updated) def OnData(self, data): self.window.Add(data["EURUSD"]) if not (self.window.IsReady and self.BolbandWin.IsReady): return holdings = self.Portfolio["EURUSD"].Quantity price = self.window[0].Close previousPrice = self.window[1].Close Buy_below_lowerband = (previousPrice <= self.Bolband.LowerBand.Current.Value) and (price > self.Bolband.LowerBand.Current.Value) Liquidate_at_middleband_from_lowerband = (previousPrice > self.Bolband.MiddleBand.Current.Value and price == self.Bolband.MiddleBand.Current.Value) Go_Long = (previousPrice < self.SMA.Current.Value and price == self.SMA.Current.Value) Go_Short = (previousPrice > self.SMA.Current.Value and price == self.SMA.Current.Value) if holdings <= 0: if Buy_below_lowerband: self.SetHoldings("EURUSD", 1.0) if previousPrice == self.SMA.Current.Value and price < self.SMA.Current.Value: self.Liquidate() self.SetHoldings("EURUSD", -1.0) if Go_Long: self.Liquidate() elif Liquidate_at_middleband_from_lowerband: self.Liquidate() if previousPrice >= self.Bolband.UpperBand.Current.Value and price < self.Bolband.UpperBand.Current.Value: self.SetHoldings("EURUSD", -1.0) if previousPrice == self.SMA.Current.Value and price > self.SMA.Current.Value: self.Liquidate() self.SetHoldings("EURUSD", 1.0) if Go_Short: self.Liquidate elif Liquidate_at_middleband_from_lowerband: self.Liquidate() if holdings > 0: if previousPrice >= self.Bolband.UpperBand.Current.Value and price < self.Bolband.UpperBand.Current.Value: self.SetHoldings("EURUSD", -1.0) if previousPrice == self.SMA.Current.Value and price > self.SMA.Current.Value: self.Liquidate() self.SetHoldings("EURUSD", 1.0) if Go_Short: self.Liquidate elif Liquidate_at_middleband_from_lowerband: self.Liquidate() if Buy_below_lowerband: self.SetHoldings("EURUSD", 1.0) if previousPrice == self.SMA.Current.Value and price < self.SMA.Current.Value: self.Liquidate() self.SetHoldings("EURUSD", -1.0) if Go_Long: self.Liquidate elif Liquidate_at_middleband_from_lowerband: self.Liquidate()

Author