https://www.vnpy.com/forum/topic/3751?page=2
这两个问题,会不会是同一个问题??
https://www.vnpy.com/forum/topic/3751?page=2
这两个问题,会不会是同一个问题??
在ib_gateway.py中加入print
def historicalData(self, reqId: int, ib_bar: IbBarData):
"""
Callback of history data update.
"""
print(ib_bar.date) #就是这里加入
dt = datetime.strptime(ib_bar.date, "%Y%m%d %H:%M:%S")
dt = self.local_tz.localize(dt)
bar = BarData(
symbol=self.history_req.symbol,
exchange=self.history_req.exchange,
datetime=dt,
interval=self.history_req.interval,
volume=ib_bar.volume,
open_price=ib_bar.open,
high_price=ib_bar.high,
low_price=ib_bar.low,
close_price=ib_bar.close,
gateway_name=self.gateway_name
)
self.history_buf.append(bar)
然后运行后:
ERROR -1 2106 HMDS data farm connection is OK:ushmds
ERROR -1 2158 Sec-def data farm connection is OK:secdefhk
2021-03-09 16:30:00
Exception in thread Thread-4:
Traceback (most recent call last):
File "C:\vnstudio\lib\threading.py", line 917, in _bootstrap_inner
self.run()
File "C:\vnstudio\lib\threading.py", line 865, in run
self._target(*self._args, **self._kwargs)
File "C:\vnstudio\lib\site-packages\vnpy\gateway\ib\ib_gateway.py", line 833, in run
self.decoder.interpret(fields)
File "C:\vnstudio\lib\site-packages\ibapi\decoder.py", line 1280, in interpret
handleInfo.processMeth(self, iter(fields))
File "C:\vnstudio\lib\site-packages\ibapi\decoder.py", line 517, in processHistoricalDataMsg
self.wrapper.historicalData(reqId, bar)
File "C:\vnstudio\lib\site-packages\vnpy\gateway\ib\ib_gateway.py", line 606, in historicalData
dt = datetime.strptime(ib_bar.date, "%Y%m%d %H:%M:%S")
File "C:\vnstudio\lib\_strptime.py", line 578, in _strptime_datetime
tt, fraction, gmtoff_fraction = _strptime(data_string, format)
File "C:\vnstudio\lib\_strptime.py", line 359, in _strptime
(data_string, format))
ValueError: time data '20210309' does not match format '%Y%m%d %H:%M:%S'
20210309
后面的都是一样的,但多了这一行
2021-03-09 16:30:00
这是我设定的开始时间。
当
print(ib_bar)
输出的内容变成了
2021-03-12 16:25:05.089920 服务器时间: 2021-03-12 16:25:02.000000
2021-03-09 16:30:00
Date: 20210309, Open: 64.810000, High: 64.950000, Low: 63.630000, Close: 64.010000, Volume: 187650, Average: 64.272000, BarCount: 81660
怎么感觉我想要的是分钟数据,他给了我日线数据??
我明白了,是我把interval=Interval.MINUTE
参数给错了。
但是,当我要求分钟数据的时候
Date: 20210311 05:53:00, Open: 64.680000, High: 64.690000, Low: 64.640000, Close: 64.650000, Volume: 108, Average: 64.662000, BarCount: 57
Date: 20210311 05:54:00, Open: 64.650000, High: 64.670000, Low: 64.650000, Close: 64.660000, Volume: 65, Average: 64.659000, BarCount: 30
Date: 20210311 05:55:00, Open: 64.660000, High: 64.660000, Low: 64.630000, Close: 64.640000, Volume: 117, Average: 64.645000, BarCount: 50
Date: 20210311 05:56:00, Open: 64.650000, High: 64.670000, Low: 64.630000, Close: 64.650000, Volume: 83, Average: 64.652000, BarCount: 45
Date: 20210311 05:57:00, Open: 64.660000, High: 64.660000, Low: 64.640000, Close: 64.640000, Volume: 38, Average: 64.651000, BarCount: 35
Date: 20210311 05:58:00, Open: 64.650000, High: 64.670000, Low: 64.640000, Close: 64.660000, Volume: 52, Average: 64.655000, BarCount: 36
Date: 20210311 05:59:00, Open: 64.660000, High: 64.710000, Low: 64.660000, Close: 64.690000, Volume: 82, Average: 64.682000, BarCount: 31
[BarData(gateway_name='IB', symbol='CL-20210322-USD-FUT', exchange=<Exchange.NYMEX: 'NYMEX'>, datetime=datetime.datetime(2021, 3, 9, 22, 30, tzinfo=<DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>), interval=<Interval.MINUTE: '1m'>, volume=1527, open_interest=0, open_price=64.81, high_price=64.81, low_price=64.71, close_price=64.75), BarData(gateway_name='IB', symbol='CL-20210322-USD-FUT', exchange=<Exchange.NYMEX: 'NYMEX'>, datetime=datetime.datetime(2021, 3, 9, 22, 31, tzinfo=<DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>), interval=<Interval.MINUTE: '1m'>, volume=2061, open_interest=0, open_price=64.74, high_price=64.75, low_price=64.58, close_price=64.65), BarData(gateway_name='IB', symbol='CL-20210322-USD-FUT', exchange=<Exchange.NYMEX: 'NYMEX'>, datetime=datetime.datetime(2021, 3, 9, 22, 32, tzinfo=<DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>), interval=<Interval.MINUTE: '1m'>, volume=1064, open_interest=0, open_price=64.65, high_price=64.69, low_price=64.6, close_price=64.65), BarData(gateway_name='IB', symbol='CL-20210322-USD-FUT', exchange=<Exchange.NYMEX: 'NYMEX'>, datetime=datetime.datetime(2021, 3, 9, 22, 33, tzinfo=<DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>), interval=<Interval.MINUTE: '1m'>, volume=1233, open_interest=0, open_price=64.63, high_price=64.64, low_price=64.52, close_price=64.52), BarData(gateway_name='IB', symbol='CL-20210322-USD-FUT', exchange=<Exchange.NYMEX: 'NYMEX'>, datetime=datetime.datetime(2021, 3, 9, 22, 34, tzinfo=<DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>), interval=<Interval.MINUTE: '1m'>, volume=1053, open_interest=0, open_price=64.52, high_price=64.58, low_price=64.51, close_price=64.53), BarData(gateway_name='IB',
5点59分钟之前的数据是整齐的,到后面也就是今天开盘,数据变了
回到
https://www.vnpy.com/forum/topic/3751?page=2
这个问题了。
看起来当天的数据和历史数据是不同的,采用了不同的数据结构。
该咋办???
我弄错了,后面的数据并不是今日的数据,后面的数据和前面的是一样的,前面的数据可能是从后面的数据中提取出来的。这么看来,还是没有当日的一分钟数据。我还以为把后面的数据处理一下就能够解决这个问题呢!!
又试了一下外汇,是有当日的一分钟数据的。
start = datetime.strptime("2021-03-10 16:30:00", "%Y-%m-%d %H:%M:%S")
end = datetime.strptime("2021-03-12 19:30:00", "%Y-%m-%d %H:%M:%S")
print(start)
historyreq = HistoryRequest(
symbol="EUR-USD-CASH",
exchange=Exchange.IDEALPRO,
start=start,
end=end,
interval=Interval.MINUTE
)
bardatalist = engine.main_engine.query_history(historyreq,"IB")
print(bardatalist)
结果是:
Date: 20210312 19:01:00, Open: 1.191755, High: 1.191815, Low: 1.191705, Close: 1.191715, Volume: -1, Average: -1.000000, BarCount: -1
Date: 20210312 19:02:00, Open: 1.191715, High: 1.191755, Low: 1.191615, Close: 1.191615, Volume: -1, Average: -1.000000, BarCount: -1
Date: 20210312 19:03:00, Open: 1.191615, High: 1.191760, Low: 1.191585, Close: 1.191760, Volume: -1, Average: -1.000000, BarCount: -1
Date: 20210312 19:04:00, Open: 1.191760, High: 1.191815, Low: 1.191725, Close: 1.191760, Volume: -1, Average: -1.000000, BarCount: -1
Date: 20210312 19:05:00, Open: 1.191760, High: 1.191930, Low: 1.191760, Close: 1.191905, Volume: -1, Average: -1.000000, BarCount: -1
[BarData(gateway_name='IB', symbol='EUR-USD-CASH', exchange=<Exchange.IDEALPRO: 'IDEALPRO'>, datetime=datetime.datetime(2021, 3, 11, 6, 15, tzinfo=<DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>), interval=<Interval.MINUTE: '1m'>, volume=-1, open_interest=0, open_price=1.19272, high_price=1.192755, low_price=1.191865, close_price=1.192745), BarData(gateway_name='IB', symbol='EUR-USD-CASH', exchange=<Exchange.IDEALPRO: 'IDEALPRO'>, datetime=datetime.datetime(2021, 3, 11, 6, 16, tzinfo=<DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>), interval=<Interval.MINUTE: '1m'>, volume=-1, open_interest=0, open_price=1.192745, high_price=1.19284, low_price=1.192745, close_price=1.19281), BarData(gateway_name='IB', symbol='EUR-USD-CASH', exchange=<Exchange.IDEALPRO: 'IDEALPRO'>, datetime=datetime.datetime(2021, 3, 11, 6, 17, tzinfo=<DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>), interval=<Interval.MINUTE: '1m'>, volume=-1, open_interest=0, open_price=1.19281, high_price=1.19283, low_price=1.19281, close_price=1.192825), BarData(gateway_name='IB', symbol='EUR-USD-CASH', exchange=<Exchange.IDEALPRO: 'IDEALPRO'>, datetime=datetime.datetime
print(ib_bar.date) #就是这里加入
----加了这一行,
好像还是读不了数据
信息通知,代码:321,内容: Error validating request.-'bT' : cause - Date formatting selection of 0 rejected.
跟这个贴子https://www.vnpy.com/forum/topic/3751-qing-jiao-xia-zen-yang-ibying-tou-li-esde-li-shi-shu-ju?page=1
下载数据量0条一样的。
majeste wrote:
print(ib_bar.date) #就是这里加入
----加了这一行,
好像还是读不了数据
信息通知,代码:321,内容: Error validating request.-'bT' : cause - Date formatting selection of 0 rejected.
跟这个贴子https://www.vnpy.com/forum/topic/3751-qing-jiao-xia-zen-yang-ibying-tou-li-esde-li-shi-shu-ju?page=1
下载数据量0条一样的。
原帖的问题是因为使用的商品合约代码不对,可以检查一下合约代码。
青青子荆 wrote:
majeste wrote:
print(ib_bar.date) #就是这里加入
----加了这一行,
好像还是读不了数据
信息通知,代码:321,内容: Error validating request.-'bT' : cause - Date formatting selection of 0 rejected.
跟这个贴子https://www.vnpy.com/forum/topic/3751-qing-jiao-xia-zen-yang-ibying-tou-li-esde-li-shi-shu-ju?page=1
下载数据量0条一样的。
原帖的问题是因为使用的商品合约代码不对,可以检查一下合约代码。
ok,我这边代码没问题。
请贴一下完整的报错信息,可以打印一下HistoryRequest的start和end time比对一下
majeste wrote:
青青子荆 wrote:
majeste wrote:
print(ib_bar.date) #就是这里加入
----加了这一行,
好像还是读不了数据
信息通知,代码:321,内容: Error validating request.-'bT' : cause - Date formatting selection of 0 rejected.
跟这个贴子https://www.vnpy.com/forum/topic/3751-qing-jiao-xia-zen-yang-ibying-tou-li-esde-li-shi-shu-ju?page=1
下载数据量0条一样的。
原帖的问题是因为使用的商品合约代码不对,可以检查一下合约代码。
ok,我这边代码没问题。
青青子荆 wrote:
请贴一下完整的报错信息,可以打印一下HistoryRequest的start和end time比对一下
majeste wrote:青青子荆 wrote:
majeste wrote:
print(ib_bar.date) #就是这里加入
----加了这一行,
好像还是读不了数据
信息通知,代码:321,内容: Error validating request.-'bT' : cause - Date formatting selection of 0 rejected.
跟这个贴子https://www.vnpy.com/forum/topic/3751-qing-jiao-xia-zen-yang-ibying-tou-li-esde-li-shi-shu-ju?page=1
下载数据量0条一样的。
原帖的问题是因为使用的商品合约代码不对,可以检查一下合约代码。
ok,我这边代码没问题。
2021-04-12 17:30:46.869621 信息通知,代码:2106,内容: HMDS data farm connection is OK:ushmds
2021-04-12 17:30:46.869621 信息通知,代码:2158,内容: Sec-def data farm connection is OK:secdefhk
ERROR 3 321 Error validating request.-'bT' : cause - Historical data requested duration is invalid.
2021-04-12 17:30:46.877448 服务器时间: 2021-04-12 17:30:45.000000
2021-04-12 17:30:46.878418 信息通知,代码:321,内容: Error validating request.-'bT' : cause - Historical data requested duration is invalid.
代码如下,从楼上抄的基本上:
req1 = SubscribeRequest("GC-20210628-USD-FUT", Exchange.NYMEX) # 创建行情订阅
engine.main_engine.subscribe(req1, "IB")
start = datetime.strptime("2021-4-8 16:30:00", "%Y-%m-%d %H:%M:%S")
end = datetime.strptime("2021-4-9 17:30:00", "%Y-%m-%d %H:%M:%S")
print(start)
historyreq = HistoryRequest(
symbol="GC-20210628-USD-FUT",
exchange=Exchange.NYMEX,
start=start,
end = end,
interval=Interval.MINUTE
)
bardatalist = engine.main_engine.query_history(historyreq,"IB")
print(bardatalist)
改成这样是这个错误
start = datetime.strptime("2021-4-11 11:30:00", "%Y-%m-%d %H:%M:%S")
end = datetime.strptime("2021-4-12 17:30:00", "%Y-%m-%d %H:%M:%S")
2021-04-11 11:30:00
2021-04-12 18:10:33.027355 信息通知,代码:321,内容: Error validating request.-'bT' : cause - Date formatting selection of 0 rejected.
https://www.vnpy.com/forum/topic/6097-guan-yu-ying-tou-jie-kou-de-zhong-da-wen-ti-fan-kui
参考一下这个问题,有个参数需要修改。
否则得不到非交易时段的数据。
黄裳 wrote:
https://www.vnpy.com/forum/topic/6097-guan-yu-ying-tou-jie-kou-de-zhong-da-wen-ti-fan-kui
参考一下这个问题,有个参数需要修改。
否则得不到非交易时段的数据。
好的,谢谢,我改完之后再来汇报
majeste wrote:
黄裳 wrote:
https://www.vnpy.com/forum/topic/6097-guan-yu-ying-tou-jie-kou-de-zhong-da-wen-ti-fan-kui
参考一下这个问题,有个参数需要修改。
否则得不到非交易时段的数据。
好的,谢谢,我改完之后再来汇报
问题解决,按照黄裳的建议
https://www.vnpy.com/forum/topic/6097-guan-yu-ying-tou-jie-kou-de-zhong-da-wen-ti-fan-kui?page=1#pid21592
然后还有本帖,就可以解决问题。
majeste wrote:
majeste wrote:
黄裳 wrote:
https://www.vnpy.com/forum/topic/6097-guan-yu-ying-tou-jie-kou-de-zhong-da-wen-ti-fan-kui
参考一下这个问题,有个参数需要修改。
否则得不到非交易时段的数据。
好的,谢谢,我改完之后再来汇报问题解决,按照黄裳的建议
https://www.vnpy.com/forum/topic/6097-guan-yu-ying-tou-jie-kou-de-zhong-da-wen-ti-fan-kui?page=1#pid21592
然后还有本帖,就可以解决问题。
不过 interval=Interval.DAILY还是会继续报错,下载日线也仍然会有问题,ValueError: time data '20210322' does not match format '%Y%m%d %H:%M:%S',日线以下的没问题。
majeste wrote:
majeste wrote:
majeste wrote:
黄裳 wrote:
https://www.vnpy.com/forum/topic/6097-guan-yu-ying-tou-jie-kou-de-zhong-da-wen-ti-fan-kui
参考一下这个问题,有个参数需要修改。
否则得不到非交易时段的数据。
好的,谢谢,我改完之后再来汇报问题解决,按照黄裳的建议
https://www.vnpy.com/forum/topic/6097-guan-yu-ying-tou-jie-kou-de-zhong-da-wen-ti-fan-kui?page=1#pid21592
然后还有本帖,就可以解决问题。不过 interval=Interval.DAILY还是会继续报错,下载日线也仍然会有问题,ValueError: time data '20210322' does not match format '%Y%m%d %H:%M:%S',日线以下的没问题。
可参考17和20楼。
xiaohe wrote:
majeste wrote:
majeste wrote:
majeste wrote:
黄裳 wrote:
https://www.vnpy.com/forum/topic/6097-guan-yu-ying-tou-jie-kou-de-zhong-da-wen-ti-fan-kui
参考一下这个问题,有个参数需要修改。
否则得不到非交易时段的数据。
好的,谢谢,我改完之后再来汇报问题解决,按照黄裳的建议
https://www.vnpy.com/forum/topic/6097-guan-yu-ying-tou-jie-kou-de-zhong-da-wen-ti-fan-kui?page=1#pid21592
然后还有本帖,就可以解决问题。不过 interval=Interval.DAILY还是会继续报错,下载日线也仍然会有问题,ValueError: time data '20210322' does not match format '%Y%m%d %H:%M:%S',日线以下的没问题。
请参考17和20楼。
ib_gateway.py里面的625行是这样的,
dt = datetime.strptime(ib_bar.date, "%Y%m%d %H:%M:%S")
从而导致本帖的那段代码报错;
781行是这样的,end_str = end.strftime("%Y%m%d %H:%M:%S"),会在数据日线下载的地方报错。
当设置成不是daily,分钟或者小时线的时候,ib_bar.date的格式没有问题20210423 06:00:00这样的
但是当设置成daily日线的时候,ib_bar.date的格式是20210423这样的,这个是自动生成的格式,没有手动调整的地方,格式不匹配,从而报错。
所以这是twsapi处理的时候日线和其他周期的不一致导致的。
https://www.vnpy.com/forum/topic/3845-qiu-zhu-:cong-ibdu-qu-li-shi-xing-qing-shi-bai-qing-jiao-xia-yuan-yin-ni-duo-xie-~?page=1#pid21512
跟这个一样的。
没想好怎么解决,不过不影响其他周期使用。
可以写个判断语句。判断当为日线的时候,格式是%Y%m%d,否则为%Y%m%d %H:%M:%S。
majeste wrote:
xiaohe wrote:
majeste wrote:
majeste wrote:
majeste wrote:
黄裳 wrote:
https://www.vnpy.com/forum/topic/6097-guan-yu-ying-tou-jie-kou-de-zhong-da-wen-ti-fan-kui
参考一下这个问题,有个参数需要修改。
否则得不到非交易时段的数据。
好的,谢谢,我改完之后再来汇报问题解决,按照黄裳的建议
https://www.vnpy.com/forum/topic/6097-guan-yu-ying-tou-jie-kou-de-zhong-da-wen-ti-fan-kui?page=1#pid21592
然后还有本帖,就可以解决问题。不过 interval=Interval.DAILY还是会继续报错,下载日线也仍然会有问题,ValueError: time data '20210322' does not match format '%Y%m%d %H:%M:%S',日线以下的没问题。
请参考17和20楼。
ib_gateway.py里面的625行是这样的,
dt = datetime.strptime(ib_bar.date, "%Y%m%d %H:%M:%S")
从而导致本帖的那段代码报错;
781行是这样的,end_str = end.strftime("%Y%m%d %H:%M:%S"),会在数据日线下载的地方报错。当设置成不是daily,分钟或者小时线的时候,ib_bar.date的格式没有问题20210423 06:00:00这样的
但是当设置成daily日线的时候,ib_bar.date的格式是20210423这样的,这个是自动生成的格式,没有手动调整的地方,格式不匹配,从而报错。
所以这是twsapi处理的时候日线和其他周期的不一致导致的。https://www.vnpy.com/forum/topic/3845-qiu-zhu-:cong-ibdu-qu-li-shi-xing-qing-shi-bai-qing-jiao-xia-yuan-yin-ni-duo-xie-~?page=1#pid21512
跟这个一样的。
没想好怎么解决,不过不影响其他周期使用。