pd.DataFrame上的PyKrakenAPI密钥错误(res['result'][pair])

2024-09-30 16:21:12 发布

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

这个问题在pykrakenapi版本0.1.8中存在,但在0.1.9中得到了修复

当将Kraken的REST API与pykrakenapi一起使用时,一些交易对(例如非常流行的XBTUSD)会产生一个KeyError,即使该对exists in Kraken's Asset Pair endpoint

例如,下面的代码

import krakenex
from pykrakenapi import KrakenAPI

timestamp = 1546300800000000000
pair = 'XBTUSD'

trades = k.get_recent_trades(pair=pair, since=timestamp, ascending=True)

导致以下错误:

File "C:\Users\TimStack\PycharmProjects\Kraken\lib\site-packages\pykrakenapi\pykrakenapi.py", line 704, in get_recent_trades
trades = pd.DataFrame(res['result'][pair])
KeyError: 'XBTUSD'

XBTUSD对确实出现在AssetPairs端点中,但是: enter image description here


Tags: inimport版本restapiget交易trades
1条回答
网友
1楼 · 发布于 2024-09-30 16:21:12

这一问题是由于Kraken对交易对使用了不同的名称。在XBTUSD的情况下,这是XXBTZUSD。这可以如下所示:

>>> trades = api.query_public("Trades", {'pair': 'XBTUSD', 'since': 1546300800000000000, 'ascending': True})
>>> print(trades)
{'error': [], 'result': {'XXBTZUSD': [['3690.90000', '0.00400000', 1546300800.4732, 's', 'l', ''], ...

在被调用的pykrakenapi.py函数中构造数据帧时会产生错误:

def get_recent_trades(self, pair, since=None, ascending=False):
    ...
    ...
    # create dataframe
    trades = pd.DataFrame(res['result'][pair])
    ...

通过将pair的值更改为正确的键,可以解决此问题:

def get_recent_trades(self, pair, since=None, ascending=False):
    ...
    ...
    # create dataframe
    pair = list(res['result'].keys())[0]
    trades = pd.DataFrame(res['result'][pair])
    ...

其中list(res['result'].keys())[0]等于result键下字典的第一个键

相关问题 更多 >