def generate_contract(sec_type, filename: str, **kwargs): ib = get_cached_ib_client(os.environ["TWS_USERNAME"], os.environ["TWS_PASSWORD"]) [contract ] = ib.qualifyContracts(Contract.create(secType=sec_type, **kwargs)) [details] = ib.reqContractDetails(contract=contract) with open(CONTRACT_PATH / f"{filename}.pkl".lower(), "wb") as f: f.write(pickle.dumps(details))
def lookup_futures(self, obj: List[Future]) -> List[Future]: futures = [] for o in obj: o.update(includeExpired=True) futures.append( [Contract.create(**c.contract.dict()) for c in self.ib.reqContractDetails(o)] ) return list(itertools.chain(*futures))
def create_objects(self) -> None: self.objects = [Contract.create(**s) for s in self.symbols] self.non_futures = [ obj for obj in self.objects if not isinstance(obj, Future)] log.debug(f'non-futures: {self.non_futures}') self.futures = [obj for obj in self.objects if isinstance(obj, Future)] log.debug(f'futures: {self.futures}') # converting Futures to ContFutures self.contFutures = [] for obj in self.futures: params = obj.nonDefaults() del params['secType'] self.contFutures.append(ContFuture(**params)) log.debug(f'contfutures: {self.contFutures}')
def make_contract(self, **kwargs) -> Contract: return Contract.create(**kwargs)