HI, so I am a new student at quantconnnect, and I was making a basic model. In this model I need the values of 10% above SPY's moving average and I'm not sure what esactly to do. I have attached the code down below
class MultidimensionalTransdimensionalPrism(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2010, 2, 1) # Start and End Date for Stocks
self.SetEndDate(2020, 1, 1)
self.SetCash(10000) # Set Amount of Money to be used
self.AddEquity("SPY", Resolution.Hour) # SPY, etf
self.AddEquity("TLT", Resolution.Hour) # Bonds TLT
# self.AddEquity("TVIX", Resolution.Hour)
self._sma = self.SMA("SPY", 50, Resolution.Daily)
self._smab = self.SMA("SPY", 10, Resolution.Daily)
self._smabg = self.SMA("SPY", 200, Resolution.Daily)
self._smabe = self.SMA("TLT", 200, Resolution.Daily)
self.smi = self._smabg * 1.1
self.smo = self._smabe * 1.1
self.rebal = 4 # Rebalance every 4 weeks
self.rebalTimer = self.rebal - 1 # Initialize to trigger first week
self.flag1 = 0 # Flag to initate trades
# Increment rebalance timer at every week start
self.Schedule.On(self.DateRules.WeekStart("SPY"), self.TimeRules.AfterMarketOpen("SPY", 150), self.Rebalance)
def OnData(self, data):
if self.flag1 == 1:
if data["SPY"].Close > self._smabg.Current.Value and self._smab > self._sma:
x = 1
self.rebalTimer = 0
elif data["SPY"].Close > self._smabg.Current.Value and self._smab < self._sma:
self.SetHoldings("SPY", .7, True)
self.SetHoldings("TLT", .3, True)
self.rebalTimer = 0
elif data["SPY"].Close < self._smabg.Current.Value and self._smab > self._sma:
self.SetHoldings("SPY", .3, True)
self.SetHoldings("TLT", .7, True)
self.rebalTimer = 0
else:
x = 2
if x == 1:
if data["SPY"].Close > self.smi:
self.SetHoldings("TLT", 1, True)
else:
self.SetHoldings("SPY", 1, True)
if x == 2:
if data["TLT"].Close > self.smo:
self.SetHoldings("SPY", 1, True)
else:
self.SetHoldings('TLT', 1)
self.flag1 = 0
def Rebalance(self):
self.rebalTimer +=1
if self.rebalTimer == self.rebal:
self.flag1 = 1