Would this error be due to a data problem or a code problem?
I cant seem to attatch a backtest here is the code snippet
class SupportAndResistance(QCAlgorithm):
UnderlyingTicker = 'SPY'
openingBar = None;
def Initialize(self):
self.SetStartDate(2020, 1, 1)
self.SetEndDate(2020,1,31)
self.SetCash(100000)
self.SetWarmUp(timedelta(7)) # Warm up 7 days of data.
equity = self.AddEquity(self.UnderlyingTicker, Resolution.Minute)
equity.SetDataNormalizationMode(DataNormalizationMode.Raw)
option = self.AddOption(self.UnderlyingTicker)
self.Consolidate(self.UnderlyingTicker, timedelta(1), self.OnDataConsolidated)
self.option_symbol = option.Symbol
# set our strike/expiry filter for this option chain
option.SetFilter(lambda u: u.IncludeWeeklys().Strikes(0, 10).Expiration(timedelta(0), timedelta(7)))
# option.SetFilter(lambda u: (u.Strikes(-2, +2)
# # Expiration method accepts TimeSpan objects or integer for days.
# # The following statements yield the same filtering criteria
# .Expiration(0, 180)))
# #.Expiration(TimeSpan.Zero, TimeSpan.FromDays(180))))
# self.Schedule.On(self.DateRules.EveryDay(self.UnderlyingTicker), self.TimeRules.At(13, 30), self.ClosePositions)
# use the underlying equity as the benchmark
self.SetBenchmark(equity.Symbol)
def OnData(self,slice):
if self.openingBar == None: return
if not self.Portfolio.Invested:
chain = slice.OptionChains.GetValue(self.option_symbol)
if chain is None:
return
contracts_put = sorted(sorted(sorted(chain, \
key = lambda x: abs(chain.Underlying.Price - x.Strike)), \
key = lambda x: x.Expiry, reverse=False), \
key = lambda x: x.Right, reverse=True)
contracts_call = sorted(sorted(sorted(chain, \
key = lambda x: abs(chain.Underlying.Price - x.Strike)), \
key = lambda x: x.Expiry, reverse=False), \
key = lambda x: x.Right, reverse=False)
if len(contracts_put) == 0: return
self.symbol_put = contracts_put[0].Symbol
if len(contracts_call) == 0: return
self.symbol_call = contracts_call[0].Symbol
if slice[self.UnderlyingTicker].Close >= (self.openingBar.High - .10):
self.MarketOrder(self.symbol_put, 10)
if self.Portfolio.Invested:
option_invested = [x.Key.Value for x in self.Portfolio if x.Value.Invested and x.Value.Type==SecurityType.Option]
# Print to log
for contract in option_invested:
self.c = contract
quantity = self.Portfolio[contract].Quantity
lastPrice = self.Securities[contract].Price
if self.Securities[contract].BidPrice > (self.Securities[contract].Holdings.AveragePrice + .10):
self.Debug('Here')
self.Liquidate(contract)
self.openingBar = None
if self.Securities[contract].Holdings.AveragePrice < self.Securities[contract].BidPrice - .20:
self.Debug('Here')
self.Liquidate(contract)
self.openingBar = None
def OnOrderEvent(self, orderEvent):
self.Log(str(orderEvent))
def OnDataConsolidated(self, bar):
self.openingBar = bar
To unlock posting to the community forums please complete at least 30% of Boot Camp.
You can continue your Boot Camp training progress from the terminal. We hope to see you in the community soon!