class Simian(trader): def __init__(self, *args, **kwargs): super(self.__class__, self).__init__(*args, **kwargs) self.__dict__.update({k : eval(v) for k, v in os.environ.items() if k in self.envars}) with open("params.json", 'r') as fp: self.__dict__.update(json.load(fp)[self.args.name]) self.ibkr_init(self.account) self.db = db_connect(self.dbname) self.date = dt.datetime.today() def place_orders(self, symbols, qty): self._submit_order(symbols, qty, ['BUY', 'SELL', 'SELL', 'BUY'], 'MKT', 'DAY', order_class='multileg') def cache(self): self.refresh_lst() self.ibkr_touch() self.chain = self.ibkr_chain(self.underlying, dt.datetime.now()) def trade(self): try: schedule.clear() self.schedule_at(self.cache, '06:00') try: self.bp = self.get_equity() except Exception: logging.error(traceback.format_exc()) print('Failed to retrieve ledger, retrying in 5...') sleep(5) self.bp = self.get_equity() for qty, t in zip(self.qtys, self.times): self.schedule_at(self.open, hour=t.hour, minute=t.minute, qty=int(qty)) self.wait() except Exception: logging.error(traceback.format_exc())