Пример #1
0
  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
Пример #2
0
 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)
Пример #6
0
# 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