We have found and fixed the problem. Fix will be in version 10.5.6 which we should be releasing later today. Turns out, IB sends a volume number which must be multiplied by 100 for stocks on most exchanges. However, there are a few exceptions that we must handle. The exchange SEHK is one of those exceptions. We should be leaving the raw volume sent alone when in fact we were multiplying by 100. Thanks for pointing this out.
hmm, that is strange, cause the end-of-day volume in IB is same as Yahoo finance, and also same as Hong Kong exchange website, while the volume in IRT is 100 times more.
also for your reference,
I tried to use the IB ActiveX API sample program to receive tick data from TWS, and confirmed the data sent out from TWS is "without multiplied by 100".
for example, when I see the last trade size in IB API sample program is "3000", IRT will show "300000"
anyway, right now, what I do is:
at end-of-day, I export all tick data from IRT for all stocks, and wrote a small program to modify the "last trade size" (divide by 100), and then, import the tick data series back into IRT.
again, so far, this problem only happen on HK stocks.
I monitor HK stocks and some futures listed in KRX, SGX and HK, ALL futures are OK, except one small issue:
if I restart IB and IRT during trading hours, the moment IRT make connection with IB TWS, IRT will show some strange big numbers of "last trade size" on all futures contracts, which totally mess up the intraday chart volume pane and volume indicators. (but this can be fixed quickly by doing a backfill.)