首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用"ib_insync“库检索历史数据时,一个栏的时间段是不正确的。

使用"ib_insync“库检索历史数据时,一个栏的时间段是不正确的。
EN

Stack Overflow用户
提问于 2022-03-29 09:06:16
回答 1查看 729关注 0票数 1

reqHistoricalData的时间间隔是不正确的,它不能每5秒检索一次"barSizeSetting='5 secs'",但是使用reqRealTimeBars检索数据时,可以每5秒检索一次数据。请随时评论如何解决这个问题。

测试用例

ib_insync初始化

代码语言:javascript
运行
复制
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的条

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
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的条

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2022-05-21 04:25:16

确保时间为UTC,或者您的时间与zones.

  • whatToShow='MIDPOINT‘-更改为其他选项。让它成为所有的事物=‘交易’或whatToShow='BID_ASK'

  • useRTH =假
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71659267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档