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))
Beispiel #2
0
 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))
Beispiel #3
0
    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}')
Beispiel #4
0
 def make_contract(self, **kwargs) -> Contract:
     return Contract.create(**kwargs)