我需要将barSizeSetting='30 secs'
更改为barSizeSetting='5 secs'
。但是,该代码会收到一条错误消息(通常会失去连接),且任何时间都小于30秒barSize。这很可能是由于代码太慢。下面的代码使用barSizeSetting='30 secs'
非常一致地工作。
from ib_insync import *
import datetime
util.startLoop() # uncomment this line when in a notebook
ib = IB()
ib.connect('127.0.0.1', 7496)
start = datetime.datetime(2019, 6, 20)
end = datetime.datetime.now()
barsList = []
dt = end
contract = Stock('SPY', 'SMART','USD')
while dt > start:
bars = ib.reqHistoricalData(
contract,
endDateTime=dt,
durationStr='600 S',
barSizeSetting='30 secs',
whatToShow='MIDPOINT',
useRTH=True,
formatDate=1)
barsList.append(bars)
dt = bars[0].date
allBars = [b for bars in reversed(barsList) for b in bars]
df = util.df(allBars)
f = open('hist.csv','a')
f.write(str(df) )
print(df)
大部分代码来自ib_insync论坛。是否有任何高级Python开发人员有任何想法可以使此代码更快?我对任何事情都开放。
谢谢