reqHistoricalData
的时间间隔是不正确的,它不能每5秒检索一次"barSizeSetting='5 secs'"
,但是使用reqRealTimeBars
检索数据时,可以每5秒检索一次数据。请随时评论如何解决这个问题。
测试用例
ib_insync初始化
from ib_insync import *
import random
util.startLoop()
random_id = random.randint(0, 9999)
ib = IB()
ib.connect('127.0.0.1', 7497, clientId=random_id, timeout=0)
contract = Forex('EURUSD')
带有 reqHistoricalData的条
bars = ib.reqHistoricalData(
contract,
endDateTime='',
durationStr='1500 S',
barSizeSetting='5 secs',
whatToShow='MIDPOINT',
useRTH=True,
formatDate=1,
keepUpToDate=True,
)
def onBarUpdate(bars, hasNewBar):
print(bars[-1])
# Set callback function for streaming bars
bars.updateEvent += onBarUpdate
ib.sleep(60)
ib.cancelHistoricalData(bars)
结果与reqHistoricalData
BarData(date=datetime.datetime(2022, 3, 29, 15, 50, 5), open=1.10055, high=1.1006, low=1.10055, close=1.10055, volume=-1.0, average=-1.0, barCount=-1)
BarData(date=datetime.datetime(2022, 3, 29, 15, 50, 10), open=1.10055, high=1.10055, low=1.10055, close=1.10055, volume=-1.0, average=-1.0, barCount=-1)
BarData(date=datetime.datetime(2022, 3, 29, 15, 50, 10), open=1.10055, high=1.1006, low=1.10055, close=1.10055, volume=-1.0, average=-1.0, barCount=-1)
BarData(date=datetime.datetime(2022, 3, 29, 15, 50, 15), open=1.10055, high=1.10055, low=1.10055, close=1.10055, volume=-1.0, average=-1.0, barCount=-1)
BarData(date=datetime.datetime(2022, 3, 29, 15, 50, 15), open=1.10055, high=1.1006, low=1.10055, close=1.1006, volume=-1.0, average=-1.0, barCount=-1)
BarData(date=datetime.datetime(2022, 3, 29, 15, 50, 20), open=1.1006, high=1.1006, low=1.1006, close=1.1006, volume=-1.0, average=-1.0, barCount=-1)
BarData(date=datetime.datetime(2022, 3, 29, 15, 50, 20), open=1.1006, high=1.1007, low=1.10055, close=1.1007, volume=-1.0, average=-1.0, barCount=-1)
BarData(date=datetime.datetime(2022, 3, 29, 15, 50, 25), open=1.1007, high=1.1007, low=1.1007, close=1.1007, volume=-1.0, average=-1.0, barCount=-1)
BarData(date=datetime.datetime(2022, 3, 29, 15, 50, 25), open=1.1007, high=1.1007, low=1.10065, close=1.1007, volume=-1.0, average=-1.0, barCount=-1)
BarData(date=datetime.datetime(2022, 3, 29, 15, 50, 30), open=1.1007, high=1.1007, low=1.1007, close=1.1007, volume=-1.0, average=-1.0, barCount=-1)
带有 reqRealTimeBars的条
bars = ib.reqRealTimeBars(contract, 5, 'MIDPOINT', False)
def onBarUpdate(bars, hasNewBar):
print(bars[-1])
# Set callback function for streaming bars
bars.updateEvent += onBarUpdate
ib.sleep(60)
ib.cancelHistoricalData(bars)
结果与reqRealTimeBars
RealTimeBar(time=datetime.datetime(2022, 3, 29, 7, 52, 5, tzinfo=datetime.timezone.utc), endTime=-1, open_=1.100135, high=1.100195, low=1.100115, close=1.10017, volume=-1.0, wap=-1.0, count=-1)
RealTimeBar(time=datetime.datetime(2022, 3, 29, 7, 52, 10, tzinfo=datetime.timezone.utc), endTime=-1, open_=1.10017, high=1.100185, low=1.10012, close=1.10015, volume=-1.0, wap=-1.0, count=-1)
RealTimeBar(time=datetime.datetime(2022, 3, 29, 7, 52, 15, tzinfo=datetime.timezone.utc), endTime=-1, open_=1.10015, high=1.100165, low=1.10007, close=1.10007, volume=-1.0, wap=-1.0, count=-1)
RealTimeBar(time=datetime.datetime(2022, 3, 29, 7, 52, 20, tzinfo=datetime.timezone.utc), endTime=-1, open_=1.10007, high=1.10011, low=1.10007, close=1.100105, volume=-1.0, wap=-1.0, count=-1)
RealTimeBar(time=datetime.datetime(2022, 3, 29, 7, 52, 25, tzinfo=datetime.timezone.utc), endTime=-1, open_=1.100105, high=1.100105, low=1.10003, close=1.100055, volume=-1.0, wap=-1.0, count=-1)
RealTimeBar(time=datetime.datetime(2022, 3, 29, 7, 52, 30, tzinfo=datetime.timezone.utc), endTime=-1, open_=1.100055, high=1.10006, low=1.100025, close=1.10003, volume=-1.0, wap=-1.0, count=-1)
RealTimeBar(time=datetime.datetime(2022, 3, 29, 7, 52, 35, tzinfo=datetime.timezone.utc), endTime=-1, open_=1.10003, high=1.100075, low=1.10003, close=1.100055, volume=-1.0, wap=-1.0, count=-1)
RealTimeBar(time=datetime.datetime(2022, 3, 29, 7, 52, 40, tzinfo=datetime.timezone.utc), endTime=-1, open_=1.100055, high=1.100075, low=1.100045, close=1.10005, volume=-1.0, wap=-1.0, count=-1)
RealTimeBar(time=datetime.datetime(2022, 3, 29, 7, 52, 45, tzinfo=datetime.timezone.utc), endTime=-1, open_=1.10005, high=1.10006, low=1.100025, close=1.10006, volume=-1.0, wap=-1.0, count=-1)
RealTimeBar(time=datetime.datetime(2022, 3, 29, 7, 52, 50, tzinfo=datetime.timezone.utc), endTime=-1, open_=1.10006, high=1.10008, low=1.10006, close=1.100075, volume=-1.0, wap=-1.0, count=-1)
RealTimeBar(time=datetime.datetime(2022, 3, 29, 7, 52, 55, tzinfo=datetime.timezone.utc), endTime=-1, open_=1.100075, high=1.10008, low=1.100035, close=1.100055, volume=-1.0, wap=-1.0, count=-1)
发布于 2022-05-21 04:25:16
确保时间为UTC,或者您的时间与zones.
https://stackoverflow.com/questions/71659267
复制相似问题