So, the 'tick' you get from IB is a 250ms snap shot, that has its open, high, low, close, or a mini bar. If it is not high frequency trading, I guess it is enough for most traders.
And the ticker I got through a python API, looks like this:
Ticker(contract=ContFuture(conId=497954518, symbol='MES', lastTradeDateOrContractMonth='20220916', multiplier='5', exchange='GLOBEX', currency='USD', localSymbol='MESU2', tradingClass='MES'), time=datetime.datetime(2022, 8, 24, 10, 38, 53, 559604, tzinfo=datetime.timezone.utc), bid=4130.25, bidSize=14, ask=4130.5, askSize=27, last=4130.25, lastSize=14, prevBid=4130.0, prevBidSize=2, prevAsk=4130.25, prevAskSize=28, prevLast=4130.0, prevLastSize=2, volume=106260, open=4129.0, high=4136.75, low=4110.5, close=4130.5, halted=0.0, ticks=[TickData(time=datetime.datetime(2022, 8, 24, 10, 38, 53, 559604, tzinfo=datetime.timezone.utc), tickType=0, price=4130.25, size=14), TickData(time=datetime.datetime(2022, 8, 24, 10, 38, 53, 559604, tzinfo=datetime.timezone.utc), tickType=3, price=4130.5, size=27)])
While I am wondering which price to be taken as the 'ticker'? last price? It will not matter much in normal time, but there could be big difference during extreme volatile market.