import pandas as pd
from ib_insync import *
# util.startLoop() # uncomment this line when in a notebook
ib = IB()
ib.connect('127.0.0.1', 7496, clientId=1)
code = "PDD"
contract = Stock(code, exchange="SMART")
bars = ib.reqHistoricalData(contract, endDateTime='20190314 18:30:00', durationStr='1 D',
barSizeSetting='30 secs', whatToShow='MIDPOINT', useRTH=True)
# convert to pandas dataframe:
df = util.df(bars)
print(df[['date', 'open', 'high', 'low', 'close']])
https://github.com/erdewit/ib_insync
http://www.waitingfy.com/archives/5334
date open high low close
0 2019-03-13 21:30:00 27.280 27.840 27.185 27.775
1 2019-03-13 21:30:30 27.775 27.830 27.535 27.745
2 2019-03-13 21:31:00 27.745 27.890 27.725 27.880
3 2019-03-13 21:31:30 27.880 27.895 27.755 27.755
4 2019-03-13 21:32:00 27.755 27.845 27.725 27.845
5 2019-03-13 21:32:30 27.845 27.895 27.805 27.850
6 2019-03-13 21:33:00 27.850 27.855 27.725 27.725
7 2019-03-13 21:33:30 27.725 27.725 27.210 27.225