vn.py量化社区
By Traders, For Traders.
Member
avatar
加入于:
帖子: 12
声望: 0

错误日志:触发异常,状态码:<class 'ValueError'>,信息:too many values to unpack (expected 3),OKEXF
请问如何解决?

Member
avatar
加入于:
帖子: 2013
声望: 133

这个问题已经修复了,可以去github上拉取最新的dev分支代码

Member
avatar
加入于:
帖子: 12
声望: 0

xiaohe wrote:

这个问题已经修复了,可以去github上拉取最新的dev分支代码
多谢解答,请问拉取哪个分支代码? 我更新了okexf_gateway.py的代码仍然报错

Member
avatar
加入于:
帖子: 2013
声望: 133

dev分支,已经修复了呀

Member
avatar
加入于:
帖子: 12
声望: 0

johnchenme wrote:

xiaohe wrote:

这个问题已经修复了,可以去github上拉取最新的dev分支代码
多谢解答,请问拉取哪个分支代码? 我更新了okexf_gateway.py的代码仍然报错
更新了dev分支的okexf_gateway.py 代码,但还是报错,是否要更新其他文件的代码呢

Member
avatar
加入于:
帖子: 2013
声望: 133

能贴一下报错截图,订阅品种和修改后接口的on_depth函数的代码吗?

Member
avatar
加入于:
帖子: 12
声望: 0

johnchenme wrote:

johnchenme wrote:

xiaohe wrote:

这个问题已经修复了,可以去github上拉取最新的dev分支代码
多谢解答,请问拉取哪个分支代码? 我更新了okexf_gateway.py的代码仍然报错
更新了dev分支的okexf_gateway.py 代码,但还是报错,是否要更新其他文件的代码呢

  1. 这是运行中的状态,无法获取盘口信息

description

2.报错的日志

description

  1. okexf_gateway.py中on_depth函数的代码

     def on_depth(self, d):
         """"""
         symbol = d["instrument_id"]
         tick = self.ticks.get(symbol, None)
         if not tick:
             return
    
         bids = d["bids"]
         asks = d["asks"]
         for n in range(min(5, len(bids))):
             price, volume, _, _ = bids[n]
             tick.__setattr__("bid_price_%s" % (n + 1), float(price))
             tick.__setattr__("bid_volume_%s" % (n + 1), int(volume))
    
         for n in range(min(5, len(asks))):
             price, volume, _, _ = asks[n]
             tick.__setattr__("ask_price_%s" % (n + 1), float(price))
             tick.__setattr__("ask_volume_%s" % (n + 1), int(volume))
    
         tick.datetime = utc_to_local(d["timestamp"])
         self.gateway.on_tick(copy(tick))
Member
avatar
加入于:
帖子: 2013
声望: 133

BTC-USDT是要通过okex接口订阅的,
可以在okexf接口订阅你图中的BTC-USD-210326,应该不会报错的
订阅前请在”查询合约“处输入你要订阅的合约,看看该接口是否提供,再进行订阅

Member
avatar
加入于:
帖子: 12
声望: 0

johnchenme wrote:

johnchenme wrote:

johnchenme wrote:

xiaohe wrote:

这个问题已经修复了,可以去github上拉取最新的dev分支代码
多谢解答,请问拉取哪个分支代码? 我更新了okexf_gateway.py的代码仍然报错
更新了dev分支的okexf_gateway.py 代码,但还是报错,是否要更新其他文件的代码呢

  1. 这是运行中的状态,无法获取盘口信息

description

2.报错的日志

description

  1. okexf_gateway.py中on_depth函数的代码

     def on_depth(self, d):
         """"""
         symbol = d["instrument_id"]
         tick = self.ticks.get(symbol, None)
         if not tick:
             return
    
         bids = d["bids"]
         asks = d["asks"]
         for n in range(min(5, len(bids))):
             price, volume, _, _ = bids[n]
             tick.__setattr__("bid_price_%s" % (n + 1), float(price))
             tick.__setattr__("bid_volume_%s" % (n + 1), int(volume))
    
         for n in range(min(5, len(asks))):
             price, volume, _, _ = asks[n]
             tick.__setattr__("ask_price_%s" % (n + 1), float(price))
             tick.__setattr__("ask_volume_%s" % (n + 1), int(volume))
    
         tick.datetime = utc_to_local(d["timestamp"])
         self.gateway.on_tick(copy(tick))

    查询合约处,接口提供!
    description

且已经设置更新了OKEX,OKEXF所有的gateway文件,依然报错

Member
avatar
加入于:
帖子: 2013
声望: 133

那就请打印一下on_depth函数中的d自行排查了,报这个错是因为传进来的bids/asks的数组有四个值,而接收的只有三个变量。很明显你贴的代码接收的有四个变量,那应该就不会报你贴的图上接收的时候期望有三个变量的错。
我看你图上交易接口选的paper_account,我交易接口选择了okexf和paper_account都没有报这个错,还是请自行排查吧

description

description

Member
avatar
加入于:
帖子: 3
声望: 0

兄弟你这个问题解决了吗?我的也有这个错误 vnpy2.1.8

Member
avatar
加入于:
帖子: 2013
声望: 133

请升级至最新版本再试试看

© 2015-2019 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号-3

沪公网安备 31011502017034号