async def get_cont_fute( self, symbol: str, exchange: str, ) -> Contract: """Get an unqualifed contract for the current "continous" future. """ contcon = ibis.ContFuture(symbol, exchange=exchange) frontcon = (await self.ib.qualifyContractsAsync(contcon))[0] return ibis.Future(conId=frontcon.conId)
def _futuresContract(future: Future) -> IB.Contract: lastTradeDate = future.expiration.strftime("%Y%m%d") return IB.Future( symbol=future.symbol, exchange=future.exchange or "", currency=future.currency.name, multiplier=str(future.multiplier), lastTradeDateOrContractMonth=lastTradeDate, )
import ib_insync import datetime ib = ib_insync.IB() ib.connect() futures = [ ib_insync.Future("ES", "CFE", localSymbol=s) for s in ["ESU8","ESZ8"]] last_lengths = {} def onBarUpdate(bars, hasNewBar): if hasNewBar: print("New bar for", bars.contract.localSymbol) ib.qualifyContracts(*futures) for f in futures: print(f) if 0: bars = ib.reqHistoricalData( f, endDateTime='', durationStr='900 S', barSizeSetting='5 secs', whatToShow='bid', useRTH=True, formatDate=1, keepUpToDate=True) bars = ib.reqRealTimeBars(f, 5, "TRADES", False) last_lengths[f.localSymbol] = 0 ib.barUpdateEvent += onBarUpdate