As I understand, for backtesting all I can see is some traders that happen over aggregation period. What if during some period there are no trades and bid/ask decrease? Imagine bid/ask were 100/101, then 99/100, then 98/99 all without selling a single share? In that kind of case algorithm stays "blind" to price changes until a single share is sold.

For livetrading I'd expect the same problem to exist, but IB most certainly provide all that same stuff that is visible in the ir app (like bid/ask, l2 book etc). Is there a way access that info via QC api?