ib.reqHistoricalData 运行缓慢(在 barSizeSetting='5 秒' 中无法工作)

2024-10-03 13:21:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要将barSizeSetting='30 secs'更改为barSizeSetting='5 secs'。但是,该代码会收到一条错误消息(通常会丢失连接),其大小小于30秒。这很可能是因为代码太慢。下面的代码使用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)

这段代码大部分来自ibu insync论坛。是否有任何高级Python开发人员有任何想法可以使代码更快?我什么都愿意

多谢各位


Tags: 代码inimportdfdatetimeutildtstart