def down_contract(self): # Download contract from IB and save it to disk # Note: Already have conid from cache try: # Init API ib_cfg = ib_web_api.Configuration() ib_cfg.verify_ssl = False api = ContractApi(ib_web_api.ApiClient(ib_cfg)) # Get contract (name, industry, etc) contract = api.iserver_contract_conid_info_get(self.conid) # Remove unnecessary data contract = { 'conid': contract.con_id, 'category': contract.category, 'industry': contract.industry, } self.contract = contract except ApiException as e: raise e try: # Save contract to disk with open(self.cfg['dir_contracts'] + '/' + self.symbol + '.json', 'w') as f: f.write(json.dumps(contract)) except ApiException as e: raise 'Could not save contract: ' + e return self.contract
def down_conid(self): # API: Get conid for symbol if self.conid is None: # Download conid config = ib_web_api.Configuration() config.verify_ssl = False api = ContractApi(ib_web_api.ApiClient(config)) # Main try: # Get conid conid = int response = api.iserver_secdef_search_post({ "symbol": self.symbol }) for item in response: if item.description == 'NASDAQ': self.conid = item.conid except ApiException as e: if self.conid is not None: detail = self.conid else: detail = self.symbol raise Exception('Could not download conid %s.' % detail) # Save conid to disk with open(self.cfg['dir_conids'] + '/' + self.symbol, 'w') as f: f.write(str(self.conid)) return self.conid
description='Display last day data for ticker') parser.add_argument('tickers', metavar='TICKER', type=str, nargs='+', help='Ticker, e.g. AAPL') args = parser.parse_args() # Instantiate API class config = ib_web_api.Configuration() config.verify_ssl = False client = ib_web_api.ApiClient(config) try: # Get conids api = ContractApi(client) conids = {} for ticker in args.tickers: conid = int response = api.iserver_secdef_search_post({"symbol": ticker}) for item in response: if item.description == 'NASDAQ': conids[ticker] = item.conid except ApiException as e: print("Could not find conid: %s\n" % e) exit(1) try: # Get market data for symbol, conid in conids.items(): api = MarketDataApi(ib_web_api.ApiClient(config))
help='Tickers, e.g. AAPL AMZN') parser.add_argument('-v', dest='verbose', action='store_true', help='Verbose mode, print info messages') parser.add_argument('-s', dest='small', action='store_true', help='Print only result (category), without the ticker') args = parser.parse_args() # Instantiate API class config = ib_web_api.Configuration() config.verify_ssl = False client = ib_web_api.ApiClient(config) api = ContractApi(client) # Main try: # Get conids if args.verbose: print('Get conids') conids = {} for ticker in args.tickers: conid = int try: response = api.iserver_secdef_search_post({"symbol": ticker}) except Exception: # Could not get conid, so skip it continue for item in response:
description='Display last day data for ticker') parser.add_argument('ticker', metavar='TICKER', type=str, help='Ticker, e.g. AAPL') parser.add_argument( '-s', dest='small', action='store_true', help='Print only result (category), without the ticker' ) args = parser.parse_args() # Instantiate API class config = ib_web_api.Configuration() config.verify_ssl = False client = ib_web_api.ApiClient(config) api = ContractApi(client) # Main try: # Get conid conid = int response = api.iserver_secdef_search_post({ "symbol": args.ticker }) for item in response: if item.description == 'NASDAQ': print(item.conid) exit(0) except ApiException as e: # Could not get conid, skip for now print("Could not get conid: %s\n" % e) exit(1)
# Parse args parser = argparse.ArgumentParser( description='Display last day data for ticker') parser.add_argument('tickers', metavar='TICKERS', type=str, nargs='+', help='Tickers, e.g. AAPL AMZN') args = parser.parse_args() # Instantiate API class config = ib_web_api.Configuration() config.verify_ssl = False client = ib_web_api.ApiClient(config) # Get conids try: eprint('Get conids') api = ContractApi(client) conids = {} for ticker in args.tickers: conid = int for j in range(6): # Retry on fail try: response = api.iserver_secdef_search_post({ "symbol": ticker }) for item in response: if item.description == 'NASDAQ': conids[ticker] = item.conid break except Exception: if j == 5: print('Could not get symbol %s' % ticker) failed = True