0

这个问题存在于 pykrakenapi 版本 0.1.8 中,但在 0.1.9 中已修复

当将 Kraken 的 REST API 与 一起使用时pykrakenapi,一些交易对(例如非常流行的XBTUSD)会产生 KeyError,即使该对存在于 Kraken 的资产对端点中。

例如下面的代码

import krakenex
from pykrakenapi import KrakenAPI

timestamp = 1546300800000000000
pair = 'XBTUSD'

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

导致以下错误:

文件“C:\Users\TimStack\PycharmProjects\Kraken\lib\site-packages\pykrakenapi\pykrakenapi.py”,第 704 行,在 get_recent_trades
trades = pd.DataFrame(res['result'][pair])
KeyError: ' XBTUSD'

XBTUSD 对确实出现在AssetPairs端点中,但是: 在此处输入图像描述

4

1 回答 1

0

此问题是 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])
    ...

wherelist(res['result'].keys())[0]等于该键下字典的第一个result键。

于 2020-08-24T19:33:58.123 回答