I'm getting runtime errors on the basic futures template.

Runtime Error: AttributeError : 'datetime.datetime' object has no attribute 'Date' at OnData
 

def OnData(self, slice): if not self.Portfolio.Invested: for chain in slice.FutureChains: # find the front contract expiring no earlier than in 90 days contracts = [ i for i in chain.Value if i.Expiry > self.Time.Date.AddDays(180) ] # if thre is more than one contract, trade the one woth the closes expire date if len(contracts) > 0: contract = sorted(contracts, key=lambda x: x.Volume, reverse=False)[0] self.MarketOrder(contract.Symbol, 1);

Then, if I modify the line to remedy the error (simply putting contracts = chain.Values.Contracts), I get the following TypeError:

Runtime Error: TypeError : object of type 'FuturesContracts' has no len()

    def OnData(self, slice):         if not self.Portfolio.Invested:             for chain in slice.FutureChains: contracts = chain.Values.Contracts                 if len(contracts) > 0:                     contract = sorted(contracts, key=lambda x: x.Volume, reverse=False)[0]                     self.MarketOrder(contract.Symbol, 1);         else:             self.Liquidate();

 

I'm just trying to change the code from sorting by expiry to sorting by volume. Seems like it should be simple but I'm running into some difficulties, obviously.

 

 

 

Author